From 73a8a8ec2b52c48df87f92fd6463945b2950a95d Mon Sep 17 00:00:00 2001 From: Vincent Rischmann Date: Sun, 8 Dec 2024 12:35:39 +0100 Subject: remove the fuzz directory since it's not used anymore --- fuzz/LICENSE.apache2 | 201 ----------------------------- fuzz/README.md | 56 -------- fuzz/inputs/empty_string_crash | Bin 35 -> 0 bytes fuzz/inputs/schema.sql | 1 - fuzz/main.zig | 75 ----------- fuzz/sql.dict | 285 ----------------------------------------- 6 files changed, 618 deletions(-) delete mode 100644 fuzz/LICENSE.apache2 delete mode 100644 fuzz/README.md delete mode 100644 fuzz/inputs/empty_string_crash delete mode 100644 fuzz/inputs/schema.sql delete mode 100644 fuzz/main.zig delete mode 100644 fuzz/sql.dict (limited to 'fuzz') diff --git a/fuzz/LICENSE.apache2 b/fuzz/LICENSE.apache2 deleted file mode 100644 index 8dada3e..0000000 --- a/fuzz/LICENSE.apache2 +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/fuzz/README.md b/fuzz/README.md deleted file mode 100644 index 53f4b93..0000000 --- a/fuzz/README.md +++ /dev/null @@ -1,56 +0,0 @@ -# fuzz testing - -This repository contains a binary used for fuzz testing. - -# Acknowledgments - -The fuzz setup with AFL++ comes from [Ryan Liptak's](https://www.ryanliptak.com/blog/fuzzing-zig-code/) blog post. See [this example repo](https://github.com/squeek502/zig-fuzzing-example) too. - -# Prerequisites - -To build the fuzz binary we need the `afl-clang-lto` binary in the system path. -The recommended way to get that is to [install AFL++](https://github.com/AFLplusplus/AFLplusplus/blob/stable/docs/INSTALL.md). - -If you don't want to install it system-wide you can also do this instead: -``` -make PREFIX=$HOME/local install -``` -then make sure that `$HOME/local/bin` is in your system path. - -If you installed LLVM from source as described in the [Zig wiki](https://github.com/ziglang/zig/wiki/How-to-build-LLVM,-libclang,-and-liblld-from-source#posix), do this instead: -``` -LLVM_CONFIG=$HOME/local/llvm15-release/bin/llvm-config make PREFIX=$HOME/local install -``` - -# Build and run - -Once AFL++ is installed, build the fuzz binary: -``` -$ zig build fuzz -``` - -Finally to run the fuzzer do this: -``` -$ afl-fuzz -i - -o fuzz/outputs -- ./zig-out/bin/fuzz -``` - -Note that `afl-fuzz` might complain about core dumps being sent to an external utility (usually systemd). - -You'll have to do this as root: -``` -# echo core > /proc/sys/kernel/core_pattern -``` - -`afl-fuzz` might also complain about the scaling governor, setting `AFL_SKIP_CPUFREQ` as suggested is good enough: -``` -$ AFL_SKIP_CPUFREQ=1 afl-fuzz -i - -o fuzz/outputs -- ./zig-out/bin/fuzz -``` - -# Debugging a crash - -If `afl-fuzz` finds a crash it will be added to `fuzz/outputs/default/crashes.XYZ`. - -To debug the crash you can run the fuzz binary and giving it the content of the crash via stdin, for example: -``` -$ ./zig-out/bin/fuzz < 'fuzz/outputs/default/crashes.2021-12-31-12:43:12/id:000000,sig:06,src:000004,time:210548,execs:1011599,op:havoc,rep:2' -``` diff --git a/fuzz/inputs/empty_string_crash b/fuzz/inputs/empty_string_crash deleted file mode 100644 index b45e29b..0000000 Binary files a/fuzz/inputs/empty_string_crash and /dev/null differ diff --git a/fuzz/inputs/schema.sql b/fuzz/inputs/schema.sql deleted file mode 100644 index 85a5643..0000000 --- a/fuzz/inputs/schema.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE TABLE foobar(user integer primary key, name text, data blob); diff --git a/fuzz/main.zig b/fuzz/main.zig deleted file mode 100644 index 496409c..0000000 --- a/fuzz/main.zig +++ /dev/null @@ -1,75 +0,0 @@ -const std = @import("std"); -const sqlite = @import("sqlite"); - -pub export fn main() callconv(.C) void { - zigMain() catch unreachable; -} - -pub fn zigMain() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; - defer std.debug.assert(gpa.deinit() == .ok); - const allocator = gpa.allocator(); - - // Read the data from stdin - const stdin = std.io.getStdIn(); - const data = try stdin.readToEndAlloc(allocator, std.math.maxInt(usize)); - defer allocator.free(data); - - var db = try sqlite.Db.init(.{ - .mode = .Memory, - .open_flags = .{ - .write = true, - .create = true, - }, - }); - defer db.deinit(); - - try db.exec("CREATE TABLE test(id integer primary key, name text, data blob)", .{}, .{}); - - db.execDynamic(data, .{}, .{}) catch |err| switch (err) { - error.SQLiteError => return, - error.ExecReturnedData => return, - else => return err, - }; - - db.execDynamic( - "INSERT INTO test(name, data) VALUES($name, $data)", - .{}, - .{ - .name = data, - .data = data, - }, - ) catch |err| switch (err) { - error.SQLiteError => return, - else => return err, - }; - - var stmt = db.prepareDynamic("SELECT name, data FROM test") catch |err| switch (err) { - error.SQLiteError => return, - else => return err, - }; - defer stmt.deinit(); - - var rows_arena = std.heap.ArenaAllocator.init(allocator); - defer rows_arena.deinit(); - - const row_opt = stmt.oneAlloc( - struct { - name: sqlite.Text, - data: sqlite.Blob, - }, - rows_arena.allocator(), - .{}, - .{}, - ) catch |err| switch (err) { - error.SQLiteError => return, - else => return err, - }; - - if (row_opt) |row| { - if (!std.mem.eql(u8, row.name.data, data)) return error.InvalidNameField; - if (!std.mem.eql(u8, row.data.data, data)) return error.InvalidDataField; - } else { - return error.NoRowsFound; - } -} diff --git a/fuzz/sql.dict b/fuzz/sql.dict deleted file mode 100644 index 7121062..0000000 --- a/fuzz/sql.dict +++ /dev/null @@ -1,285 +0,0 @@ -# Taken from https://github.com/google/oss-fuzz/blob/f64134b0b3c2b27a4283e55581d41d83d3c3a64f/projects/sqlite3/sql.dict -# This code is licensed under the Apache License 2.0, which you can find in the file LICENSE.apache2 -# This code is Copyright Google. -# -# AFL dictionary for SQL -# ---------------------- -# -# Modeled based on SQLite documentation, contains some number of SQLite -# extensions. Other dialects of SQL may benefit from customized dictionaries. -# -# If you append @1 to the file name when loading this dictionary, afl-fuzz -# will also additionally load a selection of pragma keywords that are very -# specific to SQLite (and are probably less interesting from the security -# standpoint, because they are usually not allowed in non-privileged -# contexts). -# -# Created by Michal Zalewski -# - -function_abs=" abs(1)" -function_avg=" avg(1)" -function_changes=" changes()" -function_char=" char(1)" -function_coalesce=" coalesce(1,1)" -function_count=" count(1)" -function_date=" date(1,1,1)" -function_datetime=" datetime(1,1,1)" -function_decimal=" decimal(1,1)" -function_glob=" glob(1,1)" -function_group_concat=" group_concat(1,1)" -function_hex=" hex(1)" -function_ifnull=" ifnull(1,1)" -function_instr=" instr(1,1)" -function_julianday=" julianday(1,1,1)" -function_last_insert_rowid=" last_insert_rowid()" -function_length=" length(1)" -function_like=" like(1,1)" -function_likelihood=" likelihood(1,1)" -function_likely=" likely(1)" -function_load_extension=" load_extension(1,1)" -function_lower=" lower(1)" -function_ltrim=" ltrim(1,1)" -function_max=" max(1,1)" -function_min=" min(1,1)" -function_nullif=" nullif(1,1)" -function_printf=" printf(1,1)" -function_quote=" quote(1)" -function_random=" random()" -function_randomblob=" randomblob(1)" -function_replace=" replace(1,1,1)" -function_round=" round(1,1)" -function_rtrim=" rtrim(1,1)" -function_soundex=" soundex(1)" -function_sqlite_compileoption_get=" sqlite_compileoption_get(1)" -function_sqlite_compileoption_used=" sqlite_compileoption_used(1)" -function_sqlite_source_id=" sqlite_source_id()" -function_sqlite_version=" sqlite_version()" -function_strftime=" strftime(1,1,1,1)" -function_substr=" substr(1,1,1)" -function_sum=" sum(1)" -function_time=" time(1,1,1)" -function_total=" total(1)" -function_total_changes=" total_changes()" -function_trim=" trim(1,1)" -function_typeof=" typeof(1)" -function_unicode=" unicode(1)" -function_unlikely=" unlikely(1)" -function_upper=" upper(1)" -function_varchar=" varchar(1)" -function_zeroblob=" zeroblob(1)" - -keyword_ABORT="ABORT" -keyword_ACTION="ACTION" -keyword_ADD="ADD" -keyword_AFTER="AFTER" -keyword_ALL="ALL" -keyword_ALTER="ALTER" -keyword_ANALYZE="ANALYZE" -keyword_AND="AND" -keyword_AS="AS" -keyword_ASC="ASC" -keyword_ATTACH="ATTACH" -keyword_AUTOINCREMENT="AUTOINCREMENT" -keyword_BEFORE="BEFORE" -keyword_BEGIN="BEGIN" -keyword_BETWEEN="BETWEEN" -keyword_BY="BY" -keyword_CASCADE="CASCADE" -keyword_CASE="CASE" -keyword_CAST="CAST" -keyword_CHECK="CHECK" -keyword_COLLATE="COLLATE" -keyword_COLUMN="COLUMN" -keyword_COMMIT="COMMIT" -keyword_CONFLICT="CONFLICT" -keyword_CONSTRAINT="CONSTRAINT" -keyword_CREATE="CREATE" -keyword_CROSS="CROSS" -keyword_CURRENT_DATE="CURRENT_DATE" -keyword_CURRENT_TIME="CURRENT_TIME" -keyword_CURRENT_TIMESTAMP="CURRENT_TIMESTAMP" -keyword_DATABASE="DATABASE" -keyword_DEFAULT="DEFAULT" -keyword_DEFERRABLE="DEFERRABLE" -keyword_DEFERRED="DEFERRED" -keyword_DELETE="DELETE" -keyword_DESC="DESC" -keyword_DETACH="DETACH" -keyword_DISTINCT="DISTINCT" -keyword_DROP="DROP" -keyword_EACH="EACH" -keyword_ELSE="ELSE" -keyword_END="END" -keyword_ESCAPE="ESCAPE" -keyword_EXCEPT="EXCEPT" -keyword_EXCLUSIVE="EXCLUSIVE" -keyword_EXISTS="EXISTS" -keyword_EXPLAIN="EXPLAIN" -keyword_FAIL="FAIL" -keyword_FOR="FOR" -keyword_FOREIGN="FOREIGN" -keyword_FROM="FROM" -keyword_FULL="FULL" -keyword_GLOB="GLOB" -keyword_GROUP="GROUP" -keyword_HAVING="HAVING" -keyword_IF="IF" -keyword_IGNORE="IGNORE" -keyword_IMMEDIATE="IMMEDIATE" -keyword_IN="IN" -keyword_INDEX="INDEX" -keyword_INDEXED="INDEXED" -keyword_INITIALLY="INITIALLY" -keyword_INNER="INNER" -keyword_INSERT="INSERT" -keyword_INSTEAD="INSTEAD" -keyword_INTERSECT="INTERSECT" -keyword_INTO="INTO" -keyword_IS="IS" -keyword_ISNULL="ISNULL" -keyword_JOIN="JOIN" -keyword_KEY="KEY" -keyword_LEFT="LEFT" -keyword_LIKE="LIKE" -keyword_LIMIT="LIMIT" -keyword_MATCH="MATCH" -keyword_NATURAL="NATURAL" -keyword_NO="NO" -keyword_NOT="NOT" -keyword_NOTNULL="NOTNULL" -keyword_NULL="NULL" -keyword_OF="OF" -keyword_OFFSET="OFFSET" -keyword_ON="ON" -keyword_OR="OR" -keyword_ORDER="ORDER" -keyword_OUTER="OUTER" -keyword_PLAN="PLAN" -keyword_PRAGMA="PRAGMA" -keyword_PRIMARY="PRIMARY" -keyword_QUERY="QUERY" -keyword_RAISE="RAISE" -keyword_RECURSIVE="RECURSIVE" -keyword_REFERENCES="REFERENCES" -#keyword_REGEXP="REGEXP" -keyword_REINDEX="REINDEX" -keyword_RELEASE="RELEASE" -keyword_RENAME="RENAME" -keyword_REPLACE="REPLACE" -keyword_RESTRICT="RESTRICT" -keyword_RIGHT="RIGHT" -keyword_ROLLBACK="ROLLBACK" -keyword_ROW="ROW" -keyword_SAVEPOINT="SAVEPOINT" -keyword_SELECT="SELECT" -keyword_SET="SET" -keyword_TABLE="TABLE" -keyword_TEMP="TEMP" -keyword_TEMPORARY="TEMPORARY" -keyword_THEN="THEN" -keyword_TO="TO" -keyword_TRANSACTION="TRANSACTION" -keyword_TRIGGER="TRIGGER" -keyword_UNION="UNION" -keyword_UNIQUE="UNIQUE" -keyword_UPDATE="UPDATE" -keyword_USING="USING" -keyword_VACUUM="VACUUM" -keyword_VALUES="VALUES" -keyword_VIEW="VIEW" -keyword_VIRTUAL="VIRTUAL" -keyword_WHEN="WHEN" -keyword_WHERE="WHERE" -keyword_WITH="WITH" -keyword_WITHOUT="WITHOUT" - -operator_concat=" || " -operator_ebove_eq=" >=" - -snippet_1eq1=" 1=1" -snippet_at=" @1" -snippet_backticks=" `a`" -snippet_blob=" blob" -snippet_brackets=" [a]" -snippet_colon=" :1" -snippet_comment=" /* */" -snippet_date="2001-01-01" -snippet_dollar=" $1" -snippet_dotref=" a.b" -snippet_fmtY="%Y" -snippet_int=" int" -snippet_neg1=" -1" -snippet_pair=" a,b" -snippet_parentheses=" (1)" -snippet_plus2days="+2 days" -snippet_qmark=" ?1" -snippet_semicolon=" ;" -snippet_star=" *" -snippet_string_pair=" \"a\",\"b\"" - -string_dbl_q=" \"a\"" -string_escaped_q=" 'a''b'" -string_single_q=" 'a'" - -pragma_application_id@1=" application_id" -pragma_auto_vacuum@1=" auto_vacuum" -pragma_automatic_index@1=" automatic_index" -pragma_busy_timeout@1=" busy_timeout" -pragma_cache_size@1=" cache_size" -pragma_cache_spill@1=" cache_spill" -pragma_case_sensitive_like@1=" case_sensitive_like" -pragma_checkpoint_fullfsync@1=" checkpoint_fullfsync" -pragma_collation_list@1=" collation_list" -pragma_compile_options@1=" compile_options" -pragma_count_changes@1=" count_changes" -pragma_data_store_directory@1=" data_store_directory" -pragma_database_list@1=" database_list" -pragma_default_cache_size@1=" default_cache_size" -pragma_defer_foreign_keys@1=" defer_foreign_keys" -pragma_empty_result_callbacks@1=" empty_result_callbacks" -pragma_encoding@1=" encoding" -pragma_foreign_key_check@1=" foreign_key_check" -pragma_foreign_key_list@1=" foreign_key_list" -pragma_foreign_keys@1=" foreign_keys" -pragma_freelist_count@1=" freelist_count" -pragma_full_column_names@1=" full_column_names" -pragma_fullfsync@1=" fullfsync" -pragma_ignore_check_constraints@1=" ignore_check_constraints" -pragma_incremental_vacuum@1=" incremental_vacuum" -pragma_index_info@1=" index_info" -pragma_index_list@1=" index_list" -pragma_integrity_check@1=" integrity_check" -pragma_journal_mode@1=" journal_mode" -pragma_journal_size_limit@1=" journal_size_limit" -pragma_legacy_file_format@1=" legacy_file_format" -pragma_locking_mode@1=" locking_mode" -pragma_max_page_count@1=" max_page_count" -pragma_mmap_size@1=" mmap_size" -pragma_page_count@1=" page_count" -pragma_page_size@1=" page_size" -pragma_parser_trace@1=" parser_trace" -pragma_query_only@1=" query_only" -pragma_quick_check@1=" quick_check" -pragma_read_uncommitted@1=" read_uncommitted" -pragma_recursive_triggers@1=" recursive_triggers" -pragma_reverse_unordered_selects@1=" reverse_unordered_selects" -pragma_schema_version@1=" schema_version" -pragma_secure_delete@1=" secure_delete" -pragma_short_column_names@1=" short_column_names" -pragma_shrink_memory@1=" shrink_memory" -pragma_soft_heap_limit@1=" soft_heap_limit" -pragma_stats@1=" stats" -pragma_synchronous@1=" synchronous" -pragma_table_info@1=" table_info" -pragma_temp_store@1=" temp_store" -pragma_temp_store_directory@1=" temp_store_directory" -pragma_threads@1=" threads" -pragma_user_version@1=" user_version" -pragma_vdbe_addoptrace@1=" vdbe_addoptrace" -pragma_vdbe_debug@1=" vdbe_debug" -pragma_vdbe_listing@1=" vdbe_listing" -pragma_vdbe_trace@1=" vdbe_trace" -pragma_wal_autocheckpoint@1=" wal_autocheckpoint" -pragma_wal_checkpoint@1=" wal_checkpoint" -pragma_writable_schema@1=" writable_schema" -- cgit v1.2.3