Changeset: 9511507e36db for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9511507e36db
Modified Files:
sql/common/sql_types.c
Branch: unlock
Log Message:
merged with default
diffs (75 lines):
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -98,7 +98,7 @@ static int convert_matrix[EC_MAX][EC_MAX
/* EC_BIT */ { 0, 0, 1, 1, 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0 },
/* EC_CHAR */ { 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2 },
/* EC_STRING */ { 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2 },
-/* EC_BLOB */ { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0 },
+/* EC_BLOB */ { 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0 },
/* EC_POS */ { 0, 0, 2, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
0 },
/* EC_NUM */ { 0, 0, 2, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
0 },
/* EC_MONTH*/ { 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0 },
@@ -763,9 +763,10 @@ sqltypeinit( sql_allocator *sa)
sql_create_alias(sa, BIT->sqlname, "BOOL");
strings = t;
+ /* create clob type first, so functions by default will bind to the
clob version which doesn't require length validation on some cases */
+ STR = *t++ = sql_create_type(sa, "CLOB", 0, 0, 0, EC_STRING, "str");
+ *t++ = sql_create_type(sa, "VARCHAR", 0, 0, 0, EC_STRING, "str");
*t++ = sql_create_type(sa, "CHAR", 0, 0, 0, EC_CHAR, "str");
- STR = *t++ = sql_create_type(sa, "VARCHAR", 0, 0, 0, EC_STRING, "str");
- *t++ = sql_create_type(sa, "CLOB", 0, 0, 0, EC_STRING, "str");
numerical = t;
#if SIZEOF_OID == SIZEOF_INT
diff --git a/sql/server/sql_semantic.c b/sql/server/sql_semantic.c
--- a/sql/server/sql_semantic.c
+++ b/sql/server/sql_semantic.c
@@ -1035,8 +1035,9 @@ supertype(sql_subtype *super, sql_subtyp
sql_subtype lsuper;
lsuper = *r;
+ /* EC_STRING class is superior to EC_CHAR */
if (i->type->base.id > r->type->base.id ||
- (EC_VARCHAR(i->type->eclass) && !EC_VARCHAR(r->type->eclass))) {
+ (EC_VARCHAR(i->type->eclass) && !EC_VARCHAR(r->type->eclass)) ||
i->type->eclass == EC_STRING) {
lsuper = *i;
radix = i->type->radix;
tpe = i->type->sqlname;
diff --git
a/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.test
b/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.test
---
a/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.test
+++
b/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.test
@@ -185,7 +185,7 @@ top N (
| | | | ) [ "a3"."t3pkcol" HASHCOL = "table1"."t1cold113" ],
| | | | table("sys"."table12") [ "table12"."t12cola1" ] COUNT
| | | ) [ "table12"."t12cola1" = "table1"."t1cola1" ]
-| | ) [ (((((((((((((((char["table1"."t1cold1"] as "table1"."t1cold1") FILTER
"ilike" (char "%a%", char "")) or ((char["table1"."t1cola1"] as
"table1"."t1cola1") FILTER "ilike" (char "%a%", char ""))) or
((char["table1"."t1colb1"] as "table1"."t1colb1") FILTER "ilike" (char "%a%",
char ""))) or ((char["table1"."t1cola11"] as "table1"."t1cola11") FILTER
"ilike" (char "%business%", char ""))) or ("table1"."t1colc91" >= timestamp(7)
"2016-03-21 05:00:00.000000")) or ("table1"."t1cola101" = tinyint "1")) or
((char["table1"."t1cola12"] as "table1"."t1cola12") FILTER "ilike" (char
"%Vijay%", char ""))) or ((char["table2"."t2cola1"] as "table2"."t2cola1") !
FILTER "ilike" (char "%gmail%", char ""), (char["table2"."t2cola1"] as
"table2"."t2cola1") ! FILTER "ilike" (char "%yahoo%", char ""))) or
((char["table2"."t2cola1"] as "table2"."t2cola1") FILTER "ilike" (char
"%efequitygroup.com%", char ""))) or ("table4"."t4cola1" = clob "Customer")) or
("table4"."t4cola2" ! * = clob "NULL")) or ("tab
le2"."t2cola81" >= date "2009-08-31")) or ((("table5"."t5cola1" = clob "BAT")
or ((char["table5"."t5cola2"] as "table5"."t5cola2") FILTER "ilike" (char
"%AUSTRALIA%", char ""))) or ((char["table5"."t5cola2"] as "table5"."t5cola2")
FILTER "ilike" (char "%Monet%", char ""), "table5"."t5cola3" = clob "Facebook",
"table5"."t5cola5" = clob "new", "table5"."t5cola81" > date "2015-07-30"))) or
((("table10"."t10cola1" != clob "Completed", "table9"."t9cola1" = clob "Tasks",
"table9"."t9cola91" >= timestamp(7) "2012-01-01 04:32:27.000000",
"table10"."t10cola91" <= timestamp(7) "2013-01-01 04:32:27.000000") or
("table9"."t9cola1" = clob "Events", timestamp(7) "2012-01-01 04:32:27.000000"
<= "table11"."t11cola91" <= timestamp(7) "2013-01-01 04:32:27.000000" BETWEEN
)) or ("table9"."t9cola1" = clob "Calls", timestamp(7) "2012-01-01
04:32:27.000000" <= "table10"."t10cola91" <= timestamp(7) "2013-01-01
04:32:27.000000" BETWEEN )), "table1"."t1cold111" in (bigint
"15842000014793046" as "%2"."%2", b
igint "15842000017701488" as "%3"."%3", bigint "15842000000024019" as
"%4"."%4", bigint "15842000000074007" as "%5"."%5", bigint "15842000009358096"
as "%6"."%6", bigint "15842000010487625" as "%7"."%7", bigint
"15842000006731919" as "%10"."%10", bigint "15842000002590112" as "%11"."%11",
bigint "15842000000019001" as "%12"."%12", bigint "15842000014923682" as
"%13"."%13", bigint "15842000027547249" as "%14"."%14")) or
("table12"."t12cola1" in (clob[bigint "15842000280111951"] NOT NULL,
clob[bigint "15842000280163015"] NOT NULL)) ]
+| | ) [ ((((((((((((((("table1"."t1cold1") FILTER "ilike" (clob "%a%", clob
"")) or (("table1"."t1cola1") FILTER "ilike" (clob "%a%", clob ""))) or
(("table1"."t1colb1") FILTER "ilike" (clob "%a%", clob ""))) or
(("table1"."t1cola11") FILTER "ilike" (clob "%business%", clob ""))) or
("table1"."t1colc91" >= timestamp(7) "2016-03-21 05:00:00.000000")) or
("table1"."t1cola101" = tinyint "1")) or (("table1"."t1cola12") FILTER "ilike"
(clob "%Vijay%", clob ""))) or (("table2"."t2cola1") ! FILTER "ilike" (clob
"%gmail%", clob ""), ("table2"."t2cola1") ! FILTER "ilike" (clob "%yahoo%",
clob ""))) or (("table2"."t2cola1") FILTER "ilike" (clob "%efequitygroup.com%",
clob ""))) or ("table4"."t4cola1" = clob "Customer")) or ("table4"."t4cola2" !
* = clob "NULL")) or ("table2"."t2cola81" >= date "2009-08-31")) or
((("table5"."t5cola1" = clob "BAT") or (("table5"."t5cola2") FILTER "ilike"
(clob "%AUSTRALIA%", clob ""))) or (("table5"."t5cola2") FILTER "ilike" (clob
"%Monet%", clob ""), "table5".
"t5cola3" = clob "Facebook", "table5"."t5cola5" = clob "new",
"table5"."t5cola81" > date "2015-07-30"))) or ((("table10"."t10cola1" != clob
"Completed", "table9"."t9cola1" = clob "Tasks", "table9"."t9cola91" >=
timestamp(7) "2012-01-01 04:32:27.000000", "table10"."t10cola91" <=
timestamp(7) "2013-01-01 04:32:27.000000") or ("table9"."t9cola1" = clob
"Events", timestamp(7) "2012-01-01 04:32:27.000000" <= "table11"."t11cola91" <=
timestamp(7) "2013-01-01 04:32:27.000000" BETWEEN )) or ("table9"."t9cola1" =
clob "Calls", timestamp(7) "2012-01-01 04:32:27.000000" <=
"table10"."t10cola91" <= timestamp(7) "2013-01-01 04:32:27.000000" BETWEEN )),
"table1"."t1cold111" in (bigint "15842000014793046" as "%2"."%2", bigint
"15842000017701488" as "%3"."%3", bigint "15842000000024019" as "%4"."%4",
bigint "15842000000074007" as "%5"."%5", bigint "15842000009358096" as
"%6"."%6", bigint "15842000010487625" as "%7"."%7", bigint "15842000006731919"
as "%10"."%10", bigint "15842000002590112" as "%11"
."%11", bigint "15842000000019001" as "%12"."%12", bigint "15842000014923682"
as "%13"."%13", bigint "15842000027547249" as "%14"."%14")) or
("table12"."t12cola1" in (clob[bigint "15842000280111951"] NOT NULL,
clob[bigint "15842000280163015"] NOT NULL)) ]
| ) [ "table1"."t1pkcol" NOT NULL HASHCOL , "table1"."t1cola82",
"table2"."t2cola10", "table1"."t1cola1", "table1"."t1cola91", "a1"."t3cola1" ]
[ "table2"."t2cola82" NULLS LAST ]
) [ bigint "10", bigint "0" ]
diff --git
a/sql/test/prepare/Tests/prepare_doesnot_like_LIKE.SF-1234205.stable.out
b/sql/test/prepare/Tests/prepare_doesnot_like_LIKE.SF-1234205.stable.out
--- a/sql/test/prepare/Tests/prepare_doesnot_like_LIKE.SF-1234205.stable.out
+++ b/sql/test/prepare/Tests/prepare_doesnot_like_LIKE.SF-1234205.stable.out
@@ -25,7 +25,7 @@ stdout of test 'prepare_doesnot_like_LIK
% varchar, int, int, str, str, str # type
% 7, 4, 1, 0, 8, 4 # length
[ "varchar", 1024, 0, "", "t1234205", "name" ]
-[ "char", 0, 0, NULL, NULL, NULL ]
+[ "clob", 0, 0, NULL, NULL, NULL ]
#execute 3 ('%');
% sys.t1234205 # table_name
% name # name
diff --git a/sql/test/prepare/Tests/prepare_unop_crash.Bug-3653.stable.out
b/sql/test/prepare/Tests/prepare_unop_crash.Bug-3653.stable.out
--- a/sql/test/prepare/Tests/prepare_unop_crash.Bug-3653.stable.out
+++ b/sql/test/prepare/Tests/prepare_unop_crash.Bug-3653.stable.out
@@ -31,7 +31,7 @@ stdout of test 'prepare_unop_crash.Bug-3
% varchar, int, int, str, str, str # type
% 4, 2, 1, 0, 6, 2 # length
[ "int", 32, 0, "", "tables", "id" ]
-[ "clob", 0, 0, NULL, NULL, NULL ]
+[ "char", 0, 0, NULL, NULL, NULL ]
# 08:58:49 >
# 08:58:49 > "Done."
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list