Changeset: bbdcd25c0219 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/bbdcd25c0219
Modified Files:
        sql/ChangeLog
        sql/backends/monet5/sql_upgrades.c
        sql/scripts/91_information_schema.sql
Branch: default
Log Message:

Improve returned information on interval columns for columns DATA_TYPE, 
INTERVAL_TYPE and INTERVAL_PRECISION of view INFORMATION_SCHEMA.COLUMNS.
Added system views: INFORMATION_SCHEMA.CHECK_CONSTRAINTS, 
INFORMATION_SCHEMA.TABLE_CONSTRAINTS and INFORMATION_SCHEMA.SEQUENCES.


diffs (258 lines):

diff --git a/sql/ChangeLog b/sql/ChangeLog
--- a/sql/ChangeLog
+++ b/sql/ChangeLog
@@ -8,6 +8,9 @@
    information_schema.views
    information_schema.columns
    information_schema.character_sets
+   information_schema.check_constraints
+   information_schema.table_constraints
+   information_schema.sequences
 
   Most views have been extended (after the standard columns) with MonetDB
   specific information columns such as schema_id, table_id, column_id, etc.
diff --git a/sql/backends/monet5/sql_upgrades.c 
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -6021,6 +6021,7 @@ sql_update_default(Client c, mvc *sql, s
                "CREATE SCHEMA INFORMATION_SCHEMA;\n"
                "COMMENT ON SCHEMA INFORMATION_SCHEMA IS 'ISO/IEC 9075-11 
SQL/Schemata';\n"
                "update sys.schemas set system = true where name = 
'information_schema';\n"
+
                "CREATE VIEW INFORMATION_SCHEMA.CHARACTER_SETS AS SELECT\n"
                "  cast(NULL AS varchar(1)) AS CHARACTER_SET_CATALOG,\n"
                "  cast(NULL AS varchar(1)) AS CHARACTER_SET_SCHEMA,\n"
@@ -6031,6 +6032,7 @@ sql_update_default(Client c, mvc *sql, s
                "  cast(NULL AS varchar(1)) AS DEFAULT_COLLATE_SCHEMA,\n"
                "  cast(NULL AS varchar(1)) AS DEFAULT_COLLATE_NAME;\n"
                "GRANT SELECT ON TABLE INFORMATION_SCHEMA.CHARACTER_SETS TO 
PUBLIC WITH GRANT OPTION;\n"
+
                "CREATE VIEW INFORMATION_SCHEMA.SCHEMATA AS SELECT\n"
                "  cast(NULL AS varchar(1)) AS CATALOG_NAME,\n"
                "  s.\"name\" AS SCHEMA_NAME,\n"
@@ -6048,6 +6050,7 @@ sql_update_default(Client c, mvc *sql, s
                " LEFT OUTER JOIN sys.\"comments\" cm ON s.\"id\" = cm.\"id\"\n"
                " ORDER BY s.\"name\";\n"
                "GRANT SELECT ON TABLE INFORMATION_SCHEMA.SCHEMATA TO PUBLIC 
WITH GRANT OPTION;\n"
+
                "CREATE VIEW INFORMATION_SCHEMA.TABLES AS SELECT\n"
                "  cast(NULL AS varchar(1)) AS TABLE_CATALOG,\n"
                "  s.\"name\" AS TABLE_SCHEMA,\n"
@@ -6077,6 +6080,7 @@ sql_update_default(Client c, mvc *sql, s
                " LEFT OUTER JOIN (SELECT DISTINCT \"schema\", \"table\", 
\"count\" FROM sys.\"statistics\"()) st ON (s.\"name\" = st.\"schema\" AND 
t.\"name\" = st.\"table\")\n"
                " ORDER BY s.\"name\", t.\"name\";\n"
                "GRANT SELECT ON TABLE INFORMATION_SCHEMA.TABLES TO PUBLIC WITH 
GRANT OPTION;\n"
+
                "CREATE VIEW INFORMATION_SCHEMA.VIEWS AS SELECT\n"
                "  cast(NULL AS varchar(1)) AS TABLE_CATALOG,\n"
                "  s.\"name\" AS TABLE_SCHEMA,\n"
@@ -6100,6 +6104,7 @@ sql_update_default(Client c, mvc *sql, s
                " WHERE t.\"type\" = 1\n"
                " ORDER BY s.\"name\", t.\"name\";\n"
                "GRANT SELECT ON TABLE INFORMATION_SCHEMA.VIEWS TO PUBLIC WITH 
GRANT OPTION;\n"
+
                "CREATE VIEW INFORMATION_SCHEMA.COLUMNS AS SELECT\n"
                "  cast(NULL AS varchar(1)) AS TABLE_CATALOG,\n"
                "  s.\"name\" AS TABLE_SCHEMA,\n"
@@ -6108,15 +6113,18 @@ sql_update_default(Client c, mvc *sql, s
                "  cast(c.\"number\" +1 AS int) AS ORDINAL_POSITION,\n"
                "  c.\"default\" AS COLUMN_DEFAULT,\n"
                "  cast(sys.ifthenelse(c.\"null\", 'YES', 'NO') AS varchar(3)) 
AS IS_NULLABLE,\n"
-               "  c.\"type\" AS DATA_TYPE,\n"
+               "  CASE c.\"type\" WHEN 'day_interval' THEN 'interval day' WHEN 
'month_interval' THEN 'interval month' WHEN 'sec_interval' THEN 'interval 
second' ELSE c.\"type\" END AS DATA_TYPE,\n"
                "  cast(sys.ifthenelse(c.\"type\" IN 
('varchar','clob','char','json','url','xml'), c.\"type_digits\", NULL) AS int) 
AS CHARACTER_MAXIMUM_LENGTH,\n"
                "  cast(sys.ifthenelse(c.\"type\" IN 
('varchar','clob','char','json','url','xml'), c.\"type_digits\" * 3, NULL) AS 
int) AS CHARACTER_OCTET_LENGTH,\n"
                "  cast(sys.ifthenelse(c.\"type\" IN 
('int','smallint','tinyint','bigint','hugeint','float','real','double','decimal','numeric','oid'),
 c.\"type_digits\", NULL) AS int) AS NUMERIC_PRECISION,\n"
                "  cast(sys.ifthenelse(c.\"type\" IN 
('int','smallint','tinyint','bigint','hugeint','float','real','double','oid'), 
2, sys.ifthenelse(c.\"type\" IN ('decimal','numeric'), 10, NULL)) AS int) AS 
NUMERIC_PRECISION_RADIX,\n"
                "  cast(sys.ifthenelse(c.\"type\" IN 
('int','smallint','tinyint','bigint','hugeint','float','real','double','decimal','numeric','oid'),
 c.\"type_scale\", NULL) AS int) AS NUMERIC_SCALE,\n"
                "  cast(sys.ifthenelse(c.\"type\" IN 
('date','timestamp','timestamptz','time','timetz'), c.\"type_scale\" -1, NULL) 
AS int) AS DATETIME_PRECISION,\n"
-               "  cast(CASE c.\"type\" WHEN 'day_interval' THEN 'interval day' 
WHEN 'month_interval' THEN 'interval month' WHEN 'sec_interval' THEN 'interval 
second' ELSE NULL END AS varchar(40)) AS INTERVAL_TYPE,\n"
-               "  cast(sys.ifthenelse(c.\"type\" IN 
('day_interval','month_interval','sec_interval'), c.\"type_scale\" -1, NULL) AS 
int) AS INTERVAL_PRECISION,\n"
+               "  cast(CASE c.\"type\" WHEN 'day_interval' THEN 'interval day' 
WHEN 'month_interval' THEN (CASE c.\"type_digits\" WHEN 1 THEN 'interval year' 
WHEN 2 THEN 'interval year to month' WHEN 3 THEN 'interval month' ELSE NULL 
END)"
+               " WHEN 'sec_interval' THEN (CASE c.\"type_digits\" 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' ELSE NULL END) ELSE NULL END 
AS varchar(40)) AS INTERVAL_TYPE,\n"
+               "  cast(CASE c.\"type\" WHEN 'day_interval' THEN 0 WHEN 
'month_interval' THEN 0 WHEN 'sec_interval' THEN 
(sys.ifthenelse(c.\"type_digits\" IN (7, 10, 12, 13), 
sys.ifthenelse(c.\"type_scale\" > 0, c.\"type_scale\", 3), 0)) ELSE NULL END AS 
int) AS INTERVAL_PRECISION,\n"
                "  cast(NULL AS varchar(1)) AS CHARACTER_SET_CATALOG,\n"
                "  cast(NULL AS varchar(1)) AS CHARACTER_SET_SCHEMA,\n"
                "  cast(sys.ifthenelse(c.\"type\" IN 
('varchar','clob','char','json','url','xml'), 'UTF-8', NULL) AS varchar(16)) AS 
CHARACTER_SET_NAME,\n"
@@ -6163,10 +6171,70 @@ sql_update_default(Client c, mvc *sql, s
                " LEFT OUTER JOIN sys.\"comments\" cm ON c.\"id\" = cm.\"id\"\n"
                " ORDER BY s.\"name\", t.\"name\", c.\"number\";\n"
                "GRANT SELECT ON TABLE INFORMATION_SCHEMA.COLUMNS TO PUBLIC 
WITH GRANT OPTION;\n"
+
+               "CREATE VIEW INFORMATION_SCHEMA.CHECK_CONSTRAINTS AS SELECT\n"
+               "  cast(NULL AS varchar(1)) AS CONSTRAINT_CATALOG,\n"
+               "  cast(NULL AS varchar(1024)) AS CONSTRAINT_SCHEMA,\n"
+               "  cast(NULL AS varchar(1024)) AS CONSTRAINT_NAME,\n"
+               "  cast(NULL AS varchar(1024)) AS CHECK_CLAUSE\n"
+               " WHERE 1=0;\n"
+               "GRANT SELECT ON TABLE INFORMATION_SCHEMA.CHECK_CONSTRAINTS TO 
PUBLIC WITH GRANT OPTION;\n"
+
+               "CREATE VIEW INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS SELECT\n"
+               "  cast(NULL AS varchar(1)) AS CONSTRAINT_CATALOG,\n"
+               "  s.\"name\" AS CONSTRAINT_SCHEMA,\n"
+               "  k.\"name\" AS CONSTRAINT_NAME,\n"
+               "  cast(NULL AS varchar(1)) AS TABLE_CATALOG,\n"
+               "  s.\"name\" AS TABLE_SCHEMA,\n"
+               "  t.\"name\" AS TABLE_NAME,\n"
+               "  cast(CASE k.\"type\" WHEN 0 THEN 'PRIMARY KEY' WHEN 1 THEN 
'UNIQUE' WHEN 2 THEN 'FOREIGN KEY' ELSE NULL END AS varchar(16)) AS 
CONSTRAINT_TYPE,\n"
+               "  cast('NO' AS varchar(3)) AS IS_DEFERRABLE,\n"
+               "  cast('NO' AS varchar(3)) AS INITIALLY_DEFERRED,\n"
+               "  cast('YES' AS varchar(3)) AS  ENFORCED,\n"
+               "  -- MonetDB column extensions\n"
+               "  t.\"schema_id\" AS schema_id,\n"
+               "  t.\"id\" AS table_id,\n"
+               "  k.\"id\" AS key_id,\n"
+               "  k.\"type\" AS key_type,\n"
+               "  t.\"system\" AS is_system\n"
+               " FROM (SELECT sk.\"id\", sk.\"table_id\", sk.\"name\", 
sk.\"type\" FROM sys.\"keys\" sk UNION ALL SELECT tk.\"id\", tk.\"table_id\", 
tk.\"name\", tk.\"type\" FROM tmp.\"keys\" tk) k\n"
+               " INNER JOIN (SELECT st.\"id\", st.\"schema_id\", st.\"name\", 
st.\"system\" FROM sys.\"_tables\" st UNION ALL"
+                       " SELECT tt.\"id\", tt.\"schema_id\", tt.\"name\", 
tt.\"system\" FROM tmp.\"_tables\" tt) t ON k.\"table_id\" = t.\"id\"\n"
+               " INNER JOIN sys.\"schemas\" s ON t.\"schema_id\" = s.\"id\"\n"
+               " ORDER BY s.\"name\", t.\"name\", k.\"name\";\n"
+               "GRANT SELECT ON TABLE INFORMATION_SCHEMA.TABLE_CONSTRAINTS TO 
PUBLIC WITH GRANT OPTION;\n"
+
+               "CREATE VIEW INFORMATION_SCHEMA.SEQUENCES AS SELECT\n"
+               "  cast(NULL AS varchar(1)) AS SEQUENCE_CATALOG,\n"
+               "  s.\"name\" AS SEQUENCE_SCHEMA,\n"
+               "  sq.\"name\" AS SEQUENCE_NAME,\n"
+               "  cast('bigint' AS varchar(16)) AS DATA_TYPE,\n"
+               "  cast(64 AS SMALLINT) AS NUMERIC_PRECISION,\n"
+               "  cast(2 AS SMALLINT) AS NUMERIC_PRECISION_RADIX,\n"
+               "  cast(0 AS SMALLINT) AS NUMERIC_SCALE,\n"
+               "  sq.\"start\" AS START_VALUE,\n"
+               "  sq.\"minvalue\" AS MINIMUM_VALUE,\n"
+               "  sq.\"maxvalue\" AS MAXIMUM_VALUE,\n"
+               "  sq.\"increment\" AS INCREMENT,\n"
+               "  cast(sys.ifthenelse(sq.\"cycle\", 'YES', 'NO') AS 
varchar(3)) AS CYCLE_OPTION,\n"
+               "  cast(NULL AS varchar(16)) AS DECLARED_DATA_TYPE,\n"
+               "  cast(NULL AS SMALLINT) AS DECLARED_NUMERIC_PRECISION,\n"
+               "  cast(NULL AS SMALLINT) AS DECLARED_NUMERIC_SCALE,\n"
+               "  -- MonetDB column extensions\n"
+               "  sq.\"schema_id\" AS schema_id,\n"
+               "  sq.\"id\" AS sequence_id,\n"
+               "  get_value_for(s.\"name\", sq.\"name\") AS current_value,\n"
+               "  sq.\"cacheinc\" AS cacheinc,\n"
+               "  cm.\"remark\" AS comments\n"
+               " FROM sys.\"sequences\" sq\n"
+               " INNER JOIN sys.\"schemas\" s ON sq.\"schema_id\" = s.\"id\"\n"
+               " LEFT OUTER JOIN sys.\"comments\" cm ON sq.\"id\" = 
cm.\"id\"\n"
+               " ORDER BY s.\"name\", sq.\"name\";\n"
+               "GRANT SELECT ON TABLE INFORMATION_SCHEMA.SEQUENCES TO PUBLIC 
WITH GRANT OPTION;\n"
                "\n"
                "update sys._tables set system = true where system <> true\n"
                " and schema_id = (select s.id from sys.schemas s where s.name 
= 'information_schema')\n"
-               " and name in 
('character_sets','schemata','tables','views','columns');\n";
+               " and name in 
('character_sets','check_constraints','columns','schemata','sequences','table_constraints','tables','views');\n";
                printf("Running database upgrade commands:\n%s\n", cmds);
                fflush(stdout);
                err = SQLstatementIntern(c, cmds, "update", true, false, NULL);
diff --git a/sql/scripts/91_information_schema.sql 
b/sql/scripts/91_information_schema.sql
--- a/sql/scripts/91_information_schema.sql
+++ b/sql/scripts/91_information_schema.sql
@@ -19,8 +19,9 @@ CREATE SCHEMA INFORMATION_SCHEMA;
 COMMENT ON SCHEMA INFORMATION_SCHEMA IS 'ISO/IEC 9075-11 SQL/Schemata';
 
 -- The view CHARACTER_SETS identifies the character sets available in the 
database.
--- Since MonetDB does not support multiple character sets within one database, 
this
--- view only shows one encoding (UTF-8), which is the hardcoded database 
encoding.
+-- MonetDB has a hardcoded character set encoding (UTF-8) for all character 
data.
+-- It does not support multiple or alternative character sets, hence this view
+-- only shows one encoding: UTF-8.
 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,
@@ -127,15 +128,15 @@ CREATE VIEW INFORMATION_SCHEMA.COLUMNS A
   cast(c."number" +1 AS int) AS ORDINAL_POSITION,
   c."default" AS COLUMN_DEFAULT,
   cast(sys.ifthenelse(c."null", 'YES', 'NO') AS varchar(3)) AS IS_NULLABLE,
-  c."type" AS DATA_TYPE,
+  CASE c."type" WHEN 'day_interval' THEN 'interval day' WHEN 'month_interval' 
THEN 'interval month' WHEN 'sec_interval' THEN 'interval second' ELSE c."type" 
END AS DATA_TYPE,
   cast(sys.ifthenelse(c."type" IN 
('varchar','clob','char','json','url','xml'), c."type_digits", NULL) AS int) AS 
CHARACTER_MAXIMUM_LENGTH,
   cast(sys.ifthenelse(c."type" IN 
('varchar','clob','char','json','url','xml'), c."type_digits" * 3, NULL) AS 
int) AS CHARACTER_OCTET_LENGTH,
   cast(sys.ifthenelse(c."type" IN 
('int','smallint','tinyint','bigint','hugeint','float','real','double','decimal','numeric','oid'),
 c."type_digits", NULL) AS int) AS NUMERIC_PRECISION,
   cast(sys.ifthenelse(c."type" IN 
('int','smallint','tinyint','bigint','hugeint','float','real','double','oid'), 
2, sys.ifthenelse(c."type" IN ('decimal','numeric'), 10, NULL)) AS int) AS 
NUMERIC_PRECISION_RADIX,
   cast(sys.ifthenelse(c."type" IN 
('int','smallint','tinyint','bigint','hugeint','float','real','double','decimal','numeric','oid'),
 c."type_scale", NULL) AS int) AS NUMERIC_SCALE,
   cast(sys.ifthenelse(c."type" IN 
('date','timestamp','timestamptz','time','timetz'), c."type_scale" -1, NULL) AS 
int) AS DATETIME_PRECISION,
-  cast(CASE c."type" WHEN 'day_interval' THEN 'interval day' WHEN 
'month_interval' THEN 'interval month' WHEN 'sec_interval' THEN 'interval 
second' ELSE NULL END AS varchar(40)) AS INTERVAL_TYPE,
-  cast(sys.ifthenelse(c."type" IN 
('day_interval','month_interval','sec_interval'), c."type_scale" -1, NULL) AS 
int) AS INTERVAL_PRECISION,
+  cast(CASE c."type" WHEN 'day_interval' THEN 'interval day' WHEN 
'month_interval' THEN (CASE c."type_digits" WHEN 1 THEN 'interval year' WHEN 2 
THEN 'interval year to month' WHEN 3 THEN 'interval month' ELSE NULL END) WHEN 
'sec_interval' THEN (CASE c."type_digits" 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' ELSE NULL END) ELSE NULL END 
AS varchar(40)) AS INTERVAL_TYPE,
+  cast(CASE c."type" WHEN 'day_interval' THEN 0 WHEN 'month_interval' THEN 0 
WHEN 'sec_interval' THEN (sys.ifthenelse(c."type_digits" IN (7, 10, 12, 13), 
sys.ifthenelse(c."type_scale" > 0, c."type_scale", 3), 0)) ELSE NULL END AS 
int) AS INTERVAL_PRECISION,
   cast(NULL AS varchar(1)) AS CHARACTER_SET_CATALOG,
   cast(NULL AS varchar(1)) AS CHARACTER_SET_SCHEMA,
   cast(sys.ifthenelse(c."type" IN 
('varchar','clob','char','json','url','xml'), 'UTF-8', NULL) AS varchar(16)) AS 
CHARACTER_SET_NAME,
@@ -184,3 +185,73 @@ CREATE VIEW INFORMATION_SCHEMA.COLUMNS A
 
 GRANT SELECT ON TABLE INFORMATION_SCHEMA.COLUMNS TO PUBLIC WITH GRANT OPTION;
 
+-- The view CHECK_CONSTRAINTS contains all check constraints defined on a 
table,
+-- that are owned by a currently enabled role.
+-- This view is currently empty as MonetDB doesn't support CHECK constraints 
yet.
+CREATE VIEW INFORMATION_SCHEMA.CHECK_CONSTRAINTS AS SELECT
+  cast(NULL AS varchar(1)) AS CONSTRAINT_CATALOG,
+  cast(NULL AS varchar(1024)) AS CONSTRAINT_SCHEMA,
+  cast(NULL AS varchar(1024)) AS CONSTRAINT_NAME,
+  cast(NULL AS varchar(1024)) AS CHECK_CLAUSE
+ WHERE 1=0;
+
+GRANT SELECT ON TABLE INFORMATION_SCHEMA.CHECK_CONSTRAINTS TO PUBLIC WITH 
GRANT OPTION;
+
+-- The view TABLE_CONSTRAINTS contains all constraints belonging to tables
+-- that the current user owns or has some privilege other than SELECT on.
+CREATE VIEW INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS SELECT
+  cast(NULL AS varchar(1)) AS CONSTRAINT_CATALOG,
+  s."name" AS CONSTRAINT_SCHEMA,
+  k."name" AS CONSTRAINT_NAME,
+  cast(NULL AS varchar(1)) AS TABLE_CATALOG,
+  s."name" AS TABLE_SCHEMA,
+  t."name" AS TABLE_NAME,
+  cast(CASE k."type" WHEN 0 THEN 'PRIMARY KEY' WHEN 1 THEN 'UNIQUE' WHEN 2 
THEN 'FOREIGN KEY' ELSE NULL END AS varchar(16)) AS CONSTRAINT_TYPE,
+  cast('NO' AS varchar(3)) AS IS_DEFERRABLE,
+  cast('NO' AS varchar(3)) AS INITIALLY_DEFERRED,
+  cast('YES' AS varchar(3)) AS  ENFORCED,
+  -- MonetDB column extensions
+  t."schema_id" AS schema_id,
+  t."id" AS table_id,
+  k."id" AS key_id,
+  k."type" AS key_type,
+  t."system" AS is_system
+ FROM (SELECT sk."id", sk."table_id", sk."name", sk."type" FROM sys."keys" sk 
UNION ALL SELECT tk."id", tk."table_id", tk."name", tk."type" FROM tmp."keys" 
tk) k
+ INNER JOIN (SELECT st."id", st."schema_id", st."name", st."system" FROM 
sys."_tables" st UNION ALL SELECT tt."id", tt."schema_id", tt."name", 
tt."system" FROM tmp."_tables" tt) t ON k."table_id" = t."id"
+ INNER JOIN sys."schemas" s ON t."schema_id" = s."id"
+ ORDER BY s."name", t."name", k."name";
+
+GRANT SELECT ON TABLE INFORMATION_SCHEMA.TABLE_CONSTRAINTS TO PUBLIC WITH 
GRANT OPTION;
+
+-- The view SEQUENCES contains all sequences defined in the current database.
+-- Only those sequences are shown that the current user has access to
+-- (by way of being the owner or having some privilege).
+CREATE VIEW INFORMATION_SCHEMA.SEQUENCES AS SELECT
+  cast(NULL AS varchar(1)) AS SEQUENCE_CATALOG,
+  s."name" AS SEQUENCE_SCHEMA,
+  sq."name" AS SEQUENCE_NAME,
+  cast('bigint' AS varchar(16)) AS DATA_TYPE,
+  cast(64 AS SMALLINT) AS NUMERIC_PRECISION,
+  cast(2 AS SMALLINT) AS NUMERIC_PRECISION_RADIX,
+  cast(0 AS SMALLINT) AS NUMERIC_SCALE,
+  sq."start" AS START_VALUE,
+  sq."minvalue" AS MINIMUM_VALUE,
+  sq."maxvalue" AS MAXIMUM_VALUE,
+  sq."increment" AS INCREMENT,
+  cast(sys.ifthenelse(sq."cycle", 'YES', 'NO') AS varchar(3)) AS CYCLE_OPTION,
+  cast(NULL AS varchar(16)) AS DECLARED_DATA_TYPE,
+  cast(NULL AS SMALLINT) AS DECLARED_NUMERIC_PRECISION,
+  cast(NULL AS SMALLINT) AS DECLARED_NUMERIC_SCALE,
+  -- MonetDB column extensions
+  sq."schema_id" AS schema_id,
+  sq."id" AS sequence_id,
+  get_value_for(s."name", sq."name") AS current_value,
+  sq."cacheinc" AS cacheinc,
+  cm."remark" AS comments
+ FROM sys."sequences" sq
+ INNER JOIN sys."schemas" s ON sq."schema_id" = s."id"
+ LEFT OUTER JOIN sys."comments" cm ON sq."id" = cm."id"
+ ORDER BY s."name", sq."name";
+
+GRANT SELECT ON TABLE INFORMATION_SCHEMA.SEQUENCES TO PUBLIC WITH GRANT OPTION;
+
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to