From da972738afbc6d68d652af4a2b2cdae219ca04b1 Mon Sep 17 00:00:00 2001 From: johnnyfish Date: Sun, 25 Aug 2024 18:11:21 +0300 Subject: [PATCH] fix escape for column default values --- src/lib/data/import-metadata/scripts/maria-script.ts | 2 +- src/lib/data/import-metadata/scripts/mysql-script.ts | 2 +- src/lib/data/import-metadata/scripts/postgres-script.ts | 2 +- src/lib/data/import-metadata/scripts/sqlite-script.ts | 2 +- src/lib/data/import-metadata/scripts/sqlserver-script.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/data/import-metadata/scripts/maria-script.ts b/src/lib/data/import-metadata/scripts/maria-script.ts index bcf0b5df..ad6b458f 100644 --- a/src/lib/data/import-metadata/scripts/maria-script.ts +++ b/src/lib/data/import-metadata/scripts/maria-script.ts @@ -70,7 +70,7 @@ export const mariaDBQuery = `WITH fk_info as ( END, ',"ordinal_position":"', cols.ordinal_position, '","nullable":', IF(cols.is_nullable = 'YES', 'true', 'false'), - ',"default":"', IFNULL(cols.column_default, ''), + ',"default":"', IFNULL(REPLACE(cols.column_default, '"', '\\"'), ''), '","collation":"', IFNULL(cols.collation_name, ''), '"}' ))))) ), indexes as ( diff --git a/src/lib/data/import-metadata/scripts/mysql-script.ts b/src/lib/data/import-metadata/scripts/mysql-script.ts index 08420bb9..fa14d866 100644 --- a/src/lib/data/import-metadata/scripts/mysql-script.ts +++ b/src/lib/data/import-metadata/scripts/mysql-script.ts @@ -70,7 +70,7 @@ export const mySQLQuery = `WITH fk_info as ( END, ',"ordinal_position":"', cols.ordinal_position, '","nullable":', IF(cols.is_nullable = 'YES', 'true', 'false'), - ',"default":"', IFNULL(cols.column_default, ''), + ',"default":"', IFNULL(REPLACE(cols.column_default, '"', '\\"'), ''), '","collation":"', IFNULL(cols.collation_name, ''), '"}' ))))) ), indexes as ( diff --git a/src/lib/data/import-metadata/scripts/postgres-script.ts b/src/lib/data/import-metadata/scripts/postgres-script.ts index 98ccaeba..a7a7f7b3 100644 --- a/src/lib/data/import-metadata/scripts/postgres-script.ts +++ b/src/lib/data/import-metadata/scripts/postgres-script.ts @@ -79,7 +79,7 @@ cols as ( ELSE 'null' END, ',"nullable":', case when (cols.IS_NULLABLE = 'YES') then 'true' else 'false' end, - ',"default":"', COALESCE(cols.column_default, ''), + ',"default":"', COALESCE(replace(cols.column_default, '"', E'\\"'), ''), '","collation":"', coalesce(cols.COLLATION_NAME, ''), '"}')), ',') as cols_metadata from information_schema.columns cols where cols.table_schema not in ('information_schema', 'pg_catalog') diff --git a/src/lib/data/import-metadata/scripts/sqlite-script.ts b/src/lib/data/import-metadata/scripts/sqlite-script.ts index 826c897f..667226fd 100644 --- a/src/lib/data/import-metadata/scripts/sqlite-script.ts +++ b/src/lib/data/import-metadata/scripts/sqlite-script.ts @@ -108,7 +108,7 @@ export const sqliteQuery = `WITH fk_info AS ( END ELSE 'null' END, - 'default', COALESCE(p.dflt_value, '') + 'default', COALESCE(REPLACE(p.dflt_value, '"', '\\"'), '') ) ) AS cols_metadata FROM diff --git a/src/lib/data/import-metadata/scripts/sqlserver-script.ts b/src/lib/data/import-metadata/scripts/sqlserver-script.ts index 2aa603ac..16783f5c 100644 --- a/src/lib/data/import-metadata/scripts/sqlserver-script.ts +++ b/src/lib/data/import-metadata/scripts/sqlserver-script.ts @@ -79,7 +79,7 @@ cols AS ( ', "nullable": "' + CASE WHEN cols.IS_NULLABLE = 'YES' THEN 'true' ELSE 'false' END + '", "default": "' + - COALESCE(CAST(cols.COLUMN_DEFAULT AS NVARCHAR(MAX)), '') + + COALESCE(REPLACE(CAST(cols.COLUMN_DEFAULT AS NVARCHAR(MAX)), '"', '\\"'), '') + '", "collation": "' + COALESCE(cols.COLLATION_NAME, '') + '"}')