diff --git a/namespace/mysql_information_schema.go b/namespace/mysql_information_schema.go index e0b6810..7792806 100644 --- a/namespace/mysql_information_schema.go +++ b/namespace/mysql_information_schema.go @@ -36,7 +36,7 @@ func prepareDatabaseForMySQL(db *sql.DB) error { // We create views that will be used to retrive collations, tables, columns, constraints and views _, err = db.Exec(` - CREATE VIEW INFORMATION_SCHEMA.COLLATIONS AS + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.COLLATIONS AS SELECT column1 AS COLLATION_NAME, column2 AS CHARACTER_SET_NAME, @@ -68,7 +68,7 @@ func prepareDatabaseForMySQL(db *sql.DB) error { } _, err = db.Exec(` - CREATE VIEW INFORMATION_SCHEMA.PARTITIONS AS SELECT + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.PARTITIONS AS SELECT "def" AS TABLE_CATALOG, tl.schema AS TABLE_SCHEMA, tl.name AS TABLE_NAME, @@ -136,7 +136,7 @@ func prepareDatabaseForMySQL(db *sql.DB) error { -- INFORMATION_SCHEMA.COLUMNS -CREATE VIEW INFORMATION_SCHEMA.COLUMNS AS WITH RECURSIVE table_list AS ( +CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.COLUMNS AS WITH RECURSIVE table_list AS ( SELECT name, schema FROM pragma_table_list() UNION @@ -212,7 +212,7 @@ SELECT * FROM table_info;`) } _, err = db.Exec(` - CREATE VIEW INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS WITH RECURSIVE table_list AS ( + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS WITH RECURSIVE table_list AS ( SELECT name, schema FROM pragma_table_list() WHERE "type" = 'table' @@ -239,7 +239,7 @@ SELECT * FROM table_info;`) SELECT * FROM table_info; -- INFORMATION_SCHEMA.TABLES - CREATE VIEW INFORMATION_SCHEMA.TABLES AS SELECT + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.TABLES AS SELECT "def" AS TABLE_CATALOG, tl.schema AS TABLE_SCHEMA, tl.name AS TABLE_NAME, @@ -300,7 +300,7 @@ SELECT * FROM table_info;`) } _, err = db.Exec(` - CREATE VIEW INFORMATION_SCHEMA.VIEWS AS SELECT + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.VIEWS AS SELECT 'def' AS TABLE_CATALOG, tl.schema AS TABLE_SCHEMA, tl.name AS TABLE_NAME, @@ -316,7 +316,7 @@ SELECT * FROM table_info;`) pragma_table_list tl WHERE tl.type = 'view'; - CREATE VIEW INFORMATION_SCHEMA.STATISTICS AS WITH RECURSIVE table_list AS ( + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.STATISTICS AS WITH RECURSIVE table_list AS ( SELECT name, schema FROM pragma_table_list() WHERE "type" = 'table' @@ -354,7 +354,7 @@ SELECT * FROM table_info;`) - CREATE VIEW INFORMATION_SCHEMA.SCHEMATA AS SELECT + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.SCHEMATA AS SELECT 'def' AS TABLE_CATALOG, name AS SCHEMA_NAME, 'utf8mb3' AS DEFAULT_CHARACTER_SET_NAME, @@ -363,7 +363,7 @@ SELECT * FROM table_info;`) 'NO' AS DEFAULT_ENCRYPTION FROM pragma_database_list(); - CREATE VIEW INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS WITH RECURSIVE table_list AS ( + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS WITH RECURSIVE table_list AS ( SELECT name, schema FROM pragma_table_list() WHERE "type" = 'table' @@ -398,14 +398,14 @@ SELECT * FROM table_info;`) return fmt.Errorf("error creating view INFORMATION_SCHEMA.VIEWS: %w", err) } - _, err = db.Exec(`CREATE VIEW dual AS SELECT 'x' AS dummy;`) + _, err = db.Exec(`CREATE VIEW IF NOT EXISTS dual AS SELECT 'x' AS dummy;`) if err != nil { return err } // Those views are empty but created so that SQLite does not return a missing table error _, err = db.Exec(` - /*CREATE VIEW INFORMATION_SCHEMA.STATISTICS AS + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.STATISTICS AS SELECT '' AS TABLE_CATALOG, '' AS TABLE_SCHEMA, @@ -425,9 +425,9 @@ SELECT * FROM table_info;`) '' AS INDEX_COMMENT, 'YES' AS IS_VISIBLE, NULL AS EXPRESSION - WHERE FALSE;*/ + WHERE FALSE; - CREATE VIEW INFORMATION_SCHEMA.TRIGGERS AS + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.TRIGGERS AS SELECT '' AS TRIGGER_CATALOG, '' AS TRIGGER_SCHEMA, @@ -454,7 +454,7 @@ SELECT * FROM table_info;`) WHERE FALSE; - CREATE VIEW INFORMATION_SCHEMA.ROUTINES AS + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.ROUTINES AS SELECT '' AS SPECIFIC_NAME, '' AS ROUTINE_CATALOG, @@ -489,7 +489,7 @@ SELECT * FROM table_info;`) '' AS DATABASE_COLLATION WHERE FALSE; - CREATE VIEW INFORMATION_SCHEMA.EVENTS AS + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.EVENTS AS SELECT '' AS EVENT_CATALOG, '' AS EVENT_SCHEMA, @@ -517,7 +517,7 @@ SELECT * FROM table_info;`) '' AS DATABASE_COLLATION WHERE FALSE; - CREATE VIEW INFORMATION_SCHEMA.TABLE_PRIVILEGES AS + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.TABLE_PRIVILEGES AS SELECT '' AS GRANTEE, '' AS TABLE_CATALOG, @@ -527,7 +527,7 @@ SELECT * FROM table_info;`) '' AS IS_GRANTABLE WHERE FALSE; - CREATE VIEW INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS SELECT '' AS CONSTRAINT_CATALOG, '' AS CONSTRAINT_SCHEMA, @@ -542,7 +542,7 @@ SELECT * FROM table_info;`) '' AS REFERENCED_TABLE_NAME WHERE FALSE; - CREATE VIEW INFORMATION_SCHEMA.COLUMN_PRIVILEGES AS + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.COLUMN_PRIVILEGES AS SELECT '' AS GRANTEE, '' AS TABLE_CATALOG, @@ -553,7 +553,7 @@ SELECT * FROM table_info;`) '' AS IS_GRANTABLE WHERE FALSE; - CREATE VIEW INFORMATION_SCHEMA.USER_PRIVILEGES AS + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.USER_PRIVILEGES AS SELECT '' AS GRANTEE, '' AS TABLE_CATALOG, @@ -561,7 +561,7 @@ SELECT * FROM table_info;`) 'NO' AS IS_GRANTABLE WHERE FALSE; - CREATE VIEW INFORMATION_SCHEMA.SCHEMA_PRIVILEGES AS + CREATE VIEW IF NOT EXISTS INFORMATION_SCHEMA.SCHEMA_PRIVILEGES AS SELECT '' AS GRANTEE, '' AS TABLE_CATALOG, @@ -582,7 +582,7 @@ SELECT * FROM table_info;`) } _, err = db.Exec(` - CREATE VIEW mysql.user AS SELECT + CREATE VIEW IF NOT EXISTS mysql.user AS SELECT column1 AS Host, column2 AS User, column3 AS Select_priv, @@ -648,7 +648,7 @@ SELECT * FROM table_info;`) NULL, NULL, NULL, NULL)); - CREATE VIEW mysql.procs_priv AS SELECT + CREATE VIEW IF NOT EXISTS mysql.procs_priv AS SELECT '' AS Host, '' AS Db, '' AS User,