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

Reply via email to