From ea72013970b5e83c1976135fe15af18c98dc25ed Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sat, 20 Jan 2024 22:55:23 +0000 Subject: [PATCH 1/4] add a test for #561 --- test/test_long_sql_statement.js | 35 +++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 test/test_long_sql_statement.js diff --git a/test/test_long_sql_statement.js b/test/test_long_sql_statement.js new file mode 100644 index 00000000..65d13fff --- /dev/null +++ b/test/test_long_sql_statement.js @@ -0,0 +1,35 @@ +// test for https://github.com/sql-js/sql.js/issues/561 +exports.test = function (sql, assert) { + // Create a database + var db = new sql.Database(); + var len = 70000; + var many_a = ""; + for (var i = 0; i < len; i++) many_a += 'a'; + + console.log('xxx'); + var res = db.exec("select length('" + many_a + "') as len"); + var expectedResult = [ + { + columns: ['len'], + values: [ + [len] + ] + } + ]; + assert.deepEqual(res, expectedResult, "length of long string"); +}; + +if (module == require.main) { + const target_file = process.argv[2]; + const sql_loader = require('./load_sql_lib'); + sql_loader(target_file).then((sql) => { + require('test').run({ + 'test long sql string (issue 561)': function (assert) { + exports.test(sql, assert); + } + }); + }).catch((e) => { + console.error(e); + assert.fail(e); + }); +} From 52189d4a654b1d3cd89667f00b8cb00a9be29631 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sat, 20 Jan 2024 22:56:19 +0000 Subject: [PATCH 2/4] fix memory issue with long sql strings fixes #561 thanks @kripken for the fix: https://github.com/sql-js/sql.js/issues/561#issuecomment-1902243484 --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index d487e496..450d8e6b 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,8 @@ EMFLAGS_ASM_MEMORY_GROWTH = \ EMFLAGS_WASM = \ -s WASM=1 \ - -s ALLOW_MEMORY_GROWTH=1 + -s ALLOW_MEMORY_GROWTH=1 \ + -s STACK_SIZE=5MB EMFLAGS_OPTIMIZED= \ -Oz \ @@ -56,7 +57,7 @@ EMFLAGS_OPTIMIZED= \ --closure 1 EMFLAGS_DEBUG = \ - -s ASSERTIONS=1 \ + -s ASSERTIONS=2 \ -O1 BITCODE_FILES = out/sqlite3.bc out/extension-functions.bc From 876614b9870bace4c7ab0b518b06196d0d4bd7dd Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sat, 20 Jan 2024 22:58:46 +0000 Subject: [PATCH 3/4] include the new stack size on all targets --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 450d8e6b..ae303266 100644 --- a/Makefile +++ b/Makefile @@ -37,7 +37,8 @@ EMFLAGS = \ -s EXPORTED_RUNTIME_METHODS=@src/exported_runtime_methods.json \ -s SINGLE_FILE=0 \ -s NODEJS_CATCH_EXIT=0 \ - -s NODEJS_CATCH_REJECTION=0 + -s NODEJS_CATCH_REJECTION=0 \ + -s STACK_SIZE=5MB EMFLAGS_ASM = \ -s WASM=0 @@ -48,8 +49,7 @@ EMFLAGS_ASM_MEMORY_GROWTH = \ EMFLAGS_WASM = \ -s WASM=1 \ - -s ALLOW_MEMORY_GROWTH=1 \ - -s STACK_SIZE=5MB + -s ALLOW_MEMORY_GROWTH=1 EMFLAGS_OPTIMIZED= \ -Oz \ From aa12a6e8343ffe3929c9f5e09be7484d92de8c33 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sat, 20 Jan 2024 23:00:08 +0000 Subject: [PATCH 4/4] remove debig log --- test/test_long_sql_statement.js | 1 - 1 file changed, 1 deletion(-) diff --git a/test/test_long_sql_statement.js b/test/test_long_sql_statement.js index 65d13fff..3005c087 100644 --- a/test/test_long_sql_statement.js +++ b/test/test_long_sql_statement.js @@ -6,7 +6,6 @@ exports.test = function (sql, assert) { var many_a = ""; for (var i = 0; i < len; i++) many_a += 'a'; - console.log('xxx'); var res = db.exec("select length('" + many_a + "') as len"); var expectedResult = [ {