diff --git a/Makefile b/Makefile index d487e496..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 @@ -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 diff --git a/test/test_long_sql_statement.js b/test/test_long_sql_statement.js new file mode 100644 index 00000000..3005c087 --- /dev/null +++ b/test/test_long_sql_statement.js @@ -0,0 +1,34 @@ +// 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'; + + 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); + }); +}