mirror of
https://github.com/aljazceru/turso.git
synced 2026-01-07 10:14:21 +01:00
Merge 'Don't allow duplicate columns and get column type as passed ' from Pavan Nambi
fixes #3231 ```zsh ❯ sqlite3 SQLite version 3.50.4 2025-07-30 19:33:53 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite> CREATE TABLE t1 (a); ALTER TABLE t1 ADD COLUMN a; Parse error: duplicate column name: a sqlite> ALTER TABLE t1 ADD COLUMN name varchar(255); SELECT sql FROM sqlite_schema WHERE name = 't1'; CREATE TABLE t1 (a, name varchar(255)) sqlite> ``` ```zsh turso> turso> CREATE TABLE t1 (a); ALTER TABLE t1 ADD COLUMN a; x Parse error: duplicate column name: a turso> ALTER TABLE t1 ADD COLUMN name varchar(255); SELECT sql FROM sqlite_schema WHERE name = 't1'; ┌─────────────────────────────────────────┐ │ sql │ ├─────────────────────────────────────────┤ │ CREATE TABLE t1 (a, name varchar (255)) │ └─────────────────────────────────────────┘ turso> ``` Reviewed-by: Pere Diaz Bou <pere-altea@homail.com> Closes #3249
This commit is contained in:
@@ -207,6 +207,13 @@ pub fn translate_alter_table(
|
||||
}
|
||||
}
|
||||
|
||||
let new_column_name = column.name.as_ref().unwrap();
|
||||
if btree.get_column(new_column_name).is_some() {
|
||||
return Err(LimboError::ParseError(
|
||||
"duplicate column name: ".to_string() + new_column_name,
|
||||
));
|
||||
}
|
||||
|
||||
// TODO: All quoted ids will be quoted with `[]`, we should store some info from the parsed AST
|
||||
btree.columns.push(column.clone());
|
||||
|
||||
|
||||
@@ -133,6 +133,17 @@ do_execsql_test_in_memory_any_error fail-alter-table-drop-unique-column-constrai
|
||||
ALTER TABLE t DROP b;
|
||||
}
|
||||
|
||||
|
||||
# refer https://github.com/tursodatabase/turso/issues/3231
|
||||
do_execsql_test_in_memory_any_error fail-alter-table-add-duplicate-column {
|
||||
CREATE TABLE t1 (a);
|
||||
ALTER TABLE t1 ADD COLUMN a;
|
||||
}
|
||||
do_execsql_test_in_memory_any_error fail-alter-table-add-duplicate-column-case-insensitive {
|
||||
CREATE TABLE t1 (a);
|
||||
ALTER TABLE t1 ADD COLUMN A;
|
||||
}
|
||||
|
||||
do_execsql_test_in_memory_any_error fail-alter-table-drop-primary-key-column {
|
||||
CREATE TABLE t (a PRIMARY KEY, b);
|
||||
ALTER TABLE t DROP a;
|
||||
|
||||
Reference in New Issue
Block a user