Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f08a2986 authored by Lee Shombert's avatar Lee Shombert
Browse files

SQL prefixes should be case-insensitive

The new SQL prefix scanner failed to convert the collected prefix to
upper-case.  This meant that lower-case SQL commands were not
correctly categorized.  This has been fixed.

Additional unit tests have been added to test the scanner.

Test : atest
 * FrameworksCoreTests:android.database
 * CtsDatabaseTestCases

Flag: android.database.sqlite.simple_sql_comment_scanner
Bug: 329118560
Change-Id: Idc2980bcf4eb49a0a204ae0cb13748aa3027ede5
parent 344f94d0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1671,7 +1671,7 @@ public class DatabaseUtils {
            return null;
        }
        final int eos = Math.min(n+3, end);
        return sql.substring(n, eos);
        return sql.substring(n, eos).toUpperCase(Locale.ROOT);
    }

    /**
+6 −0
Original line number Diff line number Diff line
@@ -90,6 +90,12 @@ public class DatabaseUtilsTest {
        assertEquals(ddl, getSqlStatementType("ALTER TABLE t1 ADD COLUMN j int"));
        assertEquals(ddl, getSqlStatementType("CREATE TABLE t1 (i int)"));

        // Verify that the answers are case-insensitive
        assertEquals(sel, getSqlStatementType("select"));
        assertEquals(sel, getSqlStatementType("sElect"));
        assertEquals(sel, getSqlStatementType("sELECT"));
        assertEquals(sel, getSqlStatementType("seLECT"));

        // Short statements, leading comments, and WITH are decoded to "other" in the public API.
        final int othr = STATEMENT_OTHER;
        assertEquals(othr, getSqlStatementType("SE"));