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