Changeset: ab03fd998773 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ab03fd998773
Added Files:
monetdb5/modules/mal/mal_init.mal
monetdb5/modules/mal/mal_init.mal.h
sql/backends/monet5/UDF/capi/50_capi.mal.h
sql/backends/monet5/UDF/capi/capi.mal.h
sql/backends/monet5/UDF/pyapi/50_pyapi.mal.h
sql/backends/monet5/UDF/pyapi/pyapi.mal.h
sql/backends/monet5/UDF/pyapi3/50_pyapi3.mal.h
sql/backends/monet5/UDF/pyapi3/pyapi3.mal.h
sql/backends/monet5/UDF/udf/80_udf.mal.h
sql/backends/monet5/UDF/udf/80_udf_hge.mal.h
sql/backends/monet5/UDF/udf/udf.mal.h
sql/backends/monet5/UDF/udf/udf_hge.mal.h
sql/backends/monet5/sql_embedded.c
sql/backends/monet5/sql_embedded.h
Modified Files:
monetdb5/mal/mal.c
monetdb5/mal/mal_embedded.c
monetdb5/mal/mal_session.c
sql/backends/monet5/Makefile.ag
tools/mserver/Makefile.ag
tools/mserver/mserver5.c
tools/mserver/shutdowntest.c
Branch: translate-scripts
Log Message:
Call SQL MAL scripts after mal_init.
However the server cannot find the C declarations. Changing the linkage is
required.
diffs (truncated from 450 to 300 lines):
diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c
--- a/monetdb5/mal/mal.c
+++ b/monetdb5/mal/mal.c
@@ -91,8 +91,6 @@ int mal_init(void){
* activity first.
* This function should be called after you have issued sql_reset();
*/
-void cleanOptimizerPipe(void);
-
void mserver_reset(void)
{
str err = 0;
diff --git a/monetdb5/mal/mal_embedded.c b/monetdb5/mal/mal_embedded.c
--- a/monetdb5/mal/mal_embedded.c
+++ b/monetdb5/mal/mal_embedded.c
@@ -106,6 +106,8 @@ static struct{
#include "run_adder.mal.h"
#include "run_isolate.mal.h"
#include "run_memo.mal.h"
+
+#include "mal_init.mal.h" //for autoload extensions
{ 0, 0}
};
diff --git a/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c
--- a/monetdb5/mal/mal_session.c
+++ b/monetdb5/mal/mal_session.c
@@ -78,16 +78,11 @@ malBootstrap(void)
mnstr_printf(c->fdout,"!GDKerror: %s\n",GDKerrbuf);
mnstr_flush(c->fdout);
}
-#ifdef HAVE_EMBEDDED
- return msg;
-#endif
}
- msg = MALengine(c);
- if (msg != MAL_SUCCEED) {
- GDKfree(msg);
-#ifdef HAVE_EMBEDDED
- return msg;
-#endif
+ if ((msg = MALengine(c)) != MAL_SUCCEED) {
+ fprintf(stderr,"#malBootstrap:Failed to start MAL engine: %s",
msg);
+ freeException(msg);
+ mal_exit(1);
}
return msg;
}
diff --git a/monetdb5/modules/mal/mal_init.mal
b/monetdb5/modules/mal/mal_init.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/modules/mal/mal_init.mal
@@ -0,0 +1,30 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+
+# (c) Martin Kersten
+# MAL Startup file
+# Upon starting the Monet/MAL server we need to initialize the symbol table.
+# This encompasses loading the signatures of several key modules.
+# They are listed below.
+#
+# Beware, since libraries are loaded dynamically, there is an implicit
+# dependency. For example, the mapi module initializer uses the bat module.
+# It should be loaded after the bat module.
+#
+# The negative effect is that this module is inspected as part of
+# the function resolution scheme.
+#
+# The remainder interprets the signatures and resolves the address bindings.
+# The signatures may exists without the corresponding function implementation
+# to be loaded. This way, MAL programs can be normally compiled, and only
+# upon use of the function will it create the necessary exception.
+#
+# The order of the includes defines the dependencies.
+#
+# Any extensions (MAL scripts) that should be automatically loaded upon
+# startup can be placed in the autoload directory. One typically finds
+# the SQL module in here, but it can also be used to load custom scripts.
+include autoload;
diff --git a/monetdb5/modules/mal/mal_init.mal.h
b/monetdb5/modules/mal/mal_init.mal.h
new file mode 100644
--- /dev/null
+++ b/monetdb5/modules/mal/mal_init.mal.h
@@ -0,0 +1,10 @@
+/*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+*/
+
+// This file was generated automatically with mal2h.py. Do not edit this file
directly.
+{ "mal_init", "\ninclude autoload;" },
diff --git a/sql/backends/monet5/Makefile.ag b/sql/backends/monet5/Makefile.ag
--- a/sql/backends/monet5/Makefile.ag
+++ b/sql/backends/monet5/Makefile.ag
@@ -19,6 +19,12 @@ INCLUDES = ../../include ../../common ..
../../../common/utils \
../../../gdk
+lib_sqlstart = {
+ NOINST
+ DIR = libdir/monetdb5
+ SOURCES = sql_embedded.c sql_embedded.h
+}
+
lib__sql = {
MODULE
DIR = libdir/monetdb5
diff --git a/sql/backends/monet5/UDF/capi/50_capi.mal.h
b/sql/backends/monet5/UDF/capi/50_capi.mal.h
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/capi/50_capi.mal.h
@@ -0,0 +1,10 @@
+/*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+*/
+
+// This file was generated automatically with mal2h.py. Do not edit this file
directly.
+{ "50_capi", "\ninclude capi;" },
diff --git a/sql/backends/monet5/UDF/capi/capi.mal.h
b/sql/backends/monet5/UDF/capi/capi.mal.h
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/capi/capi.mal.h
@@ -0,0 +1,10 @@
+/*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+*/
+
+// This file was generated automatically with mal2h.py. Do not edit this file
directly.
+{ "capi", "\nmodule capi;\n\npattern
eval(fptr:ptr,cpp:bit,expr:str):any\naddress CUDFevalStd\ncomment \"Execute a
simple CUDF script returning a single value\";\n\npattern
eval(fptr:ptr,cpp:bit,expr:str,arg:any...):any...\naddress CUDFevalStd\ncomment
\"Execute a simple CUDF script value\";\n\npattern
subeval_aggr(fptr:ptr,cpp:bit,expr:str,arg:any...):any...\naddress
CUDFevalAggr\ncomment \"grouped aggregates through CUDF\";\n\npattern
eval_aggr(fptr:ptr,cpp:bit,expr:str,arg:any...):any...\naddress
CUDFevalAggr\ncomment \"grouped aggregates through CUDF\";\n\ncommand prelude()
:void address CUDFprelude;\ncapi.prelude();\n\nmodule batcapi;\n\npattern
eval(fptr:ptr,cpp:bit,expr:str,arg:any...):any...\naddress CUDFevalStd\ncomment
\"Execute a simple CUDF script value\";\n\npattern
subeval_aggr(fptr:ptr,cpp:bit,expr:str,arg:any...):any...\naddress
CUDFevalAggr\ncomment \"grouped aggregates through CUDF\";\n\npattern
eval_aggr(fptr:ptr,cpp:bit,expr:str,arg:any...):any...\naddress CUDFev
alAggr\ncomment \"grouped aggregates through CUDF\";" },
diff --git a/sql/backends/monet5/UDF/pyapi/50_pyapi.mal.h
b/sql/backends/monet5/UDF/pyapi/50_pyapi.mal.h
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/pyapi/50_pyapi.mal.h
@@ -0,0 +1,10 @@
+/*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+*/
+
+// This file was generated automatically with mal2h.py. Do not edit this file
directly.
+{ "50_pyapi", "\ninclude pyapi;" },
diff --git a/sql/backends/monet5/UDF/pyapi/pyapi.mal.h
b/sql/backends/monet5/UDF/pyapi/pyapi.mal.h
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/pyapi/pyapi.mal.h
@@ -0,0 +1,10 @@
+/*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+*/
+
+// This file was generated automatically with mal2h.py. Do not edit this file
directly.
+{ "pyapi", "\nmodule pyapi;\n\nunsafe pattern
eval(fptr:ptr,expr:str):any\naddress PYAPI2PyAPIevalStd\ncomment \"Execute a
simple Python script returning a single value\";\n\nunsafe pattern
eval(fptr:ptr,expr:str,arg:any...):any...\naddress PYAPI2PyAPIevalStd\ncomment
\"Execute a simple Python script value\";\n\nunsafe pattern
subeval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI2PyAPIevalAggr\ncomment \"grouped aggregates through Python\";\n\nunsafe
pattern eval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI2PyAPIevalAggr\ncomment \"grouped aggregates through Python\";\n\nunsafe
pattern eval_loader(fptr:ptr,expr:str):any...\naddress
PYAPI2PyAPIevalLoader\ncomment \"loader functions through Python\";\n\nunsafe
pattern eval_loader(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI2PyAPIevalLoader\ncomment \"loader functions through Python\";\n\ncommand
prelude() :void address PYAPI2PyAPIprelude;\npyapi.prelude();\n\nmodule
batpyapi;\n\nunsafe pattern eval(fptr:p
tr,expr:str,arg:any...):any...\naddress PYAPI2PyAPIevalStd\ncomment \"Execute
a simple Python script value\";\n\nunsafe pattern
subeval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI2PyAPIevalAggr\ncomment \"grouped aggregates through Python\";\n\nunsafe
pattern eval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI2PyAPIevalAggr\ncomment \"grouped aggregates through Python\";\n\nunsafe
pattern eval_loader(fptr:ptr,expr:str):any...\naddress
PYAPI2PyAPIevalLoader\ncomment \"loader functions through Python\";\n\nunsafe
pattern eval_loader(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI2PyAPIevalLoader\ncomment \"loader functions through Python\";\n\n\nmodule
pyapimap;\n\npattern eval(fptr:ptr,expr:str):any\naddress
PYAPI2PyAPIevalStdMap\ncomment \"Execute a simple Python script returning a
single value\";\n\npattern eval(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI2PyAPIevalStdMap\ncomment \"Execute a simple Python script
value\";\n\npattern subeval_aggr(fp
tr:ptr,expr:str,arg:any...):any...\naddress PYAPI2PyAPIevalAggrMap\ncomment
\"grouped aggregates through Python\";\n\npattern
eval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI2PyAPIevalAggrMap\ncomment \"grouped aggregates through
Python\";\n\nmodule batpyapimap;\n\npattern
eval(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI2PyAPIevalStdMap\ncomment \"Execute a simple Python script
value\";\n\npattern subeval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI2PyAPIevalAggrMap\ncomment \"grouped aggregates through
Python\";\n\npattern eval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI2PyAPIevalAggrMap\ncomment \"grouped aggregates through Python\";" },
diff --git a/sql/backends/monet5/UDF/pyapi3/50_pyapi3.mal.h
b/sql/backends/monet5/UDF/pyapi3/50_pyapi3.mal.h
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/pyapi3/50_pyapi3.mal.h
@@ -0,0 +1,10 @@
+/*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+*/
+
+// This file was generated automatically with mal2h.py. Do not edit this file
directly.
+{ "50_pyapi3", "\ninclude pyapi3;" },
diff --git a/sql/backends/monet5/UDF/pyapi3/pyapi3.mal.h
b/sql/backends/monet5/UDF/pyapi3/pyapi3.mal.h
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/pyapi3/pyapi3.mal.h
@@ -0,0 +1,10 @@
+/*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+*/
+
+// This file was generated automatically with mal2h.py. Do not edit this file
directly.
+{ "pyapi3", "\nmodule pyapi3;\n\nunsafe pattern
eval(fptr:ptr,expr:str):any\naddress PYAPI3PyAPIevalStd\ncomment \"Execute a
simple Python script returning a single value\";\n\nunsafe pattern
eval(fptr:ptr,expr:str,arg:any...):any...\naddress PYAPI3PyAPIevalStd\ncomment
\"Execute a simple Python script value\";\n\nunsafe pattern
subeval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI3PyAPIevalAggr\ncomment \"grouped aggregates through Python\";\n\nunsafe
pattern eval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI3PyAPIevalAggr\ncomment \"grouped aggregates through Python\";\n\nunsafe
pattern eval_loader(fptr:ptr,expr:str):any...\naddress
PYAPI3PyAPIevalLoader\ncomment \"loader functions through Python\";\n\nunsafe
pattern eval_loader(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI3PyAPIevalLoader\ncomment \"loader functions through Python\";\n\ncommand
prelude() :void address PYAPI3PyAPIprelude;\npyapi3.prelude();\n\nmodule
batpyapi3;\n\nunsafe pattern eval(fp
tr:ptr,expr:str,arg:any...):any...\naddress PYAPI3PyAPIevalStd\ncomment
\"Execute a simple Python script value\";\n\nunsafe pattern
subeval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI3PyAPIevalAggr\ncomment \"grouped aggregates through Python\";\n\nunsafe
pattern eval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI3PyAPIevalAggr\ncomment \"grouped aggregates through Python\";\n\nunsafe
pattern eval_loader(fptr:ptr,expr:str):any...\naddress
PYAPI3PyAPIevalLoader\ncomment \"loader functions through Python\";\n\nunsafe
pattern eval_loader(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI3PyAPIevalLoader\ncomment \"loader functions through Python\";\n\nmodule
pyapi3map;\n\npattern eval(fptr:ptr,expr:str):any\naddress
PYAPI3PyAPIevalStdMap\ncomment \"Execute a simple Python script returning a
single value\";\n\npattern eval(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI3PyAPIevalStdMap\ncomment \"Execute a simple Python script
value\";\n\npattern subeval_aggr
(fptr:ptr,expr:str,arg:any...):any...\naddress PYAPI3PyAPIevalAggrMap\ncomment
\"grouped aggregates through Python\";\n\npattern
eval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI3PyAPIevalAggrMap\ncomment \"grouped aggregates through
Python\";\n\nmodule batpyapi3map;\n\npattern
eval(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI3PyAPIevalStdMap\ncomment \"Execute a simple Python script
value\";\n\npattern subeval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI3PyAPIevalAggrMap\ncomment \"grouped aggregates through
Python\";\n\npattern eval_aggr(fptr:ptr,expr:str,arg:any...):any...\naddress
PYAPI3PyAPIevalAggrMap\ncomment \"grouped aggregates through Python\";" },
diff --git a/sql/backends/monet5/UDF/udf/80_udf.mal.h
b/sql/backends/monet5/UDF/udf/80_udf.mal.h
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/udf/80_udf.mal.h
@@ -0,0 +1,10 @@
+/*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+*/
+
+// This file was generated automatically with mal2h.py. Do not edit this file
directly.
+{ "80_udf", "\n\ninclude udf;" },
diff --git a/sql/backends/monet5/UDF/udf/80_udf_hge.mal.h
b/sql/backends/monet5/UDF/udf/80_udf_hge.mal.h
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/udf/80_udf_hge.mal.h
@@ -0,0 +1,10 @@
+/*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+*/
+
+// This file was generated automatically with mal2h.py. Do not edit this file
directly.
+{ "80_udf_hge", "\n\ninclude udf_hge;" },
diff --git a/sql/backends/monet5/UDF/udf/udf.mal.h
b/sql/backends/monet5/UDF/udf/udf.mal.h
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/udf/udf.mal.h
@@ -0,0 +1,10 @@
+/*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+*/
+
+// This file was generated automatically with mal2h.py. Do not edit this file
directly.
+{ "udf", "\nmodule udf;\n\ncommand reverse(ra1:str):str\naddress
UDFreverse\ncomment \"Reverse a string\";\n\n\nmodule batudf;\n\ncommand
reverse(b:bat[:str]):bat[:str]\naddress UDFBATreverse\ncomment \"Reverse a BAT
of strings\";\n\n\n\nmodule udf;\n\ncommand fuse(one:bte,two:bte):sht\naddress
UDFfuse_bte_sht\ncomment \"fuse two (1-byte) bte values into one (2-byte) sht
value\";\n\ncommand fuse(one:sht,two:sht):int\naddress UDFfuse_sht_int\ncomment
\"fuse two (2-byte) sht values into one (4-byte) int value\";\n\ncommand
fuse(one:int,two:int):lng\naddress UDFfuse_int_lng\ncomment \"fuse two (4-byte)
int values into one (8-byte) lng value\";\n\n\nmodule batudf;\n\ncommand
fuse(one:bat[:bte],two:bat[:bte]):bat[:sht]\naddress UDFBATfuse\ncomment \"fuse
two (1-byte) bte values into one (2-byte) sht value\";\n\ncommand
fuse(one:bat[:sht],two:bat[:sht]):bat[:int]\naddress UDFBATfuse\ncomment \"fuse
two (2-byte) sht values into one (4-byte) int value\";\n\ncommand
fuse(one:bat[:int],two:ba
t[:int]):bat[:lng]\naddress UDFBATfuse\ncomment \"fuse two (4-byte) int values
into one (8-byte) lng value\";" },
diff --git a/sql/backends/monet5/UDF/udf/udf_hge.mal.h
b/sql/backends/monet5/UDF/udf/udf_hge.mal.h
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/udf/udf_hge.mal.h
@@ -0,0 +1,10 @@
+/*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+*/
+
+// This file was generated automatically with mal2h.py. Do not edit this file
directly.
+{ "udf_hge", "\nmodule udf;\n\ncommand fuse(one:lng,two:lng):hge\naddress
UDFfuse_lng_hge\ncomment \"fuse two (8-byte) lng values into one (16-byte) hge
value\";\n\n\nmodule batudf;\n\ncommand
fuse(one:bat[:lng],two:bat[:lng]):bat[:hge]\naddress UDFBATfuse\ncomment \"fuse
two (8-byte) lng values into one (16-byte) hge value\";" },
diff --git a/sql/backends/monet5/sql_embedded.c
b/sql/backends/monet5/sql_embedded.c
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/sql_embedded.c
@@ -0,0 +1,73 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
+ */
+
+#include "monetdb_config.h"
+
+#include "sql_embedded.h"
+#include "gdk.h"
+#include "mal.h"
+#include "mal_client.h"
+#include "language.h"
+
+static struct mal_sql_scripts {
+ char *modnme;
+ char *script;
+} mal_sql_scripts[] = {
+#include "sql_decimal.mal.h"
+#include "sql_rank.mal.h"
+#include "sql_aggr_bte.mal.h"
+#include "sql_aggr_sht.mal.h"
+#include "sql_aggr_int.mal.h"
+#include "sql_aggr_lng.mal.h"
+#include "sql_aggr_flt.mal.h"
+#include "sql_aggr_dbl.mal.h"
+#include "sql_inspect.mal.h"
+#include "sqlcatalog.mal.h"
+#include "sql_transaction.mal.h"
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list