Repository: AlecStrong/sql-psi (kotlin)

Issue:
Unable to set PRAGMA locking_mode = EXCLUSIVE;
Dialect: SQLite

failing sql:

```sql
PRAGMA locking_mode = EXCLUSIVE;
```

Hello!

I'd like to lock transactions temporarily on a SQLite database managed by SqlDelight in order to copy the database file for export without risking any corruption because of an ongoing transaction.

To do so, I want to have a function to lock it that would execute these SQL statements:
```sql
PRAGMA locking_mode = EXCLUSIVE;
BEGIN EXCLUSIVE;
```

and a function to unlock it that would execute these  SQL statements:
```sql
COMMIT;
PRAGMA locking_mode = NORMAL;
```

Note that `PRAGMA locking_mode = NORMAL;` is recognized. Only `PRAGMA locking_mode = EXCLUSIVE;` is not, where I get the following error message: `<pragma value real> expected, got 'EXCLUSIVE'`.

This limitation is unfortunate, because SqlDelight hides the database, so you need to first pave a way to be able to execute these SQL statements, and once per platform since there's no common API for that, and each platform driver comes with its own complexities.

Thanks for considering, and regardless, have a great day!

Pull request:
Closes https://github.com/AlecStrong/sql-psi/issues/274

Patch:
diff --git a/core/src/main/kotlin/com/alecstrong/sql/psi/core/sql.bnf b/core/src/main/kotlin/com/alecstrong/sql/psi/core/sql.bnf
index 9e426b69..4a9d3739 100644
--- a/core/src/main/kotlin/com/alecstrong/sql/psi/core/sql.bnf
+++ b/core/src/main/kotlin/com/alecstrong/sql/psi/core/sql.bnf
@@ -310,7 +310,8 @@ pragma_stmt ::= PRAGMA [ database_name '.' ] pragma_name [ '=' pragma_value | '(
 }
 pragma_value ::= ( signed_number
                  | identifier
-                 | string_literal )
+                 | string_literal
+                 | EXCLUSIVE )
 reindex_stmt ::= REINDEX [ collation_name | [ database_name '.' ] ( table_name | index_name ) ] {
   pin = 1
 }


Test patch:
diff --git a/test-fixtures/src/main/resources/fixtures/pragmas/Test.s b/test-fixtures/src/main/resources/fixtures/pragmas/Test.s
new file mode 100644
index 00000000..9ffabd97
--- /dev/null
+++ b/test-fixtures/src/main/resources/fixtures/pragmas/Test.s
@@ -0,0 +1,1 @@
+PRAGMA locking_mode = EXCLUSIVE;
\ No newline at end of file