From 4ee0beb0ace0143a770c276bff27ce9b1bbafbf7 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Fri, 6 Jan 2023 18:03:14 +0800 Subject: [PATCH 1/2] fix(nocodb): symbol col.table_name not found --- .../db/sql-client/lib/mysql/mysql.queries.ts | 132 ++++++++++-------- 1 file changed, 76 insertions(+), 56 deletions(-) diff --git a/packages/nocodb/src/lib/db/sql-client/lib/mysql/mysql.queries.ts b/packages/nocodb/src/lib/db/sql-client/lib/mysql/mysql.queries.ts index c2ce9c2346..a5a335e223 100644 --- a/packages/nocodb/src/lib/db/sql-client/lib/mysql/mysql.queries.ts +++ b/packages/nocodb/src/lib/db/sql-client/lib/mysql/mysql.queries.ts @@ -212,7 +212,7 @@ AND t.table_name=?;`, kcu.TABLE_NAME as tn, kcu.COLUMN_NAME as cn, kcu.POSITION_IN_UNIQUE_CONSTRAINT as puc, - kcu.REFERENCED_TABLE_NAME as rtn, + kcu.REFERENCED_TABLE_NAME as rtn, kcu.REFERENCED_COLUMN_NAME as rcn, rc.MATCH_OPTION as mo, rc.UPDATE_RULE as ur, @@ -222,7 +222,8 @@ AND t.table_name=?;`, information_schema.KEY_COLUMN_USAGE AS kcu INNER JOIN information_schema.REFERENTIAL_CONSTRAINTS AS rc ON kcu.CONSTRAINT_NAME = rc.CONSTRAINT_NAME - Group by kcu.CONSTRAINT_NAME, + Group by + kcu.CONSTRAINT_NAME, kcu.TABLE_NAME, kcu.COLUMN_NAME, kcu.POSITION_IN_UNIQUE_CONSTRAINT, @@ -230,71 +231,90 @@ AND t.table_name=?;`, kcu.REFERENCED_COLUMN_NAME, rc.MATCH_OPTION, rc.UPDATE_RULE, - rc.DELETE_RULE ,kcu.table_schema + rc.DELETE_RULE , + kcu.table_schema Having kcu.table_schema = ? AND kcu.referenced_column_name IS NOT NULL - AND kcu.table_name=?`, + AND kcu.table_name =?`, paramsHints: ['database', 'tn'], }, }, relationListAll: { default: { - sql: ` + sql: `SELECT + kcu.constraint_name AS cstn, + kcu.table_name AS tn, + kcu.column_name AS cn, + kcu.position_in_unique_constraint AS puc, + kcu.referenced_table_name AS rtn, + kcu.referenced_column_name AS rcn, + rc.match_option AS mo, + rc.update_rule AS ur, + rc.delete_rule AS dr, + kcu.table_schema AS ts + FROM + ( + SELECT + table_schema, + constraint_name, + table_name, + column_name, + position_in_unique_constraint, + referenced_table_name, + referenced_column_name + FROM + information_schema.KEY_COLUMN_USAGE + WHERE + table_schema = 'xcdb') AS kcu + INNER JOIN + ( + SELECT + constraint_schema, + match_option, + update_rule, + delete_rule, + constraint_name + FROM + information_schema.REFERENTIAL_CONSTRAINTS + WHERE + constraint_schema = 'xcdb') AS rc ON + kcu.constraint_name = rc.constraint_name + AND kcu.table_schema = rc.constraint_schema + INNER JOIN + ( + SELECT + table_schema, + table_name, + column_name + FROM + information_schema.COLUMNS + WHERE + table_schema = 'xcdb' + AND table_name IN ( SELECT - kcu.CONSTRAINT_NAME AS cstn, - kcu.TABLE_NAME AS tn, - kcu.COLUMN_NAME AS cn, - kcu.POSITION_IN_UNIQUE_CONSTRAINT AS puc, - kcu.REFERENCED_TABLE_NAME AS rtn, - kcu.REFERENCED_COLUMN_NAME AS rcn, - rc.MATCH_OPTION AS mo, - rc.UPDATE_RULE AS ur, - rc.DELETE_RULE AS dr, - kcu.table_schema AS ts + table_name FROM - (SELECT - table_schema, - CONSTRAINT_NAME, - TABLE_NAME, - COLUMN_NAME, - POSITION_IN_UNIQUE_CONSTRAINT, - REFERENCED_TABLE_NAME, - REFERENCED_COLUMN_NAME - FROM - information_schema.KEY_COLUMN_USAGE - WHERE - table_schema = :databaseName) AS kcu - INNER JOIN - (SELECT - CONSTRAINT_SCHEMA, - MATCH_OPTION, - UPDATE_RULE, - DELETE_RULE, - CONSTRAINT_NAME - FROM - information_schema.REFERENTIAL_CONSTRAINTS - WHERE - CONSTRAINT_SCHEMA = :databaseName) AS rc ON kcu.CONSTRAINT_NAME = rc.CONSTRAINT_NAME - AND kcu.table_schema = rc.CONSTRAINT_SCHEMA - INNER JOIN - (SELECT - table_schema, TABLE_NAME, COLUMN_NAME - FROM - INFORMATION_SCHEMA.COLUMNS - WHERE - table_schema = :databaseName AND TABLE_NAME IN (SELECT - TABLE_NAME - FROM - INFORMATION_SCHEMA.TABLES - WHERE - table_schema = :databaseName - AND LOWER(TABLE_TYPE) = 'base table')) AS col ON col.table_schema = kcu.table_schema - AND col.table_name = kcu.TABLE_NAME - - AND kcu.REFERENCED_COLUMN_NAME IS NOT NULL - GROUP BY cstn , tn , rcn , cn , puc , rtn ,cn, mo , ur , dr , ts`, + information_schema.TABLES + WHERE + table_schema = 'xcdb' + AND Lower(table_type) = 'base table')) AS col ON + col.table_schema = kcu.table_schema + AND col.table_name = kcu.table_name + AND kcu.referenced_column_name IS NOT NULL + GROUP BY + cstn , + tn , + rcn , + cn , + puc , + rtn , + cn, + mo , + ur , + dr , + ts`, paramsHints: ['database'], }, }, From fbe6ef6c8fca0fd05ad3e2aa70ea94a79a539a57 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Fri, 6 Jan 2023 19:07:04 +0800 Subject: [PATCH 2/2] fix(nocodb): change schema back to :databaseName --- .../src/lib/db/sql-client/lib/mysql/mysql.queries.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/nocodb/src/lib/db/sql-client/lib/mysql/mysql.queries.ts b/packages/nocodb/src/lib/db/sql-client/lib/mysql/mysql.queries.ts index a5a335e223..652421aa3f 100644 --- a/packages/nocodb/src/lib/db/sql-client/lib/mysql/mysql.queries.ts +++ b/packages/nocodb/src/lib/db/sql-client/lib/mysql/mysql.queries.ts @@ -267,7 +267,7 @@ AND t.table_name=?;`, FROM information_schema.KEY_COLUMN_USAGE WHERE - table_schema = 'xcdb') AS kcu + table_schema = :databaseName) AS kcu INNER JOIN ( SELECT @@ -279,7 +279,7 @@ AND t.table_name=?;`, FROM information_schema.REFERENTIAL_CONSTRAINTS WHERE - constraint_schema = 'xcdb') AS rc ON + constraint_schema = :databaseName) AS rc ON kcu.constraint_name = rc.constraint_name AND kcu.table_schema = rc.constraint_schema INNER JOIN @@ -291,14 +291,14 @@ AND t.table_name=?;`, FROM information_schema.COLUMNS WHERE - table_schema = 'xcdb' + table_schema = :databaseName AND table_name IN ( SELECT table_name FROM information_schema.TABLES WHERE - table_schema = 'xcdb' + table_schema = :databaseName AND Lower(table_type) = 'base table')) AS col ON col.table_schema = kcu.table_schema AND col.table_name = kcu.table_name