Changeset: 20f8777d533f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/20f8777d533f
Modified Files:
monetdb5/modules/atoms/str.c
sql/server/sql_scan.c
sql/test/BugTracker-2024/Tests/All
sql/test/copy/Tests/nonutf8.test
Branch: default
Log Message:
Merge with Dec2023 branch.
diffs (242 lines):
diff --git a/monetdb5/modules/atoms/str.c b/monetdb5/modules/atoms/str.c
--- a/monetdb5/modules/atoms/str.c
+++ b/monetdb5/modules/atoms/str.c
@@ -985,6 +985,7 @@ const struct UTF8_lower_upper {
{0x2C5C, 0x2C2C,},
{0x2C5D, 0x2C2D,},
{0x2C5E, 0x2C2E,},
+ {0x2C5F, 0x2C2F,},
{0x2C61, 0x2C60,},
{0x2C65, 0x023A,},
{0x2C66, 0x023E,},
@@ -1188,9 +1189,13 @@ const struct UTF8_lower_upper {
{0xA7BB, 0xA7BA,},
{0xA7BD, 0xA7BC,},
{0xA7BF, 0xA7BE,},
+ {0xA7C1, 0xA7C0,},
{0xA7C3, 0xA7C2,},
{0xA7C8, 0xA7C7,},
{0xA7CA, 0xA7C9,},
+ {0xA7D1, 0xA7D0,},
+ {0xA7D7, 0xA7D6,},
+ {0xA7D9, 0xA7D8,},
{0xA7F6, 0xA7F5,},
{0xAB53, 0xA7B3,},
{0xAB70, 0x13A0,},
@@ -1375,6 +1380,41 @@ const struct UTF8_lower_upper {
{0x104F9, 0x104D1,},
{0x104FA, 0x104D2,},
{0x104FB, 0x104D3,},
+ {0x10597, 0x10570,},
+ {0x10598, 0x10571,},
+ {0x10599, 0x10572,},
+ {0x1059A, 0x10573,},
+ {0x1059B, 0x10574,},
+ {0x1059C, 0x10575,},
+ {0x1059D, 0x10576,},
+ {0x1059E, 0x10577,},
+ {0x1059F, 0x10578,},
+ {0x105A0, 0x10579,},
+ {0x105A1, 0x1057A,},
+ {0x105A3, 0x1057C,},
+ {0x105A4, 0x1057D,},
+ {0x105A5, 0x1057E,},
+ {0x105A6, 0x1057F,},
+ {0x105A7, 0x10580,},
+ {0x105A8, 0x10581,},
+ {0x105A9, 0x10582,},
+ {0x105AA, 0x10583,},
+ {0x105AB, 0x10584,},
+ {0x105AC, 0x10585,},
+ {0x105AD, 0x10586,},
+ {0x105AE, 0x10587,},
+ {0x105AF, 0x10588,},
+ {0x105B0, 0x10589,},
+ {0x105B1, 0x1058A,},
+ {0x105B3, 0x1058C,},
+ {0x105B4, 0x1058D,},
+ {0x105B5, 0x1058E,},
+ {0x105B6, 0x1058F,},
+ {0x105B7, 0x10590,},
+ {0x105B8, 0x10591,},
+ {0x105B9, 0x10592,},
+ {0x105BB, 0x10594,},
+ {0x105BC, 0x10595,},
{0x10CC0, 0x10C80,},
{0x10CC1, 0x10C81,},
{0x10CC2, 0x10C82,},
@@ -2480,6 +2520,7 @@ const struct UTF8_lower_upper {
{0x2C2C, 0x2C5C,},
{0x2C2D, 0x2C5D,},
{0x2C2E, 0x2C5E,},
+ {0x2C2F, 0x2C5F,},
{0x2C60, 0x2C61,},
{0x2C62, 0x026B,},
{0x2C63, 0x1D7D,},
@@ -2660,12 +2701,16 @@ const struct UTF8_lower_upper {
{0xA7BA, 0xA7BB,},
{0xA7BC, 0xA7BD,},
{0xA7BE, 0xA7BF,},
+ {0xA7C0, 0xA7C1,},
{0xA7C2, 0xA7C3,},
{0xA7C4, 0xA794,},
{0xA7C5, 0x0282,},
{0xA7C6, 0x1D8E,},
{0xA7C7, 0xA7C8,},
{0xA7C9, 0xA7CA,},
+ {0xA7D0, 0xA7D1,},
+ {0xA7D6, 0xA7D7,},
+ {0xA7D8, 0xA7D9,},
{0xA7F5, 0xA7F6,},
{0xFF21, 0xFF41,},
{0xFF22, 0xFF42,},
@@ -2769,6 +2814,41 @@ const struct UTF8_lower_upper {
{0x104D1, 0x104F9,},
{0x104D2, 0x104FA,},
{0x104D3, 0x104FB,},
+ {0x10570, 0x10597,},
+ {0x10571, 0x10598,},
+ {0x10572, 0x10599,},
+ {0x10573, 0x1059A,},
+ {0x10574, 0x1059B,},
+ {0x10575, 0x1059C,},
+ {0x10576, 0x1059D,},
+ {0x10577, 0x1059E,},
+ {0x10578, 0x1059F,},
+ {0x10579, 0x105A0,},
+ {0x1057A, 0x105A1,},
+ {0x1057C, 0x105A3,},
+ {0x1057D, 0x105A4,},
+ {0x1057E, 0x105A5,},
+ {0x1057F, 0x105A6,},
+ {0x10580, 0x105A7,},
+ {0x10581, 0x105A8,},
+ {0x10582, 0x105A9,},
+ {0x10583, 0x105AA,},
+ {0x10584, 0x105AB,},
+ {0x10585, 0x105AC,},
+ {0x10586, 0x105AD,},
+ {0x10587, 0x105AE,},
+ {0x10588, 0x105AF,},
+ {0x10589, 0x105B0,},
+ {0x1058A, 0x105B1,},
+ {0x1058C, 0x105B3,},
+ {0x1058D, 0x105B4,},
+ {0x1058E, 0x105B5,},
+ {0x1058F, 0x105B6,},
+ {0x10590, 0x105B7,},
+ {0x10591, 0x105B8,},
+ {0x10592, 0x105B9,},
+ {0x10594, 0x105BB,},
+ {0x10595, 0x105BC,},
{0x10C80, 0x10CC0,},
{0x10C81, 0x10CC1,},
{0x10C82, 0x10CC2,},
diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c
--- a/sql/server/sql_scan.c
+++ b/sql/server/sql_scan.c
@@ -1504,9 +1504,12 @@ sql_get_next_token(YYSTYPE *yylval, void
case 'e':
case 'E':
assert(yylval->sval[1] == '\'');
- GDKstrFromStr((unsigned char *) str,
- (unsigned char *)
yylval->sval + 2,
- lc->yycur-lc->yysval - 2,
'\'');
+ if (GDKstrFromStr((unsigned char *) str,
+ (unsigned char *)
yylval->sval + 2,
+ lc->yycur-lc->yysval
- 2, '\'') < 0) {
+ sql_error(c, 1, SQLSTATE(42000) "%s",
GDKerrbuf);
+ return LEX_ERROR;
+ }
quote = '\'';
break;
case 'u':
@@ -1548,10 +1551,13 @@ sql_get_next_token(YYSTYPE *yylval, void
src++;
*dst = 0;
} else {
- GDKstrFromStr((unsigned char *)str,
- (unsigned char
*)yylval->sval + 1,
- lc->yycur -
lc->yysval - 1,
- '\'');
+ if (GDKstrFromStr((unsigned char *)str,
+ (unsigned
char *)yylval->sval + 1,
+ lc->yycur -
lc->yysval - 1,
+ '\'') < 0) {
+ sql_error(c, 1, SQLSTATE(42000) "%s",
GDKerrbuf);
+ return LEX_ERROR;
+ }
}
break;
}
diff --git a/sql/test/BugTracker-2024/Tests/All
b/sql/test/BugTracker-2024/Tests/All
--- a/sql/test/BugTracker-2024/Tests/All
+++ b/sql/test/BugTracker-2024/Tests/All
@@ -27,3 +27,4 @@ constant-expression-issue-7457
sign-issue-7458
contains-between-issue-7459
push_select_exp-issue-7460
+unicode-escape-7461
diff --git a/sql/test/BugTracker-2024/Tests/unicode-escape-7461.test
b/sql/test/BugTracker-2024/Tests/unicode-escape-7461.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/unicode-escape-7461.test
@@ -0,0 +1,30 @@
+statement ok
+CREATE TABLE t0(c0 BOOLEAN, c1 BOOLEAN, PRIMARY KEY(c0))
+
+statement ok
+CREATE TABLE t1(c0 INTEGER, c1 INT, PRIMARY KEY(c0))
+
+statement error
+INSERT INTO t0(c1) VALUES (-2041868105), (true)
+
+statement ok
+INSERT INTO t0(c1, c0) VALUES (-1820721628, -337528041)
+
+statement error
+INSERT INTO t0(c1) VALUES (true)
+
+statement ok
+INSERT INTO t1(c0) VALUES (true)
+
+statement ok
+SELECT * FROM t1, t0
+
+statement error
+SELECT * FROM t1, t0 WHERE (CASE t0.c0 WHEN (t0.c0 IN (((t1.c0)<=(true))))
THEN (((-953136241) IS NOT NULL) NOT BETWEEN (CASE true WHEN '_hf4{r' THEN
t0.c0 WHEN '\Uwc0g8g' THEN t1.c1 WHEN false THEN '' ELSE t1.c1 END ) AND
1239880767) ELSE t0.c1 END )
+
+statement ok
+DROP TABLE t0
+
+statement ok
+DROP TABLE t1
+
diff --git a/sql/test/copy/Tests/nonutf8.test b/sql/test/copy/Tests/nonutf8.test
--- a/sql/test/copy/Tests/nonutf8.test
+++ b/sql/test/copy/Tests/nonutf8.test
@@ -1,7 +1,7 @@
statement ok
create table nonutf8 (s string)
-statement error GDK reported error: GDKstrFromStr: not a proper UTF-8 sequence
+statement error !ERROR: GDKstrFromStr: not a proper UTF-8 sequence
insert into nonutf8 values
(E'\x7A\x77\x61\x61\x72\x20\x6C\x61\x6E\x67\x65\x20\x67\x6F\x6C\x66\x20\x70\x69\x65\x6B\x20\x2D\x64\x61\x6C\x20\xB1\x31\x30\x63\x6D\x20\x76\x61\x6B\x35')
statement error Failed to import table 'nonutf8', line 1: column 1 s:
'varchar' expected in
'\x7A\x77\x61\x61\x72\x20\x6C\x61\x6E\x67\x65\x20\x67\x6F\x6C\x66\x20\x70\x69\x65\x6B\x20\x2D\x64\x61\x6C\x20\xB1\x31\x30\x63\x6D\x20\x76\x61\x6B\x35\x0A\xB1\x31\x37\x20\x25'
diff --git a/tools/merovingian/daemon/argvcmds.c
b/tools/merovingian/daemon/argvcmds.c
--- a/tools/merovingian/daemon/argvcmds.c
+++ b/tools/merovingian/daemon/argvcmds.c
@@ -441,10 +441,9 @@ command_set(confkeyval *ckv, int argc, c
(meropid = atoi(buf)) != 0 &&
kill(meropid, SIGHUP) == -1)
{
- fprintf(stderr, "sending SIGHUP to monetdbd[%d] failed:
%s\n",
+ /* maybe monetdbd crashed and did not get the chance to
clean up */
+ fprintf(stderr, "WARNING: sending SIGHUP to
monetdbd[%d] failed: %s\n",
(int)meropid, strerror(errno));
- fclose(pfile);
- return(1);
}
fclose(pfile);
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]