Changeset: c539e073d383 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c539e073d383
Modified Files:
clients/Tests/MAL-signatures-hge.test
clients/Tests/MAL-signatures.test
clients/Tests/exports.stable.out
cmake/monetdb-findpackages.cmake
common/utils/mstring.h
gdk/CMakeLists.txt
gdk/gdk.h
gdk/gdk_aggr.c
gdk/gdk_align.c
gdk/gdk_atoms.c
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_bbp.c
gdk/gdk_calc.c
gdk/gdk_group.c
gdk/gdk_hash.c
gdk/gdk_heap.c
gdk/gdk_join.c
gdk/gdk_private.h
gdk/gdk_project.c
gdk/gdk_storage.c
gdk/gdk_string.c
gdk/gdk_system.h
gdk/gdk_utils.c
monetdb5/mal/CMakeLists.txt
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_namespace.h
monetdb5/modules/atoms/str.c
monetdb5/modules/mal/batExtensions.c
monetdb5/modules/mal/mat.c
monetdb5/modules/mal/pcre.c
monetdb5/modules/mal/pp_algebra.c
monetdb5/modules/mal/pp_hash.c
monetdb5/modules/mal/txtsim.c
monetdb5/optimizer/opt_mitosis.c
monetdb_config.h.in
sql/backends/monet5/CMakeLists.txt
sql/backends/monet5/copy.c
sql/backends/monet5/copy_convert.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_statement.c
sql/include/sql_catalog.h
sql/include/sql_relation.h
sql/server/sql_mvc.c
sql/server/sql_mvc.h
sql/server/sql_parser.y
sql/server/sql_scan.c
sql/storage/bat/bat_storage.c
sql/storage/bat/bat_storage.h
sql/storage/objectset.c
sql/storage/sql_catalog.c
sql/storage/sql_storage.h
sql/storage/store.c
sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-previous-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb/Tests/dump.stable.out
testing/Mtest.py.in
Branch: pp_hashjoin
Log Message:
merged with default
diffs (truncated from 13003 to 300 lines):
diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py
--- a/NT/mksqlwxs.py
+++ b/NT/mksqlwxs.py
@@ -162,7 +162,6 @@ def main():
vcpkg.format(r'bin\libxml2.dll'),
vcpkg.format(r'bin\lz4.dll'),
vcpkg.format(r'bin\pcre2-8.dll'),
- vcpkg.format(r'bin\xxhash.dll'),
vcpkg.format(r'bin\z.dll')])
id = comp(debug, id, 14,
[r'bin\mclient.pdb',
@@ -222,7 +221,6 @@ def main():
vcpkg.format(r'lib\lz4.lib'),
vcpkg.format(r'lib\lzma.lib'),
vcpkg.format(r'lib\pcre2-8.lib'),
- vcpkg.format(r'lib\xxhash.lib'),
vcpkg.format(r'lib\z.lib')])
print(r' </Directory>')
print(r' <Directory Id="share" Name="share">')
diff --git a/clients/Tests/MAL-signatures-hge.test
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -52884,6 +52884,11 @@ pattern sqlcatalog.create_user(X_0:str,
SQLcreate_user
Catalog operation create_user
sqlcatalog
+create_ustr
+pattern sqlcatalog.create_ustr(X_0:str, X_1:str, X_2:int):void
+SQLcreate_ustr
+Catalog operation create_ustr
+sqlcatalog
create_view
pattern sqlcatalog.create_view(X_0:str, X_1:str, X_2:ptr, X_3:int,
X_4:int):void
SQLcreate_view
@@ -52949,6 +52954,11 @@ pattern sqlcatalog.drop_user(X_0:str, X_
SQLdrop_user
Catalog operation drop_user
sqlcatalog
+drop_ustr
+pattern sqlcatalog.drop_ustr(X_0:str, X_1:str, X_2:int, X_3:int):void
+SQLdrop_ustr
+Catalog operation drop_ustr
+sqlcatalog
drop_view
pattern sqlcatalog.drop_view(X_0:str, X_1:str, X_2:int, X_3:int):void
SQLdrop_view
diff --git a/clients/Tests/MAL-signatures.test
b/clients/Tests/MAL-signatures.test
--- a/clients/Tests/MAL-signatures.test
+++ b/clients/Tests/MAL-signatures.test
@@ -40964,6 +40964,11 @@ pattern sqlcatalog.create_user(X_0:str,
SQLcreate_user
Catalog operation create_user
sqlcatalog
+create_ustr
+pattern sqlcatalog.create_ustr(X_0:str, X_1:str, X_2:int):void
+SQLcreate_ustr
+Catalog operation create_ustr
+sqlcatalog
create_view
pattern sqlcatalog.create_view(X_0:str, X_1:str, X_2:ptr, X_3:int,
X_4:int):void
SQLcreate_view
@@ -41029,6 +41034,11 @@ pattern sqlcatalog.drop_user(X_0:str, X_
SQLdrop_user
Catalog operation drop_user
sqlcatalog
+drop_ustr
+pattern sqlcatalog.drop_ustr(X_0:str, X_1:str, X_2:int, X_3:int):void
+SQLdrop_ustr
+Catalog operation drop_ustr
+sqlcatalog
drop_view
pattern sqlcatalog.drop_view(X_0:str, X_1:str, X_2:int, X_3:int):void
SQLdrop_view
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
@@ -113,6 +113,7 @@ gdk_return BATclear(BAT *b, bool force);
void BATcommit(BAT *b, BUN size);
BAT *BATconstant(oid hseq, int tt, const void *val, BUN cnt, role_t role);
BAT *BATconvert(BAT *b, BAT *s, int tp, uint8_t scale1, uint8_t scale2,
uint8_t precision);
+gdk_return BATconvert2ustr(BAT *b, BAT *bu)
__attribute__((__warn_unused_result__));
BUN BATcount_no_nil(BAT *b, BAT *s);
gdk_return BATdel(BAT *b, BAT *d) __attribute__((__warn_unused_result__));
BAT *BATdense(oid hseq, oid tseq, BUN cnt)
__attribute__((__warn_unused_result__));
@@ -393,7 +394,7 @@ bool MT_thread_init(void);
gdk_return MT_thread_init_add_callback(void (*init)(void *), void
(*destroy)(void *), void *data);
bool MT_thread_register(void);
void MT_thread_set_qry_ctx(QryCtx *ctx);
-void MT_thread_setalgorithm(const char *algo);
+void MT_thread_setalgorithm(const char *algo, const char *func);
void MT_thread_setallocator(allocator *ma);
void MT_thread_setdata(void *data);
void MT_thread_setlockwait(MT_Lock *lock);
@@ -910,6 +911,7 @@ const char create_tableRef[];
const char create_triggerRef[];
const char create_typeRef[];
const char create_userRef[];
+const char create_ustrRef[];
const char create_viewRef[];
const char crossproductRef[];
const char cume_distRef[];
@@ -944,6 +946,7 @@ const char drop_tableRef[];
const char drop_triggerRef[];
const char drop_typeRef[];
const char drop_userRef[];
+const char drop_ustrRef[];
const char drop_viewRef[];
void dumpModules(stream *out);
const char emptybindRef[];
@@ -1375,8 +1378,8 @@ char *prompt_getlogin(void);
struct dirent *readdir(DIR *dir);
void rewinddir(DIR *dir);
char *simple_prompt(const char *prompt, int maxlen, int echo, const char *def);
-size_t strlconcat(char *restrict dst, size_t n, const char *restrict src, ...)
__attribute__((__access__(write_only, 1, 2))) __attribute__(())
__attribute__((__sentinel__));
-ssize_t strtconcat(char *restrict dst, size_t n, const char *restrict src,
...) __attribute__((__access__(write_only, 1, 2))) __attribute__(())
__attribute__((__sentinel__));
+size_t strlconcat(char *restrict dst, size_t n, const char *restrict src, ...)
__attribute__((__access__(write_only, 1, 2))) __attribute__((__nonnull__(1)))
__attribute__((__sentinel__));
+ssize_t strtconcat(char *restrict dst, size_t n, const char *restrict src,
...) __attribute__((__access__(write_only, 1, 2)))
__attribute__((__nonnull__(1))) __attribute__((__sentinel__));
char *utf16toutf8(const uint16_t *src);
const uint8_t utf8d[364];
uint16_t *utf8toutf16(const char *src);
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -919,8 +919,13 @@ dump_column_definition(Mapi mid, stream
"c.type_digits, " /* 2 */
"c.type_scale, " /* 3 */
"c.\"null\", " /* 4 */
- "c.number " /* 5 */
+ "c.number, " /* 5 */
+ "us.name, " /* 6 */
+ "uo.name " /* 7 */
"FROM sys._columns c "
+ "LEFT OUTER JOIN sys.dependencies d ON c.id =
d.depend_id "
+ "LEFT OUTER JOIN sys.objects uo ON d.id =
uo.id "
+ "LEFT OUTER JOIN sys.schemas us ON uo.nr =
us.id "
"WHERE c.table_id = %s "
"ORDER BY c.number", tid);
else
@@ -930,8 +935,13 @@ dump_column_definition(Mapi mid, stream
"c.type_digits, " /* 2 */
"c.type_scale, " /* 3 */
"c.\"null\", " /* 4 */
- "c.number " /* 5 */
- "FROM sys._columns c, "
+ "c.number, " /* 5 */
+ "us.name, " /* 6 */
+ "uo.name " /* 7 */
+ "FROM sys._columns c "
+ "LEFT OUTER JOIN sys.dependencies d ON c.id =
d.depend_id "
+ "LEFT OUTER JOIN sys.objects uo ON d.id =
uo.id "
+ "LEFT OUTER JOIN sys.schemas us ON uo.nr =
us.id, "
"sys._tables t, "
"sys.schemas s "
"WHERE c.table_id = t.id "
@@ -950,6 +960,8 @@ dump_column_definition(Mapi mid, stream
char *c_type_digits = strdup(mapi_fetch_field(hdl, 2));
char *c_type_scale = strdup(mapi_fetch_field(hdl, 3));
const char *c_null = mapi_fetch_field(hdl, 4);
+ char *s_name = mapi_fetch_field(hdl, 6);
+ char *o_name = mapi_fetch_field(hdl, 7);
int space;
if (mapi_error(mid) || !c_type || !c_type_digits ||
!c_type_scale) {
@@ -958,6 +970,15 @@ dump_column_definition(Mapi mid, stream
free(c_type_scale);
goto bailout;
}
+ if ((s_name && (s_name = strdup(s_name)) == NULL) ||
+ (o_name && (o_name = strdup(o_name)) == NULL)) {
+ free(c_type);
+ free(c_type_digits);
+ free(c_type_scale);
+ free(s_name);
+ free(o_name);
+ goto bailout;
+ }
if (cnt)
mnstr_printf(sqlf, ",\n");
@@ -995,8 +1016,14 @@ dump_column_definition(Mapi mid, stream
}
space = dump_type(mid, sqlf, c_type, c_type_digits,
c_type_scale, hashge);
if (strcmp(c_null, "false") == 0) {
- mnstr_printf(sqlf, "%*s NOT NULL",
- CAP(13 - space), "");
+ mnstr_printf(sqlf, "%*s NOT NULL", CAP(13 - space), "");
+ space = 13;
+ }
+ if (s_name && o_name) {
+ mnstr_printf(sqlf, "%*s DISTINCT STRING COLUMN ",
+ CAP(13 -
space), "");
+ dquoted_print(sqlf, s_name, ".");
+ dquoted_print(sqlf, o_name, NULL);
space = 13;
}
@@ -1004,6 +1031,8 @@ dump_column_definition(Mapi mid, stream
free(c_type);
free(c_type_digits);
free(c_type_scale);
+ free(s_name);
+ free(o_name);
if (mnstr_errnr(sqlf) != MNSTR_NO__ERROR)
goto bailout;
}
@@ -1953,7 +1982,7 @@ dump_table_storage(Mapi mid, const char
snprintf(query, maxquerylen,
"SELECT name, storage FROM sys._columns "
- "WHERE storage IS NOT NULL "
+ "WHERE storage NOT LIKE 'USTR%%' "
"AND table_id = (SELECT id FROM sys._tables WHERE name
= '%s' "
"AND schema_id = (SELECT id FROM sys.schemas WHERE
name = '%s'))",
t, s);
@@ -2001,27 +2030,30 @@ dump_table_access(Mapi mid, const char *
snprintf(query, maxquerylen,
"SELECT t.access FROM sys._tables t, sys.schemas s "
- "WHERE s.name = '%s' AND t.schema_id = s.id AND t.name
= '%s'",
+ "WHERE s.name = '%s' AND t.schema_id = s.id AND t.name
= '%s' AND t.access in (1, 2)",
s, t);
if ((hdl = mapi_query(mid, query)) == NULL || mapi_error(mid))
goto bailout;
- if (mapi_rows_affected(hdl) != 1) {
- if (mapi_rows_affected(hdl) == 0)
- fprintf(stderr, "table %s.%s does not exist\n", schema,
tname);
- else
- fprintf(stderr, "table %s.%s is not unique\n", schema,
tname);
+ switch (mapi_rows_affected(hdl)) {
+ case 0:
+ rc = 0;
+ break;
+ case 1:
+ while ((mapi_fetch_row(hdl)) != 0) {
+ const char *access = mapi_fetch_field(hdl, 0);
+ if (access && (*access == '1' || *access == '2')) {
+ mnstr_printf(sqlf, "ALTER TABLE ");
+ dquoted_print(sqlf, schema, ".");
+ dquoted_print(sqlf, tname, " ");
+ mnstr_printf(sqlf, "SET %s ONLY;\n", *access ==
'1' ? "READ" : "INSERT");
+ }
+ }
+ rc = 0; /* success */
+ break;
+ default:
+ fprintf(stderr, "table %s.%s is not unique\n", schema, tname);
goto bailout;
}
- while ((mapi_fetch_row(hdl)) != 0) {
- const char *access = mapi_fetch_field(hdl, 0);
- if (access && (*access == '1' || *access == '2')) {
- mnstr_printf(sqlf, "ALTER TABLE ");
- dquoted_print(sqlf, schema, ".");
- dquoted_print(sqlf, tname, " ");
- mnstr_printf(sqlf, "SET %s ONLY;\n", *access == '1' ?
"READ" : "INSERT");
- }
- }
- rc = 0; /* success */
bailout:
free(query);
free(s);
@@ -2206,12 +2238,12 @@ dump_table(Mapi mid, const char *schema,
}
rc = describe_table(mid, schema, tname, sqlf, foreign, databaseDump);
- if (rc == 0)
- rc = dump_table_storage(mid, schema, tname, sqlf);
if (rc == 0 && !describe)
rc = dump_table_data(mid, schema, tname, sqlf, ddir, ext,
useInserts, noescape);
if (rc == 0)
rc = dump_table_access(mid, schema, tname, sqlf);
+ if (rc == 0)
+ rc = dump_table_storage(mid, schema, tname, sqlf);
if (rc == 0 && !databaseDump)
rc = dump_table_defaults(mid, schema, tname, sqlf);
doreturn:
@@ -2796,6 +2828,8 @@ dump_database(Mapi mid, stream *sqlf, co
"ORDER BY sch.name, seq.name";
static const char sequences2[] =
"SELECT * FROM sys.describe_sequences ORDER BY sch, seq";
+ static const char ustrs[] =
+ "SELECT s.name, o.name FROM sys.objects o, sys.schemas s WHERE
o.nr = s.id ORDER BY s.name, o.name";
static const char tables[] =
"SELECT t.id AS id, "
"s.name AS sname, "
@@ -3086,6 +3120,21 @@ dump_database(Mapi mid, stream *sqlf, co
mapi_close_handle(hdl);
hdl = NULL;
+ if ((hdl = mapi_query(mid, ustrs)) == NULL || mapi_error(mid))
+ goto bailout;
+
+ while (rc == 0 &&
+ mnstr_errnr(sqlf) == MNSTR_NO__ERROR &&
+ mapi_fetch_row(hdl) != 0) {
+ const char *sname = mapi_fetch_field(hdl, 0);
+ const char *uname = mapi_fetch_field(hdl, 1);
+ mnstr_printf(sqlf, "CREATE DISTINCT STRING COLUMN ");
+ dquoted_print(sqlf, sname, ".");
+ dquoted_print(sqlf, uname, ";\n");
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]