Changeset: 1ec61a7ca94b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1ec61a7ca94b
Modified Files:
sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out
sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: default
Log Message:
Merge with Aug2024 branch.
diffs (truncated from 13990 to 300 lines):
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -832,3 +832,4 @@ cde7d8f7c99540a8c95856df052a9f123b0c1643
cde7d8f7c99540a8c95856df052a9f123b0c1643 Dec2023_SP4_release
ae474f7fda0a3f2ebefc6c0b2cd969ef0854fad1 Aug2024_1
dce400b68239412b1835fb28bd183bf50f5e8692 Aug2024_3
+dce400b68239412b1835fb28bd183bf50f5e8692 Aug2024_release
diff --git a/sql/backends/monet5/sql_bincopyconvert.c
b/sql/backends/monet5/sql_bincopyconvert.c
--- a/sql/backends/monet5/sql_bincopyconvert.c
+++ b/sql/backends/monet5/sql_bincopyconvert.c
@@ -474,6 +474,12 @@ load_blob(BAT *bat, stream *s, int *eof_
*eof_reached = 0;
+ /* we know nothing about the ordering of the input data */
+ bat->tsorted = false;
+ bat->trevsorted = false;
+ bat->tkey = false;
+ /* keep tno* properties: if they're set they remain valid when
+ * appending */
while (1) {
const blob *value;
// Read the header
@@ -492,6 +498,8 @@ load_blob(BAT *bat, stream *s, int *eof_
if (header.length == ~(uint64_t)0) {
value = nil_value;
+ bat->tnonil = false;
+ bat->tnil = true;
} else {
size_t length;
size_t needed;
@@ -535,7 +543,7 @@ load_blob(BAT *bat, stream *s, int *eof_
value = buffer;
}
- if (BUNappend(bat, value, false) != GDK_SUCCEED) {
+ if (bunfastapp(bat, value) != GDK_SUCCEED) {
msg = createException(SQL, mal_operator,
GDK_EXCEPTION);
goto end;
}
diff --git
a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
---
a/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++
b/sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -1,628 +1,6 @@
Running database upgrade commands to update system tables.
Running database upgrade commands:
-drop procedure if exists SHPattach(string) cascade;
-drop procedure if exists SHPload(integer) cascade;
-drop procedure if exists SHPload(integer, geometry) cascade;
-
-Running database upgrade commands:
-create procedure SHPLoad(fname string, schemaname string, tablename string)
external name shp.load;
-create procedure SHPLoad(fname string, tablename string) external name
shp.load;
-update sys.functions set system = true where schema_id = 2000 and name in
('shpload');
-
-Running database upgrade commands:
-drop function if exists sys.st_intersects(geometry, geometry) cascade;
-drop function if exists sys.st_dwithin(geometry, geometry, double) cascade;
-drop view if exists sys.geometry_columns cascade;
-drop function if exists sys.st_collect(geometry, geometry) cascade;
-drop aggregate if exists sys.st_collect(geometry) cascade;
-drop aggregate if exists sys.st_makeline(geometry) cascade;
-create view sys.geometry_columns as
- select cast(null as varchar(1)) as f_table_catalog,
- s.name as f_table_schema,
- t.name as f_table_name,
- c.name as f_geometry_column,
- cast(has_z(c.type_digits) + has_m(c.type_digits) +2 as integer) as
coord_dimension,
- c.type_scale as srid,
- get_type(c.type_digits, 0) as geometry_type
- from sys.columns c, sys.tables t, sys.schemas s
- where c.table_id = t.id and t.schema_id = s.id
- and c.type in (select sqlname from sys.types where systemname in ('wkb',
'wkba'));
-GRANT SELECT ON sys.geometry_columns TO PUBLIC;
-CREATE FUNCTION ST_Collect(geom1 Geometry, geom2 Geometry) RETURNS Geometry
EXTERNAL NAME geom."Collect";
-GRANT EXECUTE ON FUNCTION ST_Collect(Geometry, Geometry) TO PUBLIC;
-CREATE AGGREGATE ST_Collect(geom Geometry) RETURNS Geometry external name
aggr."Collect";
-GRANT EXECUTE ON AGGREGATE ST_Collect(Geometry) TO PUBLIC;
-CREATE FUNCTION ST_DistanceGeographic(geom1 Geometry, geom2 Geometry) RETURNS
double EXTERNAL NAME geom."DistanceGeographic";
-GRANT EXECUTE ON FUNCTION ST_DistanceGeographic(Geometry, Geometry) TO PUBLIC;
-CREATE FILTER FUNCTION ST_DWithinGeographic(geom1 Geometry, geom2 Geometry,
distance double) EXTERNAL NAME geom."DWithinGeographic";
-GRANT EXECUTE ON FILTER ST_DWithinGeographic(Geometry, Geometry, double) TO
PUBLIC;
-CREATE FILTER FUNCTION ST_DWithin(geom1 Geometry, geom2 Geometry, distance
double) EXTERNAL NAME rtree."DWithin";
-GRANT EXECUTE ON FILTER ST_DWithin(Geometry, Geometry, double) TO PUBLIC;
-CREATE FILTER FUNCTION ST_DWithin_NoIndex(geom1 Geometry, geom2 Geometry,
distance double) EXTERNAL NAME geom."DWithin_noindex";
-GRANT EXECUTE ON FILTER ST_DWithin_NoIndex(Geometry, Geometry, double) TO
PUBLIC;
-CREATE FUNCTION ST_DWithin2(geom1 Geometry, geom2 Geometry, bbox1 mbr, bbox2
mbr, dst double) RETURNS boolean EXTERNAL NAME geom."DWithin2";
-GRANT EXECUTE ON FUNCTION ST_DWithin2(Geometry, Geometry, mbr, mbr, double) TO
PUBLIC;
-CREATE FILTER FUNCTION ST_IntersectsGeographic(geom1 Geometry, geom2 Geometry)
EXTERNAL NAME geom."IntersectsGeographic";
-GRANT EXECUTE ON FILTER ST_IntersectsGeographic(Geometry, Geometry) TO PUBLIC;
-CREATE FILTER FUNCTION ST_Intersects(geom1 Geometry, geom2 Geometry) EXTERNAL
NAME rtree."Intersects";
-GRANT EXECUTE ON FILTER ST_Intersects(Geometry, Geometry) TO PUBLIC;
-CREATE FILTER FUNCTION ST_Intersects_NoIndex(geom1 Geometry, geom2 Geometry)
EXTERNAL NAME geom."Intersects_noindex";
-GRANT EXECUTE ON FILTER ST_Intersects_NoIndex(Geometry, Geometry) TO PUBLIC;
-CREATE AGGREGATE ST_MakeLine(geom Geometry) RETURNS Geometry external name
aggr."MakeLine";
-GRANT EXECUTE ON AGGREGATE ST_MakeLine(Geometry) TO PUBLIC;
-update sys.functions set system = true where system <> true and schema_id =
2000 and name in ('st_collect', 'st_distancegeographic',
'st_dwithingeographic', 'st_dwithin', 'st_dwithin_noindex', 'st_dwithin2',
'st_intersectsgeographic', 'st_intersects', 'st_intersects_noindex',
'st_makeline');
-update sys._tables set system = true where system <> true and schema_id = 2000
and name = 'geometry_columns';
-
-Running database upgrade commands:
-drop function sys.similarity(string, string) cascade;
-
-Running database upgrade commands:
-CREATE VIEW sys.describe_accessible_tables AS
- SELECT
- schemas.name AS schema,
- tables.name AS table,
- tt.table_type_name AS table_type,
- pc.privilege_code_name AS privs,
- p.privileges AS privs_code
- FROM privileges p
- JOIN sys.roles ON p.auth_id = roles.id
- JOIN sys.tables ON p.obj_id = tables.id
- JOIN sys.table_types tt ON tables.type = tt.table_type_id
- JOIN sys.schemas ON tables.schema_id = schemas.id
- JOIN sys.privilege_codes pc ON p.privileges = pc.privilege_code_id
- WHERE roles.name = current_role;
-GRANT SELECT ON sys.describe_accessible_tables TO PUBLIC;
-update sys._tables set system = true where system <> true and schema_id = 2000
and name = 'describe_accessible_tables';
-alter table sys.function_languages set read write;
-delete from sys.function_languages where language_keyword like 'PYTHON%_MAP';
-update sys.functions set language = language - 1 where language in (7, 11);
-update sys.functions set mod = 'pyapi3' where mod in ('pyapi', 'pyapi3map');
-commit;
-
-Running database upgrade commands:
-alter table sys.function_languages set read only;
-
-Running database upgrade commands:
-DROP FUNCTION IF EXISTS sys.dump_database(BOOLEAN) CASCADE;
-DROP VIEW IF EXISTS sys.dump_comments CASCADE;
-DROP VIEW IF EXISTS sys.describe_comments CASCADE;
-CREATE VIEW sys.describe_comments AS
- SELECT o.id AS id, o.tpe AS tpe, o.nme AS fqn, cm.remark AS rem
- FROM (
- SELECT id, 'SCHEMA', sys.DQ(name) FROM sys.schemas WHERE NOT
system
- UNION ALL
- SELECT t.id, ifthenelse(ts.table_type_name = 'VIEW', 'VIEW',
'TABLE'), sys.FQN(s.name, t.name)
- FROM sys.schemas s JOIN sys._tables t ON s.id = t.schema_id
JOIN sys.table_types ts ON t.type = ts.table_type_id
- WHERE NOT t.system
- UNION ALL
- SELECT c.id, 'COLUMN', sys.FQN(s.name, t.name) || '.' ||
sys.DQ(c.name) FROM sys.columns c, sys._tables t, sys.schemas s WHERE NOT
t.system AND c.table_id = t.id AND t.schema_id = s.id
- UNION ALL
- SELECT idx.id, 'INDEX', sys.FQN(s.name, idx.name) FROM sys.idxs
idx, sys._tables t, sys.schemas s WHERE NOT t.system AND idx.table_id = t.id
AND t.schema_id = s.id
- UNION ALL
- SELECT seq.id, 'SEQUENCE', sys.FQN(s.name, seq.name) FROM
sys.sequences seq, sys.schemas s WHERE seq.schema_id = s.id
- UNION ALL
- SELECT f.id, ft.function_type_keyword, qf.nme FROM
sys.functions f, sys.function_types ft, sys.schemas s,
sys.fully_qualified_functions qf
- WHERE NOT f.system AND f.type = ft.function_type_id AND
f.schema_id = s.id AND qf.id = f.id
- ) AS o(id, tpe, nme)
- JOIN sys.comments cm ON cm.id = o.id;
-GRANT SELECT ON sys.describe_comments TO PUBLIC;
-CREATE VIEW sys.dump_comments AS
- SELECT 'COMMENT ON ' || c.tpe || ' ' || c.fqn || ' IS ' || sys.SQ(c.rem) ||
';' stmt FROM sys.describe_comments c;
-CREATE FUNCTION sys.dump_database(describe BOOLEAN) RETURNS TABLE(o int, stmt
STRING)
-BEGIN
- SET SCHEMA sys;
- TRUNCATE sys.dump_statements;
- INSERT INTO sys.dump_statements VALUES (1, 'START TRANSACTION;');
- INSERT INTO sys.dump_statements VALUES (2, 'SET SCHEMA "sys";');
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_create_roles;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_create_users;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_create_schemas;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_user_defined_types;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_add_schemas_to_users;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_grant_user_privileges;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_sequences;
- --functions and table-likes can be interdependent. They should be inserted
in the order of their catalogue id.
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(ORDER BY stmts.o), stmts.s
- FROM (
- SELECT f.o, f.stmt FROM
sys.dump_functions f
- UNION ALL
- SELECT t.o, t.stmt FROM sys.dump_tables t
- ) AS stmts(o, s);
- IF NOT DESCRIBE THEN
- CALL sys.dump_table_data();
- END IF;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_start_sequences;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_column_defaults;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_table_constraint_type;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_indices;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_foreign_keys;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_partition_tables;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_triggers;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_comments;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_table_grants;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_column_grants;
- INSERT INTO sys.dump_statements SELECT (SELECT COUNT(*) FROM
sys.dump_statements) + RANK() OVER(), stmt FROM sys.dump_function_grants;
- INSERT INTO sys.dump_statements VALUES ((SELECT COUNT(*) FROM
sys.dump_statements) + 1, 'COMMIT;');
- RETURN sys.dump_statements;
-END;
-update sys._tables set system = true where schema_id = 2000 and name in
('describe_comments','dump_comments');
-update sys.functions set system = true where system <> true and schema_id =
2000 and name = 'dump_database' and type = 5;
-
-Running database upgrade commands:
-CREATE FUNCTION sys.sql_datatype(mtype varchar(999), digits integer, tscale
integer, nameonly boolean, shortname boolean)
- RETURNS varchar(1024)
-BEGIN
- RETURN
- CASE mtype
- WHEN 'char' THEN sys.ifthenelse(nameonly OR digits <= 1,
sys.ifthenelse(shortname, 'CHAR', 'CHARACTER'), sys.ifthenelse(shortname,
'CHAR(', 'CHARACTER(') || digits || ')')
- WHEN 'varchar' THEN sys.ifthenelse(nameonly OR digits = 0,
sys.ifthenelse(shortname, 'VARCHAR', 'CHARACTER VARYING'),
sys.ifthenelse(shortname, 'VARCHAR(', 'CHARACTER VARYING(') || digits || ')')
- WHEN 'clob' THEN sys.ifthenelse(nameonly OR digits = 0,
sys.ifthenelse(shortname, 'CLOB', 'CHARACTER LARGE OBJECT'),
sys.ifthenelse(shortname, 'CLOB(', 'CHARACTER LARGE OBJECT(') || digits || ')')
- WHEN 'blob' THEN sys.ifthenelse(nameonly OR digits = 0,
sys.ifthenelse(shortname, 'BLOB', 'BINARY LARGE OBJECT'),
sys.ifthenelse(shortname, 'BLOB(', 'BINARY LARGE OBJECT(') || digits || ')')
- WHEN 'int' THEN 'INTEGER'
- WHEN 'bigint' THEN 'BIGINT'
- WHEN 'smallint' THEN 'SMALLINT'
- WHEN 'tinyint' THEN 'TINYINT'
- WHEN 'hugeint' THEN 'HUGEINT'
- WHEN 'boolean' THEN 'BOOLEAN'
- WHEN 'date' THEN 'DATE'
- WHEN 'time' THEN sys.ifthenelse(nameonly OR digits = 1, 'TIME', 'TIME(' ||
(digits -1) || ')')
- WHEN 'timestamp' THEN sys.ifthenelse(nameonly OR digits = 7, 'TIMESTAMP',
'TIMESTAMP(' || (digits -1) || ')')
- WHEN 'timestamptz' THEN sys.ifthenelse(nameonly OR digits = 7, 'TIMESTAMP
WITH TIME ZONE', 'TIMESTAMP(' || (digits -1) || ') WITH TIME ZONE')
- WHEN 'timetz' THEN sys.ifthenelse(nameonly OR digits = 1, 'TIME WITH TIME
ZONE', 'TIME(' || (digits -1) || ') WITH TIME ZONE')
- WHEN 'decimal' THEN sys.ifthenelse(nameonly OR digits = 0, 'DECIMAL',
'DECIMAL(' || digits || sys.ifthenelse(tscale = 0, '', ',' || tscale) || ')')
- WHEN 'double' THEN sys.ifthenelse(nameonly OR (digits = 53 AND tscale =
0), sys.ifthenelse(shortname, 'DOUBLE', 'DOUBLE PRECISION'), 'FLOAT(' || digits
|| ')')
- WHEN 'real' THEN sys.ifthenelse(nameonly OR (digits = 24 AND tscale = 0),
'REAL', 'FLOAT(' || digits || ')')
- WHEN 'day_interval' THEN 'INTERVAL DAY'
- WHEN 'month_interval' THEN CASE digits WHEN 1 THEN 'INTERVAL YEAR' WHEN 2
THEN 'INTERVAL YEAR TO MONTH' WHEN 3 THEN 'INTERVAL MONTH' END
- WHEN 'sec_interval' THEN
- CASE digits
- WHEN 4 THEN 'INTERVAL DAY'
- WHEN 5 THEN 'INTERVAL DAY TO HOUR'
- WHEN 6 THEN 'INTERVAL DAY TO MINUTE'
- WHEN 7 THEN 'INTERVAL DAY TO SECOND'
- WHEN 8 THEN 'INTERVAL HOUR'
- WHEN 9 THEN 'INTERVAL HOUR TO MINUTE'
- WHEN 10 THEN 'INTERVAL HOUR TO SECOND'
- WHEN 11 THEN 'INTERVAL MINUTE'
- WHEN 12 THEN 'INTERVAL MINUTE TO SECOND'
- WHEN 13 THEN 'INTERVAL SECOND'
- END
- WHEN 'oid' THEN 'OID'
- WHEN 'json' THEN sys.ifthenelse(nameonly OR digits = 0, 'JSON', 'JSON(' ||
digits || ')')
- WHEN 'url' THEN sys.ifthenelse(nameonly OR digits = 0, 'URL', 'URL(' ||
digits || ')')
- WHEN 'xml' THEN sys.ifthenelse(nameonly OR digits = 0, 'XML', 'XML(' ||
digits || ')')
- WHEN 'geometry' THEN
- sys.ifthenelse(nameonly, 'GEOMETRY',
- CASE digits
- WHEN 4 THEN 'GEOMETRY(POINT' || sys.ifthenelse(tscale = 0, ')', ',' ||
tscale || ')')
- WHEN 8 THEN 'GEOMETRY(LINESTRING' || sys.ifthenelse(tscale = 0, ')',
',' || tscale || ')')
- WHEN 16 THEN 'GEOMETRY(POLYGON' || sys.ifthenelse(tscale = 0, ')', ','
|| tscale || ')')
- WHEN 20 THEN 'GEOMETRY(MULTIPOINT' || sys.ifthenelse(tscale = 0, ')',
',' || tscale || ')')
- WHEN 24 THEN 'GEOMETRY(MULTILINESTRING' || sys.ifthenelse(tscale = 0,
')', ',' || tscale || ')')
- WHEN 28 THEN 'GEOMETRY(MULTIPOLYGON' || sys.ifthenelse(tscale = 0, ')',
',' || tscale || ')')
- WHEN 32 THEN 'GEOMETRY(GEOMETRYCOLLECTION' || sys.ifthenelse(tscale =
0, ')', ',' || tscale || ')')
- ELSE 'GEOMETRY'
- END)
- ELSE sys.ifthenelse(mtype = lower(mtype), upper(mtype), '"' || mtype ||
'"') || sys.ifthenelse(nameonly OR digits = 0, '', '(' || digits ||
sys.ifthenelse(tscale = 0, '', ',' || tscale) || ')')
- END;
-END;
-GRANT EXECUTE ON FUNCTION sys.sql_datatype(varchar(999), integer, integer,
boolean, boolean) TO PUBLIC;
-update sys.functions set system = true where system <> true and schema_id =
2000 and name = 'sql_datatype' and type = 1 and language = 2;
-
-Running database upgrade commands:
-CREATE SCHEMA INFORMATION_SCHEMA;
-COMMENT ON SCHEMA INFORMATION_SCHEMA IS 'ISO/IEC 9075-11 SQL/Schemata';
-update sys.schemas set system = true where name = 'information_schema';
-CREATE VIEW INFORMATION_SCHEMA.CHARACTER_SETS AS SELECT
- cast(NULL AS varchar(1)) AS CHARACTER_SET_CATALOG,
- cast(NULL AS varchar(1)) AS CHARACTER_SET_SCHEMA,
- cast('UTF-8' AS varchar(16)) AS CHARACTER_SET_NAME,
- cast('ISO/IEC 10646:2021' AS varchar(20)) AS CHARACTER_REPERTOIRE,
- cast('UTF-8' AS varchar(16)) AS FORM_OF_USE,
- cast(NULL AS varchar(1)) AS DEFAULT_COLLATE_CATALOG,
- cast(NULL AS varchar(1)) AS DEFAULT_COLLATE_SCHEMA,
- cast(NULL AS varchar(1)) AS DEFAULT_COLLATE_NAME;
-GRANT SELECT ON TABLE INFORMATION_SCHEMA.CHARACTER_SETS TO PUBLIC WITH GRANT
OPTION;
-CREATE VIEW INFORMATION_SCHEMA.SCHEMATA AS SELECT
- cast(NULL AS varchar(1)) AS CATALOG_NAME,
- s."name" AS SCHEMA_NAME,
- a."name" AS SCHEMA_OWNER,
- cast(NULL AS varchar(1)) AS DEFAULT_CHARACTER_SET_CATALOG,
- cast(NULL AS varchar(1)) AS DEFAULT_CHARACTER_SET_SCHEMA,
- cast('UTF-8' AS varchar(16)) AS DEFAULT_CHARACTER_SET_NAME,
- cast(NULL AS varchar(1)) AS SQL_PATH,
- s."id" AS schema_id,
- s."system" AS is_system,
- cm."remark" AS comments
- FROM sys."schemas" s
- INNER JOIN sys."auths" a ON s."owner" = a."id"
- LEFT OUTER JOIN sys."comments" cm ON s."id" = cm."id"
- ORDER BY s."name";
-GRANT SELECT ON TABLE INFORMATION_SCHEMA.SCHEMATA TO PUBLIC WITH GRANT OPTION;
-CREATE VIEW INFORMATION_SCHEMA.TABLES AS SELECT
- cast(NULL AS varchar(1)) AS TABLE_CATALOG,
- s."name" AS TABLE_SCHEMA,
- t."name" AS TABLE_NAME,
- tt."table_type_name" AS TABLE_TYPE,
- cast(NULL AS varchar(1)) AS SELF_REFERENCING_COLUMN_NAME,
- cast(NULL AS varchar(1)) AS REFERENCE_GENERATION,
- cast(NULL AS varchar(1)) AS USER_DEFINED_TYPE_CATALOG,
- cast(NULL AS varchar(1)) AS USER_DEFINED_TYPE_SCHEMA,
- cast(NULL AS varchar(1)) AS USER_DEFINED_TYPE_NAME,
- cast(sys.ifthenelse((t."type" IN (0, 3, 7, 20, 30) AND t."access" IN (0,
2)), 'YES', 'NO') AS varchar(3)) AS IS_INSERTABLE_INTO,
- cast('NO' AS varchar(3)) AS IS_TYPED,
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]