Changeset: 0da9502f6c38 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/0da9502f6c38 Modified Files: clients/Tests/MAL-signatures-hge.test clients/Tests/MAL-signatures.test clients/Tests/exports.stable.out sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql_statement.h sql/backends/monet5/sql_upgrades.c sql/backends/monet5/vaults/monetdb/monetdb.c sql/backends/monet5/vaults/odbc/odbc_loader.c sql/common/sql_types.c sql/server/CMakeLists.txt sql/server/rel_basetable.h sql/server/rel_optimize_proj.c sql/server/rel_optimize_sel.c sql/server/rel_rel.h sql/server/rel_schema.c sql/server/rel_select.c sql/server/sql_mvc.c sql/server/sql_parser.y sql/storage/bat/bat_storage.c sql/storage/sql_storage.h sql/storage/store.c sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 Branch: nested Log Message:
merged with default diffs (truncated from 6832 to 300 lines): diff --git a/.bumpversion.cfg b/.bumpversion.cfg --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 11.52.0 +current_version = 11.54.0 commit = False tag = False diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -837,3 +837,4 @@ ab5d60be21cd1c65e9de476d71a86c2995f70785 ab5d60be21cd1c65e9de476d71a86c2995f70785 Aug2024_SP1_release 30e6380820842b9e0325536eb22d7cb3843ab095 Aug2024_7 30e6380820842b9e0325536eb22d7cb3843ab095 Aug2024_SP2_release +fd30df6fc710aa7615a995dd826389a67cddd47f Mar2025_root diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,3 @@ # ChangeLog file for devel # This file is updated with Maddlog -* Mon Sep 16 2024 Joeri van Ruth <joeri.van.r...@monetdbsolutions.com> -- Hot snapshot: allow member files larger than 64 GiB. By member files we mean - the files inside the resulting .tar file, not the tar file itself. Huge member - files are written using a GNU tar extension to the original tar format, which - doesn't support more than 8 GiB. - diff --git a/ChangeLog b/ChangeLog.Mar2025 copy from ChangeLog copy to ChangeLog.Mar2025 diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -8,7 +8,7 @@ # Copyright August 2008 - 2023 MonetDB B.V.; # Copyright 1997 - July 2008 CWI. -%global version 11.52.0 +%global version 11.54.0 %bcond_with compat @@ -563,6 +563,27 @@ embedded library (%{name}-embedded). %endif %{_libdir}/monetdb5*/lib_csv.so %{_libdir}/monetdb5*/lib_generator.so +%{_libdir}/monetdb5*/lib_monetdb_loader.so + +%package odbc-loader +Summary: MonetDB ODBC loader module +Group: Applications/Databases +Requires: %{name}-server%{?_isa} = %{version}-%{release} + +%description odbc-loader +MonetDB is a database management system that is developed from a +main-memory perspective with use of a fully decomposed storage model, +automatic index management, extensibility of data types and search +accelerators. It also has an SQL front end. + +This package provides an interface to the MonetDB server through which +data from remote databases can be loaded through an ODBC interface. In +order to use this module, mserver5 needs to be run with the option +--loadmodule odbc_loader. + +%files odbc-loader +%defattr(-,root,root) +%{_libdir}/monetdb5*/lib_odbc_loader.so %package server Summary: MonetDB - Monet Database Management System diff --git a/clients/ChangeLog b/clients/ChangeLog.Mar2025 copy from clients/ChangeLog copy to clients/ChangeLog.Mar2025 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 @@ -47403,6 +47403,16 @@ tanh command mmath.tanh(X_0:flt):flt MATHunary_TANHflt (empty) +monetdb +epilogue +command monetdb.epilogue():void +MONETDBepilogue +(empty) +monetdb +prelude +pattern monetdb.prelude():void +MONETDBprelude +(empty) mtime addmonths command mtime.addmonths(X_0:date, X_1:int):date 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 @@ -35868,6 +35868,16 @@ tanh command mmath.tanh(X_0:flt):flt MATHunary_TANHflt (empty) +monetdb +epilogue +command monetdb.epilogue():void +MONETDBepilogue +(empty) +monetdb +prelude +pattern monetdb.prelude():void +MONETDBprelude +(empty) mtime addmonths command mtime.addmonths(X_0:date, X_1:int):date @@ -37729,6 +37739,11 @@ pattern sql.next_value_ms(X_0:any_1, X_1 mvc_next_value return the next value of the sequence sql +normalize_monetdb_url +pattern sql.normalize_monetdb_url(X_0:str):str +SQLnormalize_monetdb_url +Normalize mapi:monetdb://, monetdb:// or monetdbs:// URL +sql nth_value pattern sql.nth_value(X_0:any_1, X_1:lng, X_2:bit, X_3:bit, X_4:int, X_5:oid, X_6:oid):any_1 SQLnth_value 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 @@ -745,19 +745,19 @@ mparm mparm_enumerate(int i); bool mparm_is_core(mparm parm); const char *mparm_name(mparm parm); mparm mparm_parse(const char *name); -char *msetting_as_string(const msettings *mp, mparm parm); +const char *msetting_as_string(const msettings *mp, mparm parm, char *scratch, size_t scratch_size); bool msetting_bool(const msettings *mp, mparm parm); long msetting_long(const msettings *mp, mparm parm); const char *msetting_parm_name(const msettings *mp, mparm parm); msettings_error msetting_parse(msettings *mp, mparm parm, const char *text); int msetting_parse_bool(const char *text); msettings_error msetting_set_bool(msettings *mp, mparm parm, bool value); -msettings_error msetting_set_ignored(msettings *mp, const char *key, const char *value); msettings_error msetting_set_long(msettings *mp, mparm parm, long value); msettings_error msetting_set_named(msettings *mp, bool allow_core, const char *key, const char *value); msettings_error msetting_set_string(msettings *mp, mparm parm, const char *value) __attribute__((__nonnull__(3))); const char *msetting_string(const msettings *mp, mparm parm); msettings *msettings_clone(const msettings *mp); +msettings *msettings_clone_with(msettings_allocator alloc, void *alloc_state, const msettings *mp); long msettings_connect_binary(const msettings *mp); const char *msettings_connect_certhash_digits(const msettings *mp); const char *msettings_connect_clientcert(const msettings *mp); @@ -768,13 +768,16 @@ const char *msettings_connect_tcp(const enum msetting_tls_verify msettings_connect_tls_verify(const msettings *mp); const char *msettings_connect_unix(const msettings *mp); msettings *msettings_create(void); +msettings *msettings_create_with(msettings_allocator alloc, void *alloc_state); const msettings *msettings_default; msettings *msettings_destroy(msettings *mp); +msettings_allocator msettings_get_allocator(const msettings *mp, void **put_alloc_state_here); bool msettings_malloc_failed(msettings_error err); -bool msettings_parse_url(msettings *mp, const char *url, char **error_buffer); +msettings_error msettings_parse_url(msettings *mp, const char *url); void msettings_reset(msettings *mp); void msettings_set_localizer(msettings *mp, const char *(*localizer)(const void *data, mparm parm), void *data); -bool msettings_validate(msettings *mp, char **errmsg); +msettings_error msettings_validate(msettings *mp); +size_t msettings_write_url(const msettings *mp, char *buffer, size_t); const char *wsaerror(int); # monetdb5 @@ -1627,6 +1630,8 @@ str lng_num2dec_flt(flt *res, const lng str lng_num2dec_int(int *res, const lng *v, const int *d2, const int *s2); str lng_num2dec_lng(lng *res, const lng *v, const int *d2, const int *s2); str lng_num2dec_sht(sht *res, const lng *v, const int *d2, const int *s2); +const char *mapiuri_uri(const char *uri, allocator *sa); +int mapiuri_valid(const char *uri, allocator *sa); sql_schema *mvc_bind_schema(mvc *c, const char *sname); sql_table *mvc_bind_table(mvc *c, sql_schema *s, const char *tname); str mvc_commit(mvc *c, int chain, const char *name, bool enabling_auto_commit); @@ -1639,13 +1644,21 @@ str mvc_rollback(mvc *c, int chain, cons str number2name(str s, int len, int i); bool option_disable_fork; sql_part *partition_find_part(sql_trans *tr, sql_table *pt, sql_part *pp); +int pl_register(const char *name, pl_add_types_fptr add_types, pl_load_fptr pl_load); +void pl_unregister(const char *name); +prop *prop_create(allocator *sa, rel_prop kind, prop *pre); void qc_delete(qc *cache, cq *q); cq *qc_find(qc *cache, int id); cq *qc_insert(qc *cache, allocator *sa, sql_rel *r, symbol *s, list *params, mapi_query_t type, char *codedstr, int no_mitosis); +void rel_base_use_all(mvc *sql, sql_rel *rel); +sql_rel *rel_basetable(mvc *sql, sql_table *t, const char *tname); sql_rel *rel_project(allocator *sa, sql_rel *l, list *e); +list *rel_projections(mvc *sql, sql_rel *rel, const char *tname, int settname, int intern); void res_tables_destroy(res_table *results); list *sa_list(allocator *sa); char *sa_message(allocator *sa, _In_z_ _Printf_format_string_ const char *format, ...) __attribute__((__format__(__printf__, 2, 3))); +msettings *sa_msettings_create(allocator *sa); +char *sa_msettings_to_string(const msettings *mp, allocator *sa, size_t size_hint); str sht_dec2_bte(bte *res, const int *s1, const sht *v); str sht_dec2_dbl(dbl *res, const int *s1, const sht *v); str sht_dec2_flt(flt *res, const int *s1, const sht *v); @@ -1671,6 +1684,7 @@ void sql_init_subtype(sql_subtype *res, void sql_register(const char *name, const unsigned char *code); int sql_trans_add_dependency_change(sql_trans *tr, sqlid id, sql_dependency_change_type tp); int sql_trans_create_table(sql_table **tres, sql_trans *tr, sql_schema *s, const char *name, const char *sql, int tt, bit system, int persistence, int commit_action, int sz, bte properties); +stmt *stmt_func(backend *be, stmt *ops, const char *name, sql_rel *imp, int f_union); # stream stream *block_stream(stream *s); diff --git a/clients/examples/C/murltest.c b/clients/examples/C/murltest.c --- a/clients/examples/C/murltest.c +++ b/clients/examples/C/murltest.c @@ -19,7 +19,7 @@ #include <stdlib.h> #include <string.h> -char *USAGE = "Usage: murltest TESTFILES.."; +char *USAGE = "Usage: murltest [-c] [-v[v[v]]] TESTFILES.."; static bool run_file(const char *filename, int verbose) @@ -71,7 +71,9 @@ main(int argc, char **argv) *next_slot++ = arg; continue; } - if (arg[1] == 'v') { + if (strcmp(arg, "-c") == 0) { + use_custom_allocator(); + }else if (arg[1] == 'v') { char *p = &arg[1]; while (*p == 'v') { p++; diff --git a/clients/examples/C/murltest.h b/clients/examples/C/murltest.h --- a/clients/examples/C/murltest.h +++ b/clients/examples/C/murltest.h @@ -11,7 +11,10 @@ */ #include "monetdb_config.h" +#include "stream.h" +#include "msettings.h" -#include "stream.h" + +void use_custom_allocator(void); bool run_tests(stream *s, int verbose); diff --git a/clients/examples/C/testsfile.c b/clients/examples/C/testsfile.c --- a/clients/examples/C/testsfile.c +++ b/clients/examples/C/testsfile.c @@ -27,52 +27,145 @@ static int start_line = -1; static int nstarted = 0; static msettings *mp = NULL; +static msettings_allocator allocator = NULL; + +static +bool verify_roundtrip(const char *location) +{ + const char ch = '*'; + char buffer[1000 + 1]; // + 1 canary byte + memset(buffer, ch, sizeof(buffer)); + const size_t buffer_size = sizeof(buffer) - 1; + + size_t length = msettings_write_url(mp, buffer, buffer_size); + if (length == 0) { + fprintf(stderr, "%s: msettings_write_url returned 0\n", location); + return false; + } + if (length > buffer_size - 1) { + fprintf(stderr, "%s: Reconstructed the URL unexpectedly large: %zu\n", location, length); + return false; + } + if (memchr(buffer, '\0', buffer_size) == NULL) { + fprintf(stderr, "%s: msettings_write_url didn't NUL terminate the result\n", location); + return false; + } + if (buffer[buffer_size] != ch) { + fprintf(stderr, "%s: msettting_write_url wrote beyond the end of the buffer\n", location); + return false; + } + + msettings *tmp = msettings_create_with(allocator, NULL); + if (tmp == NULL) { + fprintf(stderr, "malloc failed\n"); + return false; + } + msettings_error err = msettings_parse_url(tmp, buffer); + if (err) { + fprintf(stderr, "%s: Reconstructed URL <%s> couldn't be parsed: %s", location, buffer, err); + msettings_destroy(tmp); + return false; + } + + mparm parm; + bool ok = true; + for (int i = 0; (parm = mparm_enumerate(i)) != MP_UNKNOWN; i++) { _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org