alasql: DELETE FROM table WHERE error
Using FileStorage and WebWorker. Running the query “DELETE FROM table WHERE column = ‘value’” I get the error:
Uncaught TypeError: Cannot read property 'length' of null(…)
statement @ alasql.js:12750
alasql.dexec @ alasql.js:4249
alasql.exec @ alasql.js:4231
alasql @ alasql.js:120
(anonymous function) @ VM197:2
InjectedScript._evaluateOn @ VM144:904
InjectedScript._evaluateAndWrap @ VM144:837
InjectedScript.evaluate @ VM144:693
Subtract 2 from any line after 12747 (I had 2 console.log() for testing).
Code to replicate:
alasql("CREATE TABLE IF NOT EXISTS `preferences` (`id` int(11) NOT NULL, `tab` varchar(45) DEFAULT NULL, `tab_id` int(11))", [], function() {
alasql("INSERT INTO `preferences` (`id`, `tab`, `tab_id`) VALUES (1, 'where', 1), (2, 'when', 8)", [], function() {
alasql('DELETE FROM preferences WHERE tab = "where"')
});
});
According to console logs, console.log(table); has no object of data console.log(table.data); returns undefined.
About this issue
- Original URL
- State: closed
- Created 8 years ago
- Reactions: 1
- Comments: 22 (21 by maintainers)
The table was not populated correctly in the case of filestorage- the attached patch fixes it
load_table_correctly_in_case_of_filestorage.patch.txt
I will run through the code some more today. so far, I have found that when using filestorage (I don’t know if this is the same in other engines), but the data is not stored in the db.tables[tableid] object.
I believe that the db is not being read correctly, so db.tables[tableid].data is undefined (where alasql is checking for the item to delete)