Changeset: b961deeb2b18 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b961deeb2b18
Branch: multi-cachelock
Log Message:
Merge with default.
diffs (truncated from 5866 to 300 lines):
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -783,3 +783,4 @@ ea797696d5e8d8d550f21f09b98d3bcade1d001d
68c0e35095ad6a58766c6c1e77229d73148433e2 Sep2022_5
47675351fec22d5d5dc81eec03dfa08f505afc99 Sep2022_7
47675351fec22d5d5dc81eec03dfa08f505afc99 Sep2022_release
+44e45c9a451f6afd933773094ec25723f713d3be Jan2022_23
diff --git a/buildtools/conf/Maddlog b/buildtools/conf/Maddlog
--- a/buildtools/conf/Maddlog
+++ b/buildtools/conf/Maddlog
@@ -74,10 +74,6 @@ vcs_current_branch() {
if [[ "$vcs_kind" == "hg" ]] ; then
tag=$(hg branch)
else
- if [[ ! -d "$root_dir/.git" ]] ; then
- echo "Cannot use this script in a git worktree" >&2
- exit 2
- fi
tag=$(git rev-parse --abbrev-ref HEAD)
tag=${tag#branches/}
if [[ "$tag" == "master" ]] ; then
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
@@ -47259,16 +47259,6 @@ pattern optimizer.aliases(X_0:str, X_1:s
OPTwrapper;
Alias removal optimizer
optimizer
-bincopyfrom
-pattern optimizer.bincopyfrom():str
-OPTwrapper;
-(empty)
-optimizer
-bincopyfrom
-pattern optimizer.bincopyfrom(X_0:str, X_1:str):str
-OPTwrapper;
-Parallellize column loading
-optimizer
candidates
pattern optimizer.candidates():str
OPTwrapper;
@@ -48554,6 +48544,16 @@ unsafe pattern sql.exportResult(X_0:stre
mvc_export_result_wrap;
Export a result (in order) to stream s
sql
+export_bin_column
+unsafe pattern sql.export_bin_column(X_0:any_1, X_1:bit, X_2:str, X_3:int):lng
+mvc_bin_export_column_wrap;
+export column as binary
+sql
+export_bin_column
+unsafe pattern sql.export_bin_column(X_0:bat[:any_1], X_1:bit, X_2:str,
X_3:int):lng
+mvc_bin_export_column_wrap;
+export column as binary
+sql
export_table
unsafe pattern sql.export_table(X_0:str, X_1:str, X_2:str, X_3:str, X_4:str,
X_5:str, X_6:int, X_7:bat[:str], X_8:bat[:str], X_9:bat[:str], X_10:bat[:int],
X_11:bat[:int], X_12:any...):int
mvc_export_row_wrap;
@@ -48600,15 +48600,10 @@ SQLhot_snapshot_wrap;
Write db snapshot to the given tar(.gz/.lz4/.bz/.xz) file on either server or
client
sql
importColumn
-pattern sql.importColumn(X_0:str, X_1:bit, X_2:str, X_3:int, X_4:oid)
(X_5:bat[:any], X_6:oid)
+pattern sql.importColumn(X_0:str, X_1:int, X_2:bit, X_3:str, X_4:int, X_5:oid)
(X_6:bat[:any], X_7:oid)
mvc_bin_import_column_wrap;
Import a column from the given file
sql
-importTable
-unsafe pattern sql.importTable(X_0:str, X_1:str, X_2:int, X_3:bit,
X_4:str...):bat[:any]...
-mvc_bin_import_table_wrap;
-Import a table from the files (fname)
-sql
include
unsafe pattern sql.include(X_0:str):void
SQLinclude;
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
@@ -35684,16 +35684,6 @@ pattern optimizer.aliases(X_0:str, X_1:s
OPTwrapper;
Alias removal optimizer
optimizer
-bincopyfrom
-pattern optimizer.bincopyfrom():str
-OPTwrapper;
-(empty)
-optimizer
-bincopyfrom
-pattern optimizer.bincopyfrom(X_0:str, X_1:str):str
-OPTwrapper;
-Parallellize column loading
-optimizer
candidates
pattern optimizer.candidates():str
OPTwrapper;
@@ -36954,6 +36944,16 @@ unsafe pattern sql.exportResult(X_0:stre
mvc_export_result_wrap;
Export a result (in order) to stream s
sql
+export_bin_column
+unsafe pattern sql.export_bin_column(X_0:any_1, X_1:bit, X_2:str, X_3:int):lng
+mvc_bin_export_column_wrap;
+export column as binary
+sql
+export_bin_column
+unsafe pattern sql.export_bin_column(X_0:bat[:any_1], X_1:bit, X_2:str,
X_3:int):lng
+mvc_bin_export_column_wrap;
+export column as binary
+sql
export_table
unsafe pattern sql.export_table(X_0:str, X_1:str, X_2:str, X_3:str, X_4:str,
X_5:str, X_6:int, X_7:bat[:str], X_8:bat[:str], X_9:bat[:str], X_10:bat[:int],
X_11:bat[:int], X_12:any...):int
mvc_export_row_wrap;
@@ -37000,15 +37000,10 @@ SQLhot_snapshot_wrap;
Write db snapshot to the given tar(.gz/.lz4/.bz/.xz) file on either server or
client
sql
importColumn
-pattern sql.importColumn(X_0:str, X_1:bit, X_2:str, X_3:int, X_4:oid)
(X_5:bat[:any], X_6:oid)
+pattern sql.importColumn(X_0:str, X_1:int, X_2:bit, X_3:str, X_4:int, X_5:oid)
(X_6:bat[:any], X_7:oid)
mvc_bin_import_column_wrap;
Import a column from the given file
sql
-importTable
-unsafe pattern sql.importTable(X_0:str, X_1:str, X_2:int, X_3:bit,
X_4:str...):bat[:any]...
-mvc_bin_import_table_wrap;
-Import a table from the files (fname)
-sql
include
unsafe pattern sql.include(X_0:str):void
SQLinclude;
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
@@ -701,6 +701,7 @@ MapiMsg mapi_set_size_header(Mapi mid, b
MapiMsg mapi_set_time_zone(Mapi mid, int seconds_east_of_utc)
__attribute__((__nonnull__(1)));
MapiMsg mapi_set_timeout(Mapi mid, unsigned int timeout, bool (*callback)(void
*), void *callback_data) __attribute__((__nonnull__(1)));
void mapi_setfilecallback(Mapi mid, char *(*getfunc)(void *priv, const char
*filename, bool binary, uint64_t offset, size_t *size), char *(*putfunc)(void
*priv, const char *filename, const void *data, size_t size), void *priv)
__attribute__((__nonnull__(1)));
+void mapi_setfilecallback2(Mapi mid, char *(*getfunc)(void *priv, const char
*filename, bool binary, uint64_t offset, size_t *size), char *(*putfunc)(void
*priv, const char *filename, bool binary, const void *data, size_t size), void
*priv) __attribute__((__nonnull__(1)));
int mapi_split_line(MapiHdl hdl) __attribute__((__nonnull__(1)));
MapiMsg mapi_store_field(MapiHdl hdl, int fnr, int outtype, void *outparam)
__attribute__((__nonnull__(1)));
MapiMsg mapi_timeout(Mapi mid, unsigned int time)
__attribute__((__nonnull__(1)));
@@ -964,6 +965,7 @@ const char *evalRef;
const char *execRef;
const char *expandRef;
const char *exportOperationRef;
+const char *export_bin_columnRef;
const char *export_tableRef;
str fcnDefinition(MalBlkPtr mb, InstrPtr p, str s, int flg, str base, size_t
len);
const char *fetchRef;
@@ -1057,7 +1059,6 @@ const char *hgeRef;
const char *identityRef;
const char *ifthenelseRef;
const char *importColumnRef;
-const char *importTableRef;
void initHeartbeat(void);
void initNamespace(void);
void initParser(void);
@@ -1778,6 +1779,7 @@ stream *iconv_rstream(stream *restrict s
stream *iconv_wstream(stream *restrict ss, const char *restrict charset, const
char *restrict name);
bool isa_block_stream(const stream *s);
stream *lz4_stream(stream *inner, int preset);
+stream *mapi_request_download(const char *filename, bool binary, bstream *rs,
stream *ws);
stream *mapi_request_upload(const char *filename, bool binary, bstream *rs,
stream *ws);
void mnstr_clearerr(stream *s);
void mnstr_close(stream *s);
diff --git a/clients/examples/C/bincopytemporaldata.c
b/clients/examples/C/bincopytemporaldata.c
--- a/clients/examples/C/bincopytemporaldata.c
+++ b/clients/examples/C/bincopytemporaldata.c
@@ -23,7 +23,7 @@ random_timestamp(struct rng *rng)
.date = {
.day = 0, // determine later
.month = 1 + rng_next(rng) % 12,
- .year = 2030 - (int16_t)rng_next(rng),
+ .year = 2030 - (int16_t)rng_next(rng) % 2300,
},
};
@@ -32,11 +32,11 @@ random_timestamp(struct rng *rng)
31, 30, 31, 31,
30, 31, 30, 31,
};
- uint32_t year = ts.date.year;
+ int16_t year = ts.date.year;
uint32_t days = durations[ts.date.month];
bool leap_year = (
days == 28 &&
- year % 4 == 0 &&
+ year > 0 && year % 4 == 0 &&
(year % 100 != 0 || year % 400 == 0)
);
if (leap_year)
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -331,6 +331,42 @@ bailout:
}
static bool
+has_schema_max_memory(Mapi mid)
+{
+ MapiHdl hdl;
+ bool ret;
+ static int answer = -1;
+
+ if (answer >= 0)
+ return answer;
+
+ if ((hdl = mapi_query(mid, "select id from sys._columns where table_id
= (select id from sys._tables where name = 'db_user_info' and schema_id =
(select id from sys.schemas where name = 'sys')) and name = 'max_memory'")) ==
NULL ||
+ mapi_error(mid))
+ goto bailout;
+ ret = mapi_get_row_count(hdl) == 1;
+ while ((mapi_fetch_row(hdl)) != 0) {
+ if (mapi_error(mid))
+ goto bailout;
+ }
+ if (mapi_error(mid))
+ goto bailout;
+ mapi_close_handle(hdl);
+ answer = ret;
+ return ret;
+
+bailout:
+ if (hdl) {
+ if (mapi_result_error(hdl))
+ mapi_explain_result(hdl, stderr);
+ else
+ mapi_explain_query(hdl, stderr);
+ mapi_close_handle(hdl);
+ } else
+ mapi_explain(mid, stderr);
+ return false;
+}
+
+static bool
has_table_partitions(Mapi mid)
{
MapiHdl hdl;
@@ -2534,11 +2570,28 @@ dump_database(Mapi mid, stream *toConsol
"ORDER BY s.name, t.sqlname";
const char *users =
has_schema_path(mid) ?
+ has_schema_max_memory(mid) ?
"SELECT ui.name, "
"ui.fullname, "
"sys.password_hash(ui.name), "
"s.name, "
- "ui.schema_path "
+ "ui.schema_path, "
+ "ui.max_memory, "
+ "ui.max_workers, "
+ "ui.optimizer, "
+ "au.name "
+ "FROM sys.db_user_info ui LEFT OUTER JOIN sys.auths au on
ui.default_role = au.id, "
+ "sys.schemas s "
+ "WHERE ui.default_schema = s.id "
+ "AND ui.name <> 'monetdb' "
+ "AND ui.name <> '.snapshot' "
+ "ORDER BY ui.name" :
+ "SELECT ui.name, "
+ "ui.fullname, "
+ "sys.password_hash(ui.name), "
+ "s.name, "
+ "ui.schema_path, "
+ "0, 0, 'default_pipe', cast(null as clob) "
"FROM sys.db_user_info ui, "
"sys.schemas s "
"WHERE ui.default_schema = s.id "
@@ -2549,7 +2602,8 @@ dump_database(Mapi mid, stream *toConsol
"ui.fullname, "
"sys.password_hash(ui.name), "
"s.name, "
- "cast(null as clob) "
+ "cast(null as clob), "
+ "0, 0, 'default_pipe', cast(null as clob) "
"FROM sys.db_user_info ui, "
"sys.schemas s "
"WHERE ui.default_schema = s.id "
@@ -2824,6 +2878,10 @@ dump_database(Mapi mid, stream *toConsol
const char *pwhash = mapi_fetch_field(hdl, 2);
const char *sname = mapi_fetch_field(hdl, 3);
const char *spath = mapi_fetch_field(hdl, 4);
+ const char *mmemory = mapi_fetch_field(hdl, 5);
+ const char *mworkers = mapi_fetch_field(hdl, 6);
+ const char *optimizer = mapi_fetch_field(hdl, 7);
+ const char *defrole = mapi_fetch_field(hdl, 8);
mnstr_printf(toConsole, "CREATE USER ");
dquoted_print(toConsole, uname, " ");
@@ -2837,6 +2895,20 @@ dump_database(Mapi mid, stream *toConsol
mnstr_printf(toConsole, " SCHEMA PATH ");
squoted_print(toConsole, spath, '\'', false);
}
+ if (mmemory && strcmp(mmemory, "0") != 0) {
+ mnstr_printf(toConsole, " MAX_MEMORY %s",
mmemory);
+ }
+ if (mworkers && strcmp(mworkers, "0") != 0) {
+ mnstr_printf(toConsole, " MAX_WORKERS %s",
mworkers);
+ }
+ if (optimizer && strcmp(optimizer, "default_pipe") !=
0) {
+ mnstr_printf(toConsole, " OPTIMIZER ");
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]