Changeset: f81a9bd3789b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f81a9bd3789b
Added Files:
sql/test/BugTracker-2015/Tests/All
sql/test/BugTracker-2015/Tests/inet-ordering.Bug-3646.sql
sql/test/BugTracker-2015/Tests/inet-ordering.Bug-3646.stable.err
sql/test/BugTracker-2015/Tests/inet-ordering.Bug-3646.stable.out
Modified Files:
clients/Tests/exports.stable.out
gdk/gdk.h
gdk/gdk_bbp.c
monetdb5/modules/atoms/inet.c
monetdb5/modules/atoms/inet.h
monetdb5/modules/atoms/inet.mal
Branch: Oct2014
Log Message:
Added inet.cmp function. We cannot rely on inherited lngCmp.
Unfortunately, we cannot trust the (rev)sorted flags on inet columns
in older databases, so we need to increment the BBP version number and
squash those flags when the database is upgraded.
This fixes bug 3646.
diffs (233 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1306,6 +1306,7 @@ str INET_inet(inet *d, inet *s);
str INET_isnil(bit *retval, inet *val);
str INETabbrev(str *retval, inet *val);
str INETbroadcast(inet *retval, inet *val);
+int INETcompare(inet *l, inet *r);
int INETfromString(str src, int *len, inet **retval);
str INEThost(str *retval, inet *val);
str INEThostmask(inet *retval, inet *val);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -961,7 +961,8 @@ typedef struct {
#define GDKLIBRARY_PRE_VARWIDTH 061023 /* backward compatible version */
#define GDKLIBRARY_CHR 061024 /* version that still had chr type */
#define GDKLIBRARY_SORTED_BYTE 061025 /* version that still had byte-sized
sorted flag */
-#define GDKLIBRARY 061026
+#define GDKLIBRARY_INET_COMPARE 061026 /* version with missing inet
cmp func */
+#define GDKLIBRARY 061027
typedef struct BAT {
/* static bat properties */
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -783,6 +783,11 @@ heapinit(COLrec *col, const char *buf, i
col->heap.newstorage = (storage_t) storage;
col->heap.farmid = BBPselectfarm(PERSISTENT, col->type, offheap);
col->heap.dirty = 0;
+ if (bbpversion <= GDKLIBRARY_INET_COMPARE && strcmp(type, "inet") == 0)
{
+ /* don't trust ordering information on inet columns */
+ col->sorted = 0;
+ col->revsorted = 0;
+ }
return n;
}
@@ -959,6 +964,7 @@ BBPheader(FILE *fp, oid *BBPoid, int *OI
exit(1);
}
if (bbpversion != GDKLIBRARY &&
+ bbpversion != GDKLIBRARY_INET_COMPARE &&
bbpversion != GDKLIBRARY_SORTED_BYTE &&
bbpversion != GDKLIBRARY_CHR &&
bbpversion != GDKLIBRARY_PRE_VARWIDTH) {
diff --git a/monetdb5/modules/atoms/inet.c b/monetdb5/modules/atoms/inet.c
--- a/monetdb5/modules/atoms/inet.c
+++ b/monetdb5/modules/atoms/inet.c
@@ -194,6 +194,22 @@ INETnew(inet *retval, str *in)
return (MAL_SUCCEED);
}
+int
+INETcompare(inet *l, inet *r)
+{
+ bit res = 0;
+ if (in_isnil(l))
+ return in_isnil(r) ? 0 : -1;
+ if (in_isnil(r))
+ return 1;
+ INET_comp_EQ(&res, l, r);
+ if (res)
+ return 0;
+ INET_comp_LT(&res, l, r);
+ if (res)
+ return -1;
+ return 1;
+}
/* === Operators === */
/**
diff --git a/monetdb5/modules/atoms/inet.h b/monetdb5/modules/atoms/inet.h
--- a/monetdb5/modules/atoms/inet.h
+++ b/monetdb5/modules/atoms/inet.h
@@ -53,6 +53,7 @@ typedef struct _inet {
inet_export int INETfromString(str src, int *len, inet **retval);
inet_export int INETtoString(str *retval, int *len, inet *handle);
+inet_export int INETcompare(inet *l, inet *r);
inet_export str INETnew(inet * retval, str *in);
inet_export str INET_isnil(bit *retval, inet * val);
inet_export str INET_comp_EQ(bit *retval, inet * val1, inet *val2);
diff --git a/monetdb5/modules/atoms/inet.mal b/monetdb5/modules/atoms/inet.mal
--- a/monetdb5/modules/atoms/inet.mal
+++ b/monetdb5/modules/atoms/inet.mal
@@ -17,6 +17,8 @@
atom inet:lng;
+command cmp() :int
+address INETcompare;
command fromstr()
address INETfromString
comment "Convert a string to an inet";
diff --git a/sql/test/BugTracker-2015/Tests/All
b/sql/test/BugTracker-2015/Tests/All
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2015/Tests/All
@@ -0,0 +1,1 @@
+inet-ordering.Bug-3646
diff --git a/sql/test/BugTracker-2015/Tests/inet-ordering.Bug-3646.sql
b/sql/test/BugTracker-2015/Tests/inet-ordering.Bug-3646.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2015/Tests/inet-ordering.Bug-3646.sql
@@ -0,0 +1,5 @@
+CREATE TABLE "testing" ( "addr" inet );
+INSERT INTO "testing" VALUES('192.168.0.1');
+INSERT INTO "testing" VALUES('255.255.255.0');
+SELECT * FROM "testing" ORDER BY addr;
+DROP TABLE "testing";
diff --git a/sql/test/BugTracker-2015/Tests/inet-ordering.Bug-3646.stable.err
b/sql/test/BugTracker-2015/Tests/inet-ordering.Bug-3646.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2015/Tests/inet-ordering.Bug-3646.stable.err
@@ -0,0 +1,37 @@
+stderr of test 'inet-ordering.Bug-3646` in directory
'sql/test/BugTracker-2015` itself:
+
+
+# 14:08:01 >
+# 14:08:01 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=30627" "--set"
"mapi_usock=/var/tmp/mtest-13903/.s.monetdb.30627" "--set" "monet_prompt="
"--forcemito" "--set" "mal_listing=2"
"--dbpath=/ufs/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2015"
"--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 14:08:01 >
+
+# builtin opt gdk_dbpath = /ufs/sjoerd/Monet-stable/var/monetdb5/dbfarm/demo
+# builtin opt gdk_debug = 0
+# builtin opt gdk_vmtrim = no
+# builtin opt monet_prompt = >
+# builtin opt monet_daemon = no
+# builtin opt mapi_port = 50000
+# builtin opt mapi_open = false
+# builtin opt mapi_autosense = false
+# builtin opt sql_optimizer = default_pipe
+# builtin opt sql_debug = 0
+# cmdline opt gdk_nr_threads = 0
+# cmdline opt mapi_open = true
+# cmdline opt mapi_port = 30627
+# cmdline opt mapi_usock = /var/tmp/mtest-13903/.s.monetdb.30627
+# cmdline opt monet_prompt =
+# cmdline opt mal_listing = 2
+# cmdline opt gdk_dbpath =
/ufs/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2015
+# cmdline opt mal_listing = 0
+# cmdline opt embedded_r = yes
+# cmdline opt gdk_debug = 536870922
+
+# 14:08:02 >
+# 14:08:02 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-13903" "--port=30627"
+# 14:08:02 >
+
+
+# 14:08:02 >
+# 14:08:02 > "Done."
+# 14:08:02 >
+
diff --git a/sql/test/BugTracker-2015/Tests/inet-ordering.Bug-3646.stable.out
b/sql/test/BugTracker-2015/Tests/inet-ordering.Bug-3646.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2015/Tests/inet-ordering.Bug-3646.stable.out
@@ -0,0 +1,74 @@
+stdout of test 'inet-ordering.Bug-3646` in directory
'sql/test/BugTracker-2015` itself:
+
+
+# 14:08:01 >
+# 14:08:01 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=30627" "--set"
"mapi_usock=/var/tmp/mtest-13903/.s.monetdb.30627" "--set" "monet_prompt="
"--forcemito" "--set" "mal_listing=2"
"--dbpath=/ufs/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2015"
"--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 14:08:01 >
+
+# MonetDB 5 server v11.19.8 (hg id: 79641de9748d+)
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2015', using 8 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically
linked
+# Found 15.590 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://madrid.ins.cwi.nl:30627/
+# Listening for UNIX domain connection requests on
mapi:monetdb:///var/tmp/mtest-13903/.s.monetdb.30627
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+# MonetDB/R module loaded
+
+Ready.
+# SQL catalog created, loading sql scripts once
+# loading sql script: 09_like.sql
+# loading sql script: 10_math.sql
+# loading sql script: 11_times.sql
+# loading sql script: 12_url.sql
+# loading sql script: 13_date.sql
+# loading sql script: 14_inet.sql
+# loading sql script: 15_querylog.sql
+# loading sql script: 16_tracelog.sql
+# loading sql script: 19_cluster.sql
+# loading sql script: 20_vacuum.sql
+# loading sql script: 21_dependency_functions.sql
+# loading sql script: 22_clients.sql
+# loading sql script: 23_skyserver.sql
+# loading sql script: 24_zorder.sql
+# loading sql script: 25_debug.sql
+# loading sql script: 26_sysmon.sql
+# loading sql script: 39_analytics.sql
+# loading sql script: 40_geom.sql
+# loading sql script: 40_json.sql
+# loading sql script: 41_jsonstore.sql
+# loading sql script: 45_uuid.sql
+# loading sql script: 46_gsl.sql
+# loading sql script: 75_storagemodel.sql
+# loading sql script: 80_statistics.sql
+# loading sql script: 80_udf.sql
+# loading sql script: 85_bam.sql
+# loading sql script: 90_generator.sql
+# loading sql script: 99_system.sql
+
+# 14:08:02 >
+# 14:08:02 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-13903" "--port=30627"
+# 14:08:02 >
+
+#CREATE TABLE "testing" ( "addr" inet );
+#INSERT INTO "testing" VALUES('192.168.0.1');
+[ 1 ]
+#INSERT INTO "testing" VALUES('255.255.255.0');
+[ 1 ]
+#SELECT * FROM "testing" ORDER BY addr;
+% sys.testing # table_name
+% addr # name
+% inet # type
+% 0 # length
+[ 192.168.0.1 ]
+[ 255.255.255.0 ]
+#DROP TABLE "testing";
+
+# 14:08:02 >
+# 14:08:02 > "Done."
+# 14:08:02 >
+
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list