Skip to content
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/70insert.js
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ yy.Insert.prototype.compile = function (databaseid) {
return statement;
} else {
// console.log(224,table.defaultfns);
var defaultfns = 'return alasql.utils.extend(r,{' + table.defaultfns + '})';
var defaultfns = 'return alasql.utils.extend({' + table.defaultfns + '},r)';
var defaultfn = new Function('r,db,params,alasql', defaultfns);
var insertfn = function (db, params, alasql) {
var res = selectfn(params).data;
Expand Down
68 changes: 68 additions & 0 deletions test/test_insert_from_param.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
if (typeof exports === 'object') {
var assert = require('assert');
var alasql = require('..');
}

describe('Test INSERT FROM parameter issue', function () {
it('INSERT INTO table SELECT * FROM ? with data array', () => {
// Create a new database like in the issue
var inmemDB = new alasql.Database('test_insert_db');

// Create table
var query =
"CREATE TABLE IF NOT EXISTS [BCPartners] (RecordNum INTEGER PRIMARY KEY AUTOINCREMENT, [TABLE_NAME] TEXT DEFAULT '', [BC] TEXT DEFAULT '')";
inmemDB.exec(query);

// Prepare test data
var data = [
{TABLE_NAME: 'Table1', BC: 'BC1'},
{TABLE_NAME: 'Table2', BC: 'BC2'},
{TABLE_NAME: 'Table3', BC: 'BC3'},
];

// Insert data
inmemDB.exec('INSERT INTO [BCPartners] SELECT * FROM ?', [data]);

// Verify data was inserted correctly
var result = inmemDB.exec('SELECT * FROM [BCPartners]');

var expected = [
{RecordNum: 1, TABLE_NAME: 'Table1', BC: 'BC1'},
{RecordNum: 2, TABLE_NAME: 'Table2', BC: 'BC2'},
{RecordNum: 3, TABLE_NAME: 'Table3', BC: 'BC3'},
];
assert.deepEqual(result, expected);

// Clean up
alasql('DROP DATABASE test_insert_db');
});

it('INSERT INTO table SELECT * FROM ? using default database', () => {
// Test with default database (alasql)
alasql('DROP TABLE IF EXISTS BCPartners');
alasql(
"CREATE TABLE BCPartners (RecordNum INTEGER PRIMARY KEY AUTOINCREMENT, TABLE_NAME TEXT DEFAULT '', BC TEXT DEFAULT '')"
);

// Prepare test data
var data = [
{TABLE_NAME: 'Table1', BC: 'BC1'},
{TABLE_NAME: 'Table2', BC: 'BC2'},
];

// Insert data
alasql('INSERT INTO BCPartners SELECT * FROM ?', [data]);

// Verify data was inserted correctly
var result = alasql('SELECT * FROM BCPartners');

var expected = [
{RecordNum: 1, TABLE_NAME: 'Table1', BC: 'BC1'},
{RecordNum: 2, TABLE_NAME: 'Table2', BC: 'BC2'},
];
assert.deepEqual(result, expected);

// Clean up
alasql('DROP TABLE BCPartners');
});
});
Loading