From b1e70b289bb9a2dff4ef9674171e92476100bddc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 19 Nov 2025 06:07:51 +0000 Subject: [PATCH 1/4] Initial plan From 8bb9409d3f2da1e6a528e16cddcd4e86e9959560 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 19 Nov 2025 06:12:03 +0000 Subject: [PATCH 2/4] Add test case for CREATE INDEX with qualified table names Co-authored-by: mathiasrw <1063454+mathiasrw@users.noreply.github.com> --- test/test2184.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 test/test2184.js diff --git a/test/test2184.js b/test/test2184.js new file mode 100644 index 0000000000..da01e2e33f --- /dev/null +++ b/test/test2184.js @@ -0,0 +1,44 @@ +if (typeof exports === 'object') { + var assert = require('assert'); + var alasql = require('..'); + // var DOMStorage = require("dom-storage"); + // global.localStorage = new DOMStorage("./test390.json", { strict: false, ws: '' }); +} + +/* + This tests qualified table names in CREATE INDEX +*/ + +describe('Test 2184 CREATE INDEX with qualified table name', function () { + it('1. CREATE DATABASE', function (done) { + alasql('CREATE DATABASE test403'); + done(); + }); + + it('2. Create table and index before insert with qualified name (no USE)', function (done) { + alasql('CREATE TABLE test403.one (a INT)'); + alasql('CREATE INDEX xone ON test403.one (a)'); + alasql('INSERT INTO test403.one (a) VALUES (100), (200), (300)'); + done(); + }); + + it('3. Create table and index after insert with qualified name (no USE)', function (done) { + alasql('CREATE TABLE test403.two (a INT)'); + alasql('INSERT INTO test403.two (a) VALUES (100), (200), (300)'); + alasql('CREATE INDEX xtwo ON test403.two (a)'); + done(); + }); + + it('4. REINDEX from default database', function (done) { + var res = alasql('REINDEX xone'); + assert(res == 1); + var res = alasql('REINDEX xtwo'); + assert(res == 1); + done(); + }); + + it('99. DROP DATABASE', function (done) { + alasql('DROP DATABASE test403'); + done(); + }); +}); From 7196a0de66d1ce2813242d0c0577438f4715344a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 19 Nov 2025 06:13:41 +0000 Subject: [PATCH 3/4] Fix CreateIndex to support qualified table names Co-authored-by: mathiasrw <1063454+mathiasrw@users.noreply.github.com> --- src/65createindex.js | 2 +- test/test2184.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/65createindex.js b/src/65createindex.js index c3f7772d6b..4088d021eb 100755 --- a/src/65createindex.js +++ b/src/65createindex.js @@ -20,7 +20,7 @@ yy.CreateIndex.prototype.toString = function () { // CREATE TABLE yy.CreateIndex.prototype.execute = function (databaseid, params, cb) { // var self = this; - var db = alasql.databases[databaseid]; + var db = alasql.databases[this.table.databaseid || databaseid]; var tableid = this.table.tableid; var table = db.tables[tableid]; var indexid = this.indexid; diff --git a/test/test2184.js b/test/test2184.js index da01e2e33f..7f38e3b9e6 100644 --- a/test/test2184.js +++ b/test/test2184.js @@ -29,7 +29,8 @@ describe('Test 2184 CREATE INDEX with qualified table name', function () { done(); }); - it('4. REINDEX from default database', function (done) { + it('4. REINDEX from test403 database', function (done) { + alasql('USE test403'); var res = alasql('REINDEX xone'); assert(res == 1); var res = alasql('REINDEX xtwo'); From 6263aa49d3c65a18991f54959731ad62a15e4310 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 19 Nov 2025 06:19:43 +0000 Subject: [PATCH 4/4] Add unique index test to test2184 Co-authored-by: mathiasrw <1063454+mathiasrw@users.noreply.github.com> --- test/test2184.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/test/test2184.js b/test/test2184.js index 7f38e3b9e6..3b942250fc 100644 --- a/test/test2184.js +++ b/test/test2184.js @@ -29,7 +29,14 @@ describe('Test 2184 CREATE INDEX with qualified table name', function () { done(); }); - it('4. REINDEX from test403 database', function (done) { + it('4. Create unique index with qualified name (before insert)', function (done) { + alasql('CREATE TABLE test403.three (a INT)'); + alasql('CREATE UNIQUE INDEX xthree ON test403.three (a)'); + alasql('INSERT INTO test403.three (a) VALUES (100), (200), (300)'); + done(); + }); + + it('5. REINDEX from test403 database', function (done) { alasql('USE test403'); var res = alasql('REINDEX xone'); assert(res == 1);