diff --git a/testing/pragma.test b/testing/pragma.test index ff42424bf..98c34265f 100755 --- a/testing/pragma.test +++ b/testing/pragma.test @@ -169,3 +169,35 @@ do_execsql_test pragma-function-sql-injection { SELECT * FROM pragma_table_info('sqlite_schema'';CREATE TABLE foo(c0);SELECT ''bar'); SELECT * FROM pragma_table_info('foo'); } {} + +do_execsql_test_on_specific_db ":memory:" pragma-page-size-default { + PRAGMA page_size +} {4096} + +do_execsql_test_on_specific_db ":memory:" pragma-page-size-set { + PRAGMA page_size=1024; + PRAGMA page_size +} {1024} + +# pragma page_size=xxx doesn't change the page size of an initialized database. +do_execsql_test_on_specific_db ":memory:" pragma-page-size-set-initialized-db { + CREATE TABLE "foo bar"(c0); + + PRAGMA page_size=1024; + PRAGMA page_size +} {4096} + +# pragma page_size=xxx changes the page size of an uninitialized database and persists the change. +set test_pragma_page_size_db "testing/testing_pragma_page_size.db" +# set user_version to trigger database initialization. +do_execsql_test_on_specific_db $test_pragma_page_size_db pragma-page-size-set-initialized-db-1 { + PRAGMA page_size=1024; + PRAGMA user_version=1; + PRAGMA page_size +} {1024} + +do_execsql_test_on_specific_db $test_pragma_page_size_db pragma-page-size-set-uninitialized-db-2 { + PRAGMA page_size +} {1024} +catch {file delete -force $test_pragma_page_size_db} +catch {file delete -force "${test_pragma_page_size_db}-wal"}