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

Fix _dump_table_data.


diffs (56 lines):

diff --git a/sql/scripts/76_dump.sql b/sql/scripts/76_dump.sql
--- a/sql/scripts/76_dump.sql
+++ b/sql/scripts/76_dump.sql
@@ -132,16 +132,14 @@ CREATE PROCEDURE EVAL(stmt STRING) EXTER
 
 CREATE FUNCTION esc(s STRING) RETURNS STRING BEGIN RETURN '"' || 
sys.replace(sys.replace(sys.replace(s,'\\', '\\\\'), '\n', '\\n'), '"', '\\"') 
|| '"'; END;
 
-CREATE FUNCTION esc_null(s STRING) RETURNS STRING BEGIN RETURN CASE WHEN s IS 
NULL THEN 'null' ELSE s END; END;
-
 CREATE FUNCTION prepare_esc(s STRING, t STRING) RETURNS STRING
 BEGIN
     RETURN
         CASE
             WHEN (t = 'varchar' OR t ='char' OR t = 'clob' OR t = 'json' OR t 
= 'geometry' OR t = 'url') THEN
-                'esc_null(esc(' || DQ(s) || '))'
+                'CASE WHEN ' || DQ(s) || ' IS NULL THEN ''null'' ELSE ' || 
'esc(' || DQ(s) || ')' || ' END'
             ELSE
-                'esc_null(' || DQ(s) || ')'
+                'CASE WHEN ' || DQ(s) || ' IS NULL THEN ''null'' ELSE CAST(' 
|| DQ(s) || ' AS STRING) END'
         END;
 END;
 
@@ -178,23 +176,14 @@ CREATE PROCEDURE _dump_table_data(sch ST
                        DECLARE M INT;
                        SET M = (SELECT MAX(c.id) FROM columns c, tables t 
WHERE c.table_id = t.id AND t.name = tbl);
 
-                       IF (k < M) THEN
+                       WHILE (k < M) DO
                                SET k = (SELECT MIN(c.id) FROM columns c, 
tables t WHERE c.table_id = t.id AND t.name = tbl AND c.id > k);
-                       END IF;
-
-                       WHILE (k < M) DO
                                SET cname = (SELECT c.name FROM sys.columns c 
WHERE c.id = k);
                                SET ctype = (SELECT c.type FROM sys.columns c 
WHERE c.id = k);
                                SET COPY_INTO_STMT = (COPY_INTO_STMT || ', ' || 
DQ(cname));
                                SET SELECT_DATA_STMT = SELECT_DATA_STMT || '|| 
''|'' || ' || prepare_esc(cname, ctype);
-                               SET k = (SELECT MIN(c.id ) FROM columns c, 
tables t WHERE c.table_id = t.id AND t.name = tbl AND c.id > k);
                        END WHILE;
 
-                       SET cname = (SELECT c.name FROM sys.columns c WHERE 
c.id = k);
-                       SET ctype = (SELECT c.type FROM sys.columns c WHERE 
c.id = k);
-                       SET COPY_INTO_STMT = (COPY_INTO_STMT || ', ' || 
DQ(cname));
-                       SET SELECT_DATA_STMT = SELECT_DATA_STMT || '|| ''|'' || 
' || prepare_esc(cname, ctype);
-
                        SET COPY_INTO_STMT = (COPY_INTO_STMT || ') FROM STDIN 
USING DELIMITERS ''|'',''\\n'',''"'';');
                        SET SELECT_DATA_STMT =  SELECT_DATA_STMT || ' FROM ' || 
FQN(sch, tbl);
 
@@ -303,7 +292,7 @@ BEGIN
        IF NOT DESCRIBE THEN
                CALL dump_table_data();
        END IF;
-
+       --TODO clean up code: factor in more dump functions
        --TODO loaders ,procedures, window and filter sys.functions.
        --TODO look into order dependent group_concat
        --TODO ADD upgrade code
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to