Changeset: 7e47f81a6416 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7e47f81a6416
Modified Files:
        clients/mapiclient/dump.c
        sql/test/Dump/Tests/dump-again.SQL.py
        sql/test/Dump/Tests/dump-again.stable.out
Branch: Mar2018
Log Message:

Get dumping using inserts to work for all sorts of types.
Not the most efficient solution...


diffs (72 lines):

diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -1268,7 +1268,36 @@ dump_table_data(Mapi mid, const char *sc
                        s = mapi_fetch_field(hdl, i);
                        if (s == NULL)
                                mnstr_printf(toConsole, "NULL");
-                       else if (string[i]) {
+                       else if (useInserts) {
+                               const char *tp = mapi_get_type(hdl, i);
+                               if (strcmp(tp, "sec_interval") == 0) {
+                                       const char *p = strchr(s, '.');
+                                       if (p == NULL)
+                                               p = s + strlen(s);
+                                       mnstr_printf(toConsole, "INTERVAL 
'%.*s' SECOND", (int) (p - s), s);
+                               } else if (strcmp(tp, "month_interval") == 0)
+                                       mnstr_printf(toConsole, "INTERVAL '%s' 
MONTH", s);
+                               else if (strcmp(tp, "timestamptz") == 0)
+                                       mnstr_printf(toConsole, "TIMESTAMP WITH 
TIME ZONE '%s'", s);
+                               else if (strcmp(tp, "timestamp") == 0)
+                                       mnstr_printf(toConsole, "TIMESTAMP 
'%s'", s);
+                               else if (strcmp(tp, "timetz") == 0)
+                                       mnstr_printf(toConsole, "TIME WITH TIME 
ZONE '%s'", s);
+                               else if (strcmp(tp, "time") == 0)
+                                       mnstr_printf(toConsole, "TIME '%s'", s);
+                               else if (strcmp(tp, "date") == 0)
+                                       mnstr_printf(toConsole, "DATE '%s'", s);
+                               else if (strcmp(tp, "blob") == 0)
+                                       mnstr_printf(toConsole, "BINARY LARGE 
OBJECT '%s'", s);
+                               else if (strcmp(tp, "inet") == 0 ||
+                                        strcmp(tp, "json") == 0 ||
+                                        strcmp(tp, "url") == 0 ||
+                                        strcmp(tp, "uuid") == 0 ||
+                                        string[i])
+                                       quoted_print(toConsole, s, true);
+                               else
+                                       mnstr_printf(toConsole, "%s", s);
+                       } else if (string[i]) {
                                /* write double or single-quoted
                                   string with certain characters
                                   escaped */
diff --git a/sql/test/Dump/Tests/dump-again.SQL.py 
b/sql/test/Dump/Tests/dump-again.SQL.py
--- a/sql/test/Dump/Tests/dump-again.SQL.py
+++ b/sql/test/Dump/Tests/dump-again.SQL.py
@@ -7,7 +7,6 @@ except ImportError:
 p = process.client('sqldump', args = ['--inserts'], stdout = process.PIPE, 
stderr = process.PIPE)
 dump, err = p.communicate()
 
-print(os.path.join(os.environ['TSTTRGDIR'], 'dumpoutput2.sql'))
 f = open(os.path.join(os.environ['TSTTRGDIR'], 'dumpoutput2.sql'), 'w')
 f.write(dump)
 f.close()
diff --git a/sql/test/Dump/Tests/dump-again.stable.out 
b/sql/test/Dump/Tests/dump-again.stable.out
--- a/sql/test/Dump/Tests/dump-again.stable.out
+++ b/sql/test/Dump/Tests/dump-again.stable.out
@@ -24,7 +24,6 @@ Ready.
 # 22:27:57 >  "/usr/bin/python" "dump-again.SQL.py" "dump-again"
 # 22:27:57 >  
 
-/home/sjoerd/@Monet-stable/mTests/sql/test/Dump/dumpoutput2.sql
 START TRANSACTION;
 CREATE SEQUENCE "sys"."test_seq" AS INTEGER;
 SET SCHEMA "sys";
@@ -88,7 +87,7 @@ CREATE TABLE "sys"."typestest" (
        "url55"          URL(55),
        "uuid"           UUID
 );
-INSERT INTO "sys"."typestest" VALUES (true, 10, 10000, 1000000, 10000000000, 
1e+30, 1e+20, 1.000, 123456789, 12345.678, 3.1415, 3.1415, 3.1415, DATE 
'2009-04-15', INTERVAL '2' YEAR, INTERVAL '1-06' YEAR TO MONTH, INTERVAL '3' 
MONTH, INTERVAL '20' DAY, INTERVAL '1 06' DAY TO HOUR, INTERVAL '1 09:20' DAY 
TO MINUTE, INTERVAL '1 03:46:40' DAY TO SECOND, INTERVAL '10' HOUR, INTERVAL 
'1:40' HOUR TO MINUTE, INTERVAL '0:33:20' HOUR TO SECOND, INTERVAL '10' MINUTE, 
INTERVAL '1:40' MINUTE TO SECOND, INTERVAL '10' SECOND, TIMESTAMP '1995-07-15 
07:30', TIMESTAMP '1995-07-15 07:30', TIMESTAMP '1995-07-15 07:30', TIMESTAMP 
'1995-07-15 07:30', TIME '07:30', TIME '07:30', TIME '07:30', TIME '07:30', 
BLOB '123456', BLOB '123456', '123456', '123456', 'x', 'varchar', '0123456789', 
'127.0.0.0', '127.127.127.255', '{"a": 123}', '{"b": 456}', 
'https://www.monetdb.org/Documentation/Manuals/SQLreference/BuiltinTypes', 
'https://www.monetdb.org/Documentation/Manuals/SQLreference/URLtype', 
'ae106ad4-81fd-4f1a
 -85e8-5efface60da4');
+INSERT INTO "sys"."typestest" VALUES (true, 10, 10000, 1000000, 10000000000, 
1e+30, 1e+20, 1.000, 123456789, 12345.678, 3.1415, 3.1415, 3.1415, DATE 
'2009-04-15', INTERVAL '24' MONTH, INTERVAL '18' MONTH, INTERVAL '3' MONTH, 
INTERVAL '1728000' SECOND, INTERVAL '108000' SECOND, INTERVAL '120000' SECOND, 
INTERVAL '100000' SECOND, INTERVAL '36000' SECOND, INTERVAL '6000' SECOND, 
INTERVAL '2000' SECOND, INTERVAL '600' SECOND, INTERVAL '100' SECOND, INTERVAL 
'10' SECOND, TIMESTAMP '1995-07-15 07:30:00.000000', TIMESTAMP '1995-07-15 
07:30:00.00000', TIMESTAMP WITH TIME ZONE '1995-07-15 07:30:00.000000+00:00', 
TIMESTAMP WITH TIME ZONE '1995-07-15 07:30:00.00000+00:00', TIME '07:30:00', 
TIME '07:30:00.00000', TIME WITH TIME ZONE '07:30:00+00:00', TIME WITH TIME 
ZONE '07:30:00.00000+00:00', BINARY LARGE OBJECT '123456', BINARY LARGE OBJECT 
'123456', '123456', '123456', 'x', 'varchar', '0123456789', '127.0.0.0', 
'127.127.127.255', '{"a": 123}', '{"b": 456}', 
'https://www.monetdb.org/Documenta
 tion/Manuals/SQLreference/BuiltinTypes', 
'https://www.monetdb.org/Documentation/Manuals/SQLreference/URLtype', 
'ae106ad4-81fd-4f1a-85e8-5efface60da4');
 CREATE TABLE "sys"."keytest1" (
        "key1" INTEGER       NOT NULL,
        "key2" INTEGER       NOT NULL,
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to