Changeset: e824a70ebe3c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e824a70ebe3c
Removed Files:
        sql/backends/monet5/UDF/capi/CMakeLists.txt
        sql/backends/monet5/UDF/capi/Tests/7285-cudf-grouped-aggr.test
        sql/backends/monet5/UDF/capi/Tests/7525-cudf-aggr-var-input.test
        sql/backends/monet5/UDF/capi/Tests/All
        sql/backends/monet5/UDF/capi/Tests/SingleServer
        sql/backends/monet5/UDF/capi/Tests/capi00.test
        sql/backends/monet5/UDF/capi/Tests/capi01.test
        sql/backends/monet5/UDF/capi/Tests/capi02.test
        sql/backends/monet5/UDF/capi/Tests/capi03.test
        sql/backends/monet5/UDF/capi/Tests/capi04.test
        sql/backends/monet5/UDF/capi/Tests/capi05.test
        sql/backends/monet5/UDF/capi/Tests/capi06.test
        sql/backends/monet5/UDF/capi/Tests/capi07.test
        sql/backends/monet5/UDF/capi/Tests/capi08.test
        sql/backends/monet5/UDF/capi/Tests/capi09.test
        sql/backends/monet5/UDF/capi/Tests/capi10.test
        sql/backends/monet5/UDF/capi/Tests/capi11.test
        sql/backends/monet5/UDF/capi/Tests/capi13.test
        sql/backends/monet5/UDF/capi/Tests/capi14.test
        sql/backends/monet5/UDF/capi/Tests/capi15.test
        sql/backends/monet5/UDF/capi/Tests/capi16.test
        sql/backends/monet5/UDF/capi/Tests/capi17.test
        sql/backends/monet5/UDF/capi/Tests/capi18.test
        sql/backends/monet5/UDF/capi/capi.c
        sql/backends/monet5/UDF/capi/cheader.h
        sql/backends/monet5/UDF/capi/cheader.text.h
Modified Files:
        ChangeLog
        MonetDB.spec
        clients/Tests/All
        clients/Tests/MAL-signatures-hge.test
        clients/Tests/SingleServer
        clients/Tests/exports.stable.out
        clients/mapiclient/dump.c
        cmake/monetdb-defines.cmake
        ctest/cmake/set-cmake-vars.cmake
        debian/monetdb-server.install
        monetdb5/mal/mal_linker.c
        monetdb5/mal/mal_namespace.h
        monetdb5/optimizer/opt_mitosis.c
        monetdb5/optimizer/opt_support.c
        monetdb_config.h.in
        sql/backends/monet5/UDF/CMakeLists.txt
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_upgrades.c
        sql/include/sql_catalog.h
        sql/scripts/10_sys_schema_extension.sql
        sql/server/rel_psm.c
        sql/server/sql_parser.y
        sql/test/BugTracker-2020/Tests/functions-not-persist.Bug-6819.py
        
sql/test/emptydb-previous-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-previous-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-previous-upgrade/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        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.int128
        sql/test/testdb-previous-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-previous-upgrade/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.py
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/upgrade.py
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/testdb/Tests/All
        sql/test/testdb/Tests/dump-nogeom.stable.out
        sql/test/testdb/Tests/dump.stable.out
        sql/test/testdb/Tests/load.test
        testing/CMakeLists.txt
        testing/Mtest.py.in
        tools/merovingian/daemon/forkmserver.c
        tools/merovingian/daemon/merovingian.c
        tools/merovingian/utils/properties.c
        tools/mserver/mserver5.1.in
        tools/mserver/mserver5.c
Branch: default
Log Message:

Removed embedded C support.


diffs (truncated from 4628 to 300 lines):

diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,16 @@
 # ChangeLog file for devel
 # This file is updated with Maddlog
 
+* Fri Jun 19 2026 Sjoerd Mullender <[email protected]>
+- Removed embedded C support.  It is no longer possible to use user-defined
+  functions which are written in C or C++ (i.e. using `CREATE FUNCTION
+  ... LANGUAGE C ...`.  Upgrading to this version will succeed if such
+  functions are defined, but they cannot be used anymore.  Use this
+  query to find all affected functions: `SELECT s.name, f.name FROM
+  sys.functions f JOIN sys.schemas s ON s.id = f.schema_id WHERE
+  f.language IN (4, 12);`.  These functions can then be dropped
+  manually.
+
 * Thu May  7 2026 Niels Nes <[email protected]>
 - disallow casting /coercing from decimal to integers when the functions
   work on bits (like xor, and, or, <<, >> etc)
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -67,9 +67,6 @@
 # operators.  Otherwise the POSIX regex functions are used.
 %bcond_without pcre
 
-# By default, include C integration
-%bcond_without cintegration
-
 %if %{fedpkgs}
 # By default, create the MonetDB-R package.
 %bcond_without rintegration
@@ -579,9 +576,6 @@ embedded library (%{name}-embedded).
 %{_libdir}/libmonetdb5*.so.*
 %{_libdir}/libmonetdbsql*.so*
 %dir %{_libdir}/monetdb5-%{version}
-%if %{with cintegration}
-%{_libdir}/monetdb5*/lib_capi.so
-%endif
 %{_libdir}/monetdb5*/lib_csv.so
 %{_libdir}/monetdb5*/lib_generator.so
 %{_libdir}/monetdb5*/lib_monetdb_loader.so
@@ -952,7 +946,6 @@ fi
         -DCMAKE_INSTALL_RUNSTATEDIR=/run \
         -DRELEASE_VERSION=ON \
         -DASSERT=OFF \
-        -DCINTEGRATION=%{?with_cintegration:ON}%{!?with_cintegration:OFF} \
         -DFITS=%{?with_fits:ON}%{!?with_fits:OFF} \
         -DGEOM=%{?with_geos:ON}%{!?with_geos:OFF} \
         -DINT128=%{?with_hugeint:ON}%{!?with_hugeint:OFF} \
diff --git a/clients/Tests/All b/clients/Tests/All
--- a/clients/Tests/All
+++ b/clients/Tests/All
@@ -1,6 +1,6 @@
 MERCURIAL?exports
-HAVE_HGE&HAVE_FITS&HAVE_GEOM&HAVE_LIBR&HAVE_LIBPY3&HAVE_NETCDF&HAVE_SHP&HAVE_CUDF?MAL-signatures-hge
-!HAVE_HGE&HAVE_FITS&HAVE_GEOM&HAVE_LIBR&HAVE_LIBPY3&HAVE_NETCDF&HAVE_SHP&HAVE_CUDF?MAL-signatures
+HAVE_HGE&HAVE_FITS&HAVE_GEOM&HAVE_LIBR&HAVE_LIBPY3&HAVE_NETCDF&HAVE_SHP?MAL-signatures-hge
+!HAVE_HGE&HAVE_FITS&HAVE_GEOM&HAVE_LIBR&HAVE_LIBPY3&HAVE_NETCDF&HAVE_SHP?MAL-signatures
 NOT_WIN32?melcheck
 mclient-uri
 testcondvar
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
@@ -31273,11 +31273,6 @@ xor
 pattern batcalc.xor(X_0:sht, X_1:bat[:sht], X_2:bat[:oid]):bat[:sht]
 CMDbatXOR
 Return V xor B
-batcapi
-eval
-pattern batcapi.eval(X_0:ptr, X_1:bit, X_2:str, X_3:any...):any...
-CUDFevalStd
-Execute a simple CUDF script value
 batgeom
 AsEWKT
 command batgeom.AsEWKT(X_0:bat[:wkb]):bat[:str]
@@ -45283,26 +45278,6 @@ xor
 pattern calc.xor(X_0:sht, X_1:sht):sht
 CMDvarXOR
 Return V1 XOR V2
-capi
-eval
-pattern capi.eval(X_0:ptr, X_1:bit, X_2:str):any
-CUDFevalStd
-Execute a simple CUDF script returning a single value
-capi
-eval
-pattern capi.eval(X_0:ptr, X_1:bit, X_2:str, X_3:any...):any...
-CUDFevalStd
-Execute a simple CUDF script value
-capi
-eval_aggr
-pattern capi.eval_aggr(X_0:ptr, X_1:bit, X_2:str, X_3:any...):any...
-CUDFevalAggr
-grouped aggregates through CUDF
-capi
-subeval_aggr
-pattern capi.subeval_aggr(X_0:ptr, X_1:bit, X_2:str, X_3:any...):any...
-CUDFevalAggr
-grouped aggregates through CUDF
 clients
 backendsum
 command clients.backendsum(X_0:str):str
diff --git a/clients/Tests/SingleServer b/clients/Tests/SingleServer
--- a/clients/Tests/SingleServer
+++ b/clients/Tests/SingleServer
@@ -1,3 +1,2 @@
---set embedded_c=yes
 --set embedded_r=yes
 --set embedded_py=3
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
@@ -846,7 +846,6 @@ void batBeforeCall(ValPtr v, ValPtr bak)
 const char batRef[];
 const char batalgebraRef[];
 const char batcalcRef[];
-const char batcapiRef[];
 const char batmalRef[];
 const char batmkeyRef[];
 const char batmmathRef[];
@@ -865,7 +864,6 @@ const char blockRef[];
 const char bstreamRef[];
 const char calcRef[];
 str callMAL(Client cntxt, MalBlkPtr mb, MalStkPtr *glb, ValPtr argv[]);
-const char capiRef[];
 str cfcnDefinition(Symbol s, str base, size_t len);
 str chkDeclarations(MalBlkPtr mb);
 str chkFlow(MalBlkPtr mb);
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -2443,6 +2443,19 @@ dump_function(Mapi mid, stream *sqlf, co
                if (flkey) {
                        mnstr_printf(sqlf, " LANGUAGE %s", flkey);
                        free(flkey);
+               } else {
+                       /* backward compatibility: dump language types for 
removed
+                        * implementations */
+                       switch (flang) {
+                       case 4:
+                               mnstr_printf(sqlf, " LANGUAGE C");
+                               break;
+                       case 12:
+                               mnstr_printf(sqlf, " LANGUAGE CPP");
+                               break;
+                       default:
+                               break;
+                       }
                }
                mnstr_printf(sqlf, "\n%s\n", ffunc);
        }
diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake
--- a/cmake/monetdb-defines.cmake
+++ b/cmake/monetdb-defines.cmake
@@ -198,11 +198,6 @@ macro(monetdb_macro_variables)
   if(WIN_GETADDRINFO)
     set(HAVE_GETADDRINFO 1)
   endif()
-  set(HAVE_CUDF
-    ${CINTEGRATION}
-    CACHE
-    INTERNAL
-    "C udfs extension is available")
   # compiler options, profiling (google perf tools), valgrind
   # Check that posix regex is available when pcre is not found
   # "monetdb5/module/mal/pcre.c" assumes the regex library is available
diff --git a/ctest/cmake/set-cmake-vars.cmake b/ctest/cmake/set-cmake-vars.cmake
--- a/ctest/cmake/set-cmake-vars.cmake
+++ b/ctest/cmake/set-cmake-vars.cmake
@@ -11,8 +11,6 @@
 # Test for the existence of these cmake variables, the source code assumes
 # that they are set by the buildsystem.
 
-assert_variable_exists(HAVE_CUDF)
-
 if(HAVE_LIBR)
   assert_variable_exists(RHOME)
 endif()
diff --git a/debian/monetdb-server.install b/debian/monetdb-server.install
--- a/debian/monetdb-server.install
+++ b/debian/monetdb-server.install
@@ -3,7 +3,6 @@ debian/tmp/usr/lib/x86_64-linux-gnu/libm
 debian/tmp/usr/lib/x86_64-linux-gnu/libmonetdbsql*.so* usr/lib/x86_64-linux-gnu
 
 # usr/lib/x86_64-linux-gnu/monetdb5*/lib_*.so EXCEPT: 
lib_{fits,geom,gsl,microbenchmark,pyapi*,rapi,sql,udf}.so
-debian/tmp/usr/lib/x86_64-linux-gnu/monetdb5*/lib_capi.so 
usr/lib/x86_64-linux-gnu/monetdb5
 debian/tmp/usr/lib/x86_64-linux-gnu/monetdb5*/lib_csv.so 
usr/lib/x86_64-linux-gnu/monetdb5
 debian/tmp/usr/lib/x86_64-linux-gnu/monetdb5*/lib_generator.so 
usr/lib/x86_64-linux-gnu/monetdb5
 debian/tmp/usr/lib/x86_64-linux-gnu/monetdb5*/lib_monetdb_loader.so 
usr/lib/x86_64-linux-gnu/monetdb5
diff --git a/monetdb5/mal/mal_linker.c b/monetdb5/mal/mal_linker.c
--- a/monetdb5/mal/mal_linker.c
+++ b/monetdb5/mal/mal_linker.c
@@ -287,9 +287,6 @@ loadLibrary(const char *filename, int fl
 
        if (handle == NULL) {
                static const char *const optional[] = {
-#ifdef HAVE_CUDF
-                       "capi",
-#endif
 #ifdef HAVE_FITS
                        "fits",
 #endif
@@ -459,10 +456,6 @@ malLibraryEnabled(const char *name)
                const char *val = GDKgetenv("embedded_r");
                return val && (strcasecmp(val, "true") == 0 ||
                                           strcasecmp(val, "yes") == 0);
-       } else if (strcmp(name, "capi") == 0) {
-               const char *val = GDKgetenv("embedded_c");
-               return val && (strcasecmp(val, "true") == 0 ||
-                                          strcasecmp(val, "yes") == 0);
        }
        return true;
 }
@@ -484,8 +477,6 @@ malLibraryHowToEnable(const char *name)
                HOW_TO_ENABLE_ERROR("Python 3", "embedded_py=3");
        } else if (strcmp(name, "rapi") == 0) {
                HOW_TO_ENABLE_ERROR("R", "embedded_r=true");
-       } else if (strcmp(name, "capi") == 0) {
-               HOW_TO_ENABLE_ERROR("C/C++", "embedded_c=true");
        }
        return "";
 }
diff --git a/monetdb5/mal/mal_namespace.h b/monetdb5/mal/mal_namespace.h
--- a/monetdb5/mal/mal_namespace.h
+++ b/monetdb5/mal/mal_namespace.h
@@ -33,7 +33,6 @@
        FUNC(bat); \
        FUNC(batalgebra); \
        FUNC(batcalc); \
-       FUNC(batcapi); \
        FUNC(batmal); \
        FUNC(batmkey); \
        FUNC(batmmath); \
@@ -50,7 +49,6 @@
        FUNC(block); \
        FUNC(bstream); \
        FUNC(calc); \
-       FUNC(capi); \
        FUNC(claim); \
        FUNC(clear_table); \
        FUNC(columnBind); \
diff --git a/monetdb5/optimizer/opt_mitosis.c b/monetdb5/optimizer/opt_mitosis.c
--- a/monetdb5/optimizer/opt_mitosis.c
+++ b/monetdb5/optimizer/opt_mitosis.c
@@ -100,8 +100,7 @@ OPTmitosisImplementation(Client cntxt, M
                }
 
                if (p->argc > 2
-                       && (getModuleId(p) == capiRef || getModuleId(p) == 
rapiRef
-                               || getModuleId(p) == pyapi3Ref)
+                       && (getModuleId(p) == rapiRef || getModuleId(p) == 
pyapi3Ref)
                        && getFunctionId(p) == subeval_aggrRef) {
                        pieces = 0;
                        goto bailout;
diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c
--- a/monetdb5/optimizer/opt_support.c
+++ b/monetdb5/optimizer/opt_support.c
@@ -286,8 +286,7 @@ hasSideEffects(MalBlkPtr mb, InstrPtr p,
                return TRUE;
 
        if( getModuleId(p) == pyapi3Ref ||
-               getModuleId(p) == rapiRef ||
-               getModuleId(p) == capiRef)
+               getModuleId(p) == rapiRef)
                return TRUE;
 
        if (getModuleId(p) == sqlcatalogRef)
@@ -436,8 +435,7 @@ isMapOp(InstrPtr p)
                                || (getModuleId(p) != batcalcRef && 
getModuleId(p) != batRef
                                        && strncmp(getModuleId(p), "bat", 3) == 
0)
                                || (getModuleId(p) == batmkeyRef)) && 
!isOrderDepenent(p)
-                       && getModuleId(p) != batrapiRef && getModuleId(p) != 
batpyapi3Ref
-                       && getModuleId(p) != batcapiRef;
+                       && getModuleId(p) != batrapiRef && getModuleId(p) != 
batpyapi3Ref;
 }
 
 inline int
@@ -452,8 +450,7 @@ isMap2Op(InstrPtr p)
                                || (getModuleId(p) != batcalcRef && 
getModuleId(p) != batRef
                                        && strncmp(getModuleId(p), "bat", 3) == 
0)
                                || (getModuleId(p) == batmkeyRef)) && 
!isOrderDepenent(p)
-                       && getModuleId(p) != batrapiRef && getModuleId(p) != 
batpyapi3Ref
-                       && getModuleId(p) != batcapiRef;
+                       && getModuleId(p) != batrapiRef && getModuleId(p) != 
batpyapi3Ref;
 }
 
 inline int
diff --git a/monetdb_config.h.in b/monetdb_config.h.in
--- a/monetdb_config.h.in
+++ b/monetdb_config.h.in
@@ -183,7 +183,6 @@
 
 // optional code: libraries that may or may not be available,
 // optional extensions
-#cmakedefine HAVE_CUDF 1
 #cmakedefine HAVE_CURL 1
 #cmakedefine HAVE_FITS 1
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to