1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-03 16:53:36 +03:00

Fix a problem in the legacy genfkey code to do with column names that require quoting.

FossilOrigin-Name: 273ccbf18af5191807678a0a0c09cda82408b29c
This commit is contained in:
dan
2009-10-08 13:42:28 +00:00
parent ce3745329c
commit 8b6d37d8bc
4 changed files with 74 additions and 14 deletions

View File

@@ -876,8 +876,8 @@ static int genfkey_create_triggers(
", '/ref/', dq(to_tbl)"
", '/key_notnull/', sj('new.' || dq(from_col) || ' IS NOT NULL', ' AND ')"
", '/fkey_list/', sj(to_col, ', ')"
", '/rkey_list/', sj(from_col, ', ')"
", '/fkey_list/', sj(dq(to_col), ', ')"
", '/rkey_list/', sj(dq(from_col), ', ')"
", '/cond1/', sj(multireplace('new./from/ == /to/'"
", '/from/', dq(from_col)"
@@ -891,9 +891,9 @@ static int genfkey_create_triggers(
", '/update_action/', CASE on_update "
"WHEN 'SET NULL' THEN "
"multireplace('UPDATE /tbl/ SET /setlist/ WHERE /where/;' "
", '/setlist/', sj(from_col||' = NULL',', ')"
", '/setlist/', sj(dq(from_col)||' = NULL',', ')"
", '/tbl/', dq(from_tbl)"
", '/where/', sj(from_col||' = old.'||dq(to_col),' AND ')"
", '/where/', sj(dq(from_col)||' = old.'||dq(to_col),' AND ')"
")"
"WHEN 'CASCADE' THEN "
"multireplace('UPDATE /tbl/ SET /setlist/ WHERE /where/;' "
@@ -908,9 +908,9 @@ static int genfkey_create_triggers(
", '/delete_action/', CASE on_delete "
"WHEN 'SET NULL' THEN "
"multireplace('UPDATE /tbl/ SET /setlist/ WHERE /where/;' "
", '/setlist/', sj(from_col||' = NULL',', ')"
", '/setlist/', sj(dq(from_col)||' = NULL',', ')"
", '/tbl/', dq(from_tbl)"
", '/where/', sj(from_col||' = old.'||dq(to_col),' AND ')"
", '/where/', sj(dq(from_col)||' = old.'||dq(to_col),' AND ')"
")"
"WHEN 'CASCADE' THEN "
"multireplace('DELETE FROM /tbl/ WHERE /where/;' "