Changeset: eb7052ece4d8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/eb7052ece4d8 Branch: default Log Message:
merged diffs (truncated from 2141 to 300 lines): 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 @@ -46769,11 +46769,6 @@ pattern json.renderobject(X_0:any...):js JSONrenderobject; (empty) json -resultSet -command json.resultSet(X_0:bat[:uuid], X_1:bat[:lng], X_2:bat[:json]):json -JSONresultSet; -Converts the json store into a single json string: -json str command json.str(X_0:json):str JSONjson2str; @@ -48274,26 +48269,6 @@ pattern optimizer.inline(X_0:str, X_1:st OPTwrapper; Expand inline functions optimizer -jit -pattern optimizer.jit():str -OPTwrapper; -(empty) -optimizer -jit -pattern optimizer.jit(X_0:str, X_1:str):str -OPTwrapper; -Propagate candidate lists in just-in-time optimization -optimizer -json -pattern optimizer.json():str -OPTwrapper; -(empty) -optimizer -json -pattern optimizer.json(X_0:str, X_1:str):str -OPTwrapper; -Unroll the mat.pack operation -optimizer macro pattern optimizer.macro(X_0:str, X_1:str):void OPTmacro; @@ -48304,16 +48279,6 @@ pattern optimizer.macro(X_0:str, X_1:str OPTmacro; Inline a target function used in a specific function. optimizer -mask -pattern optimizer.mask():str -OPTwrapper; -(empty) -optimizer -mask -pattern optimizer.mask(X_0:str, X_1:str):str -OPTwrapper; -Manipulate the MSK objects -optimizer matpack pattern optimizer.matpack():str OPTwrapper; @@ -49734,21 +49699,21 @@ unsafe pattern sql.setVariable(X_0:int, setVariable; Set the value of a session variable sql -sql set_count_distinct -unsafe pattern sql.set_count_distinct(X_0:str, X_1:str, X_2:str, X_3:lng):void +unsafe pattern sql.set_count_distinct(X_0:str, X_1:str, X_2:str, X_3:lng):void sql_set_count_distinct; Set count distinct for column sql set_max -unsafe pattern sql.set_max(X_0:str, X_1:str, X_2:str, X_3:any_1):void +unsafe pattern sql.set_max(X_0:str, X_1:str, X_2:str, X_3:any_1):void sql_set_max; Set max for column sql set_min -unsafe pattern sql.set_min(X_0:str, X_1:str, X_2:str, X_3:any_1):void +unsafe pattern sql.set_min(X_0:str, X_1:str, X_2:str, X_3:any_1):void sql_set_min; Set min for column +sql set_protocol unsafe pattern sql.set_protocol(X_0:int):int SQLset_protocol; 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 @@ -35204,11 +35204,6 @@ pattern json.renderobject(X_0:any...):js JSONrenderobject; (empty) json -resultSet -command json.resultSet(X_0:bat[:uuid], X_1:bat[:lng], X_2:bat[:json]):json -JSONresultSet; -Converts the json store into a single json string: -json str command json.str(X_0:json):str JSONjson2str; @@ -36704,26 +36699,6 @@ pattern optimizer.inline(X_0:str, X_1:st OPTwrapper; Expand inline functions optimizer -jit -pattern optimizer.jit():str -OPTwrapper; -(empty) -optimizer -jit -pattern optimizer.jit(X_0:str, X_1:str):str -OPTwrapper; -Propagate candidate lists in just-in-time optimization -optimizer -json -pattern optimizer.json():str -OPTwrapper; -(empty) -optimizer -json -pattern optimizer.json(X_0:str, X_1:str):str -OPTwrapper; -Unroll the mat.pack operation -optimizer macro pattern optimizer.macro(X_0:str, X_1:str):void OPTmacro; @@ -36734,16 +36709,6 @@ pattern optimizer.macro(X_0:str, X_1:str OPTmacro; Inline a target function used in a specific function. optimizer -mask -pattern optimizer.mask():str -OPTwrapper; -(empty) -optimizer -mask -pattern optimizer.mask(X_0:str, X_1:str):str -OPTwrapper; -Manipulate the MSK objects -optimizer matpack pattern optimizer.matpack():str OPTwrapper; @@ -38115,17 +38080,17 @@ setVariable; Set the value of a session variable sql set_count_distinct -unsafe pattern sql.set_count_distinct(X_0:str, X_1:str, X_2:str, X_3:lng):void +unsafe pattern sql.set_count_distinct(X_0:str, X_1:str, X_2:str, X_3:lng):void sql_set_count_distinct; Set count distinct for column sql set_max -unsafe pattern sql.set_max(X_0:str, X_1:str, X_2:str, X_3:any_1):void +unsafe pattern sql.set_max(X_0:str, X_1:str, X_2:str, X_3:any_1):void sql_set_max; Set max for column sql set_min -unsafe pattern sql.set_min(X_0:str, X_1:str, X_2:str, X_3:any_1):void +unsafe pattern sql.set_min(X_0:str, X_1:str, X_2:str, X_3:any_1):void sql_set_min; Set min for column sql 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 @@ -4,6 +4,7 @@ int ATOMallocate(const char *nme); void *ATOMdup(int id, const void *val); uint8_t ATOMelmshift(int sz) __attribute__((__const__)); char *ATOMformat(int id, const void *val); +gdk_return ATOMheap(int id, Heap *hp, size_t cap) __attribute__((__warn_unused_result__)); int ATOMindex(const char *nme); size_t ATOMlen(int id, const void *v); const char *ATOMname(int id); @@ -1625,6 +1626,7 @@ char *buffer_get_buf(buffer *b); void buffer_init(buffer *restrict b, char *restrict buf, size_t size); stream *buffer_rastream(buffer *restrict b, const char *restrict name); stream *buffer_wastream(buffer *restrict b, const char *restrict name); +stream *byte_counting_stream(stream *wrapped, uint64_t *counter); stream *bz2_stream(stream *inner, int preset); stream *callback_stream(void *restrict priv, ssize_t (*read)(void *restrict priv, void *restrict buf, size_t elmsize, size_t cnt), ssize_t (*write)(void *restrict priv, const void *restrict buf, size_t elmsize, size_t cnt), void (*close)(void *priv), void (*destroy)(void *priv), const char *restrict name); void close_stream(stream *s); diff --git a/clients/examples/C/bincopydata.c b/clients/examples/C/bincopydata.c --- a/clients/examples/C/bincopydata.c +++ b/clients/examples/C/bincopydata.c @@ -212,6 +212,35 @@ gen_null_strings(FILE *f, bool byteswap, } static void +gen_null_blobs(FILE *f, bool byteswap, long nrecs) +{ + uint8_t *buffer = malloc(nrecs); + for (long i = 0; i < nrecs; i++) { + buffer[i] = 0xD0 + 3 - (i % 3); + } + + for (long i = 0; i < nrecs; i++) { + uint64_t header; + size_t n; + if (i % 3 == 2) { + // null + n = 0; + header = (uint64_t)-1; + } else { + n = (i % 1000); + header = n; + } + if (byteswap) + copy_binary_convert64(&header); + assert(sizeof(header) == 8); + fwrite(&header, sizeof(header), 1, f); + if (n > 0) + fwrite(buffer, 1, n, f); + } + free(buffer); +} + +static void gen_json(FILE *f, bool byteswap, long nrecs) { (void)byteswap; @@ -247,6 +276,7 @@ static struct gen { { "broken_strings", gen_broken_strings }, { "newline_strings", gen_newline_strings }, { "null_strings", gen_null_strings }, + { "null_blobs", gen_null_blobs }, // { "timestamps", gen_timestamps }, { "timestamp_times", gen_timestamp_times }, 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 @@ -10,11 +10,32 @@ #include "bincopydata.h" +static const copy_binary_timestamp binary_nil_timestamp = { + .time = { + .ms = 0xFFFFFFFF, + .seconds = 255, + .minutes = 255, + .hours = 255, + .padding = 255, + }, + .date = { + .day = 255, + .month = 255, + .year =-1, + }, +}; + static copy_binary_timestamp random_timestamp(struct rng *rng) { + copy_binary_timestamp ts; + if (rng_next(rng) % 10 == 9) { + ts = binary_nil_timestamp; + return ts; + } + // the % trick gives a little skew but we don't care - copy_binary_timestamp ts = { + ts = (copy_binary_timestamp){ .time = { .ms = rng_next(rng) % 1000000, .seconds = rng_next(rng) % 60, // 61 ?? @@ -62,7 +83,7 @@ gen_timestamps(FILE *f, bool byteswap, l } } -#define GEN_TIMESTAMP_FIELD(name, fld) \ +#define GEN_TIMESTAMP_FIELD(name, typ, fld, nilvalue) \ void name \ (FILE *f, bool byteswap, long nrecs) \ { \ @@ -70,20 +91,22 @@ gen_timestamps(FILE *f, bool byteswap, l \ for (long i = 0; i < nrecs; i++) { \ copy_binary_timestamp ts = random_timestamp(&rng); \ + typ *p = &ts.fld; \ + typ tmp = ts.date.day == 255 ? nilvalue : *p; \ if (byteswap) { \ copy_binary_convert_timestamp(&ts); \ } \ - fwrite(&ts.fld, sizeof(ts.fld), 1, f); \ + fwrite(&tmp, sizeof(tmp), 1, f); \ } \ } -GEN_TIMESTAMP_FIELD(gen_timestamp_times, time) -GEN_TIMESTAMP_FIELD(gen_timestamp_dates, date) +GEN_TIMESTAMP_FIELD(gen_timestamp_times, copy_binary_time, time, binary_nil_timestamp.time) +GEN_TIMESTAMP_FIELD(gen_timestamp_dates, copy_binary_date, date, binary_nil_timestamp.date) -GEN_TIMESTAMP_FIELD(gen_timestamp_ms, time.ms) -GEN_TIMESTAMP_FIELD(gen_timestamp_seconds, time.seconds) -GEN_TIMESTAMP_FIELD(gen_timestamp_minutes, time.minutes) -GEN_TIMESTAMP_FIELD(gen_timestamp_hours, time.hours) _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org