Changeset: 0f3adaa47291 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0f3adaa47291
Modified Files:
        dump.sql
Branch: monetdbe-proxy
Log Message:

Introduce merge table definitions including partition expressions.


diffs (73 lines):

diff --git a/dump.sql b/dump.sql
--- a/dump.sql
+++ b/dump.sql
@@ -112,6 +112,24 @@ CREATE FUNCTION dump_remote_table_expres
        RETURN SELECT ' ON ' || SQ(uri) || ' WITH USER ' || SQ(username) || ' 
ENCRYPTED PASSWORD ' || SQ("hash") FROM sys.remote_table_credentials(s ||'.' || 
t);
 END;
 
+CREATE FUNCTION dump_merge_table_partition_expressions(tid INT) RETURNS STRING
+BEGIN
+       RETURN SELECT
+                       'PARTITION BY ' ||
+                       CASE
+                               WHEN bit_and(tp.type, 2) = 2
+                               THEN 'VALUES '
+                       ELSE 'RANGE '
+                       END ||
+                       CASE
+                               WHEN bit_and(tp.type, 4) = 4 --column expression
+                               THEN 'ON ' || (SELECT DQ(c.name) FROM 
sys.columns c WHERE c.id = tp.column_id)
+                               ELSE 'USING ' || SQ(tp.expression) --generic 
expression
+                       END
+       FROM sys._tables t, sys.table_partitions tp
+       WHERE tp.table_id = tid;
+END;
+
 CREATE TEMPORARY TABLE dump_statements(o INT AUTO_INCREMENT, s STRING, PRIMARY 
KEY (o));
 
 CREATE PROCEDURE dump_database(describe BOOLEAN)
@@ -175,28 +193,31 @@ BEGIN
                WHERE sch.id = seq.schema_id;
 
        INSERT INTO dump_statements(s) --dump_create_tables
-               SELECT 'CREATE ' || ts.table_type_name || ' ' || DQ(s.name) || 
'.' || DQ(t.name) || dump_column_definition(t.id) || ';'
+               SELECT CASE
+                       WHEN t.type = 5 THEN
+                               'CREATE ' || ts.table_type_name || ' ' || 
DQ(s.name) || '.' || DQ(t.name) || dump_column_definition(t.id) || 
dump_remote_table_expressions(s.name, t.name) || ';'
+                       ELSE
+                               'CREATE ' || ts.table_type_name || ' ' || 
DQ(s.name) || '.' || DQ(t.name) || dump_column_definition(t.id) || ';'
+                       END
                FROM sys.schemas s, table_types ts, sys._tables t
-               WHERE t.type IN (0, 6)
+               WHERE t.type IN (0, 5, 6)
                        AND t.system = FALSE
                        AND s.id = t.schema_id
                        AND ts.table_type_id = t.type
                        AND s.name <> 'tmp';
 
-       INSERT INTO dump_statements(s) --dump_create_remote_tables
-               SELECT 'CREATE ' || ts.table_type_name || ' ' || DQ(s.name) || 
'.' || DQ(t.name) || dump_column_definition(t.id) || 
dump_remote_table_expressions(s.name, t.name) || ';'
+       INSERT INTO dump_statements(s) --dump_create_merge_tables
+               SELECT 'CREATE ' || ts.table_type_name || ' ' || DQ(s.name) || 
'.' || DQ(t.name) || dump_column_definition(t.id) || 
dump_merge_table_partition_expressions(t.id) || ';'
                FROM sys.schemas s, table_types ts, sys._tables t
-               WHERE t.type = 5
+               WHERE t.type = 3
                        AND t.system = FALSE
                        AND s.id = t.schema_id
                        AND ts.table_type_id = t.type
                        AND s.name <> 'tmp';
 
-       
-
        INSERT INTO dump_statements(s) SELECT * FROM 
dump_table_constraint_type();
 
-       --TODO PARTITION TABLE
+       --TODO MERGE TABLE
        --TODO COMMENTS ON TABLE
        --TODO functions
        --TODO CREATE INDEX + COMMENT
@@ -211,4 +232,3 @@ CALL dump_database(TRUE);
 SELECT  GROUP_CONCAT(s) OVER (PARTITION BY o range between current row and 
current row) FROM dump_statements;
 
 ROLLBACK;
-
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to