mirror of
https://github.com/aljazceru/turso.git
synced 2026-01-04 17:04:18 +01:00
@@ -8,7 +8,7 @@ use turso_parser::ast::{
|
||||
use crate::error::{
|
||||
SQLITE_CONSTRAINT_NOTNULL, SQLITE_CONSTRAINT_PRIMARYKEY, SQLITE_CONSTRAINT_UNIQUE,
|
||||
};
|
||||
use crate::schema::{self, Index, Table};
|
||||
use crate::schema::{self, Affinity, Index, Table};
|
||||
use crate::translate::emitter::{
|
||||
emit_cdc_insns, emit_cdc_patch_record, prepare_cdc_if_necessary, OperationMode,
|
||||
};
|
||||
@@ -322,6 +322,12 @@ pub fn translate_insert(
|
||||
.iter()
|
||||
.map(|col_name| {
|
||||
let column_name = normalize_ident(col_name.as_str());
|
||||
if ROWID_STRS
|
||||
.iter()
|
||||
.any(|s| s.eq_ignore_ascii_case(&column_name))
|
||||
{
|
||||
return Affinity::Integer.aff_mask();
|
||||
}
|
||||
table
|
||||
.get_column_by_name(&column_name)
|
||||
.unwrap()
|
||||
|
||||
@@ -658,3 +658,24 @@ do_execsql_test_on_specific_db {:memory:} insert-select-nested-subquery {
|
||||
SELECT * FROM t;
|
||||
} {1
|
||||
1}
|
||||
|
||||
# Regression test for: https://github.com/tursodatabase/turso/issues/3567 (used to panic, now returns unique constraint error)
|
||||
do_execsql_test_in_memory_any_error insert-rowid-select-rowid {
|
||||
CREATE TABLE t(a);
|
||||
INSERT INTO t VALUES (1);
|
||||
INSERT INTO t(rowid) SELECT rowid FROM t;
|
||||
}
|
||||
|
||||
do_execsql_test_in_memory_any_error insert-rowidalias-select-rowid {
|
||||
CREATE TABLE t(a INTEGER PRIMARY KEY);
|
||||
INSERT INTO t VALUES (1);
|
||||
INSERT INTO t(a) SELECT rowid FROM t;
|
||||
}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} insert-rowid-select-rowid-success {
|
||||
CREATE TABLE t(a);
|
||||
INSERT INTO t VALUES (2);
|
||||
INSERT INTO t(a) SELECT rowid FROM t;
|
||||
SELECT * FROM t;
|
||||
} {2
|
||||
1}
|
||||
Reference in New Issue
Block a user