Changeset: 07436ee6b98e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=07436ee6b98e Added Files: monetdb5/modules/atoms/uuid.h Modified Files: clients/Tests/All cmake/Modules/FindNumPy.cmake geom/monetdb5/CMakeLists.txt geom/monetdb5/geom.c geom/monetdb5/geom_funcs.mal monetdb5/extras/mal_optimizer_template/CMakeLists.txt monetdb5/extras/mal_optimizer_template/opt_sql_append.c monetdb5/extras/rapi/CMakeLists.txt monetdb5/extras/rapi/rapi.c monetdb5/extras/rapi/rapi.mal monetdb5/mal/mal.c monetdb5/mal/mal_parser.c monetdb5/mal/mal_prelude.c monetdb5/mal/mal_prelude.h monetdb5/mal/mel.h monetdb5/modules/atoms/CMakeLists.txt monetdb5/modules/atoms/batxml.c monetdb5/modules/atoms/blob.c monetdb5/modules/atoms/color.c monetdb5/modules/atoms/identifier.c monetdb5/modules/atoms/inet.c monetdb5/modules/atoms/json.c monetdb5/modules/atoms/mtime.c monetdb5/modules/atoms/str.c monetdb5/modules/atoms/streams.c monetdb5/modules/atoms/url.c monetdb5/modules/atoms/uuid.c monetdb5/modules/atoms/xml.c monetdb5/modules/kernel/CMakeLists.txt monetdb5/modules/kernel/aggr.c monetdb5/modules/kernel/alarm.c monetdb5/modules/kernel/algebra.c monetdb5/modules/kernel/bat5.c monetdb5/modules/kernel/batcolor.c monetdb5/modules/kernel/batmmath.c monetdb5/modules/kernel/batstr.c monetdb5/modules/kernel/group.c monetdb5/modules/kernel/microbenchmark.c monetdb5/modules/kernel/mmath.c monetdb5/modules/kernel/status.c monetdb5/modules/mal/01_batcalc.mal.sh monetdb5/modules/mal/CMakeLists.txt monetdb5/modules/mal/Tests/inspect05.stable.out.int128 monetdb5/modules/mal/batExtensions.c monetdb5/modules/mal/batcalc.c monetdb5/modules/mal/bbp.c monetdb5/modules/mal/calc.c monetdb5/modules/mal/clients.c monetdb5/modules/mal/factories.c monetdb5/modules/mal/groupby.c monetdb5/modules/mal/inspect.c monetdb5/modules/mal/iterator.c monetdb5/modules/mal/json_util.c monetdb5/modules/mal/language.c monetdb5/modules/mal/mal_io.c monetdb5/modules/mal/mal_mapi.c monetdb5/modules/mal/manifold.c monetdb5/modules/mal/manual.c monetdb5/modules/mal/mat.c monetdb5/modules/mal/mdb.c monetdb5/modules/mal/mkey.c monetdb5/modules/mal/oltp.c monetdb5/modules/mal/orderidx.c monetdb5/modules/mal/pcre.c monetdb5/modules/mal/profiler.c monetdb5/modules/mal/projectionpath.c monetdb5/modules/mal/querylog.c monetdb5/modules/mal/remote.c monetdb5/modules/mal/sample.c monetdb5/modules/mal/sysmon.c monetdb5/modules/mal/tokenizer.c monetdb5/modules/mal/tracer.c monetdb5/modules/mal/transaction.c monetdb5/modules/mal/txtsim.c monetdb5/modules/mal/wlc.c monetdb5/optimizer/CMakeLists.txt monetdb5/optimizer/opt_wrapper.c monetdb5/optimizer/optimizer.c monetdb5/optimizer/optimizer.mal monetdb5/optimizer/optimizer_private.h sql/backends/monet5/CMakeLists.txt sql/backends/monet5/UDF/capi/CMakeLists.txt sql/backends/monet5/UDF/capi/capi.c sql/backends/monet5/UDF/pyapi3/CMakeLists.txt sql/backends/monet5/UDF/pyapi3/pyapi3.c sql/backends/monet5/UDF/udf/CMakeLists.txt sql/backends/monet5/UDF/udf/udf.c sql/backends/monet5/generator/CMakeLists.txt sql/backends/monet5/generator/generator.c sql/backends/monet5/sql.c sql/backends/monet5/sql.mal sql/backends/monet5/sql_statement.c sql/backends/monet5/vaults/fits/CMakeLists.txt sql/backends/monet5/vaults/fits/fits.c sql/backends/monet5/vaults/netcdf/CMakeLists.txt sql/backends/monet5/vaults/netcdf/netcdf.c sql/backends/monet5/vaults/shp/CMakeLists.txt sql/backends/monet5/vaults/shp/shp.c sql/common/sql_types.c sql/scripts/26_sysmon.sql Branch: mbedded Log Message:
added all mal code as static array's to the specific module c file 2 exceptions: batcalc uses a callback scheme, so we directly inject malblk/instrptr's (less overhead (speed and binary size) Basicaly replacing the .sh files for bat*.mal.sh geom had some functions which require the parser, ie those are passed as string now. diffs (truncated from 9620 to 300 lines): diff --git a/clients/Tests/All b/clients/Tests/All --- a/clients/Tests/All +++ b/clients/Tests/All @@ -1,4 +1,4 @@ exports HAVE_FITS&HAVE_GEOM&HAVE_LIBR&HAVE_LIBPY3&HAVE_LIDAR&HAVE_NETCDF&HAVE_SHP&NOT_WIN32?MAL-signatures -MERCURIAL?malcheck +#MERCURIAL?malcheck mclient-uri diff --git a/cmake/Modules/FindNumPy.cmake b/cmake/Modules/FindNumPy.cmake --- a/cmake/Modules/FindNumPy.cmake +++ b/cmake/Modules/FindNumPy.cmake @@ -62,28 +62,28 @@ if(NOT _NUMPY_SEARCH_SUCCESS MATCHES 0) "NumPy import failure:\n${_NUMPY_ERROR_VALUE}") endif() set(NUMPY_FOUND FALSE) -endif() +else() + # Convert the process output into a list + string(REGEX REPLACE ";" "\\\\;" _NUMPY_VALUES ${_NUMPY_VALUES}) + string(REGEX REPLACE "\n" ";" _NUMPY_VALUES ${_NUMPY_VALUES}) + list(GET _NUMPY_VALUES 0 NUMPY_VERSION) + list(GET _NUMPY_VALUES 1 NUMPY_INCLUDE_DIRS) -# Convert the process output into a list -string(REGEX REPLACE ";" "\\\\;" _NUMPY_VALUES ${_NUMPY_VALUES}) -string(REGEX REPLACE "\n" ";" _NUMPY_VALUES ${_NUMPY_VALUES}) -list(GET _NUMPY_VALUES 0 NUMPY_VERSION) -list(GET _NUMPY_VALUES 1 NUMPY_INCLUDE_DIRS) - -# Make sure all directory separators are '/' -string(REGEX REPLACE "\\\\" "/" NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS}) + # Make sure all directory separators are '/' + string(REGEX REPLACE "\\\\" "/" NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS}) -# Get the major and minor version numbers -string(REGEX REPLACE "\\." ";" _NUMPY_VERSION_LIST ${NUMPY_VERSION}) -list(GET _NUMPY_VERSION_LIST 0 NUMPY_VERSION_MAJOR) -list(GET _NUMPY_VERSION_LIST 1 NUMPY_VERSION_MINOR) -list(GET _NUMPY_VERSION_LIST 2 NUMPY_VERSION_PATCH) -string(REGEX MATCH "[0-9]*" NUMPY_VERSION_PATCH ${NUMPY_VERSION_PATCH}) -math(EXPR NUMPY_VERSION_DECIMAL - "(${NUMPY_VERSION_MAJOR} * 10000) + (${NUMPY_VERSION_MINOR} * 100) + ${NUMPY_VERSION_PATCH}") + # Get the major and minor version numbers + string(REGEX REPLACE "\\." ";" _NUMPY_VERSION_LIST ${NUMPY_VERSION}) + list(GET _NUMPY_VERSION_LIST 0 NUMPY_VERSION_MAJOR) + list(GET _NUMPY_VERSION_LIST 1 NUMPY_VERSION_MINOR) + list(GET _NUMPY_VERSION_LIST 2 NUMPY_VERSION_PATCH) + string(REGEX MATCH "[0-9]*" NUMPY_VERSION_PATCH ${NUMPY_VERSION_PATCH}) + math(EXPR NUMPY_VERSION_DECIMAL + "(${NUMPY_VERSION_MAJOR} * 10000) + (${NUMPY_VERSION_MINOR} * 100) + ${NUMPY_VERSION_PATCH}") -find_package_message(NUMPY - "Found NumPy: version \"${NUMPY_VERSION}\" ${NUMPY_INCLUDE_DIRS}" - "${NUMPY_INCLUDE_DIRS}${NUMPY_VERSION}") + find_package_message(NUMPY + "Found NumPy: version \"${NUMPY_VERSION}\" ${NUMPY_INCLUDE_DIRS}" + "${NUMPY_INCLUDE_DIRS}${NUMPY_VERSION}") -set(NUMPY_FOUND TRUE) + set(NUMPY_FOUND TRUE) +endif() diff --git a/geom/monetdb5/CMakeLists.txt b/geom/monetdb5/CMakeLists.txt --- a/geom/monetdb5/CMakeLists.txt +++ b/geom/monetdb5/CMakeLists.txt @@ -9,17 +9,17 @@ if(GEOS_FOUND) add_library(geomodule MODULE) - set(include_mal_files - geom - geom_funcs) + #set(include_mal_files + # geom + # geom_funcs) set(include_sql_files 40_geom) - create_include_object( - MAL_LANGUAGE - name_module "geomodule" - modules_list ${include_mal_files}) + #create_include_object( + # MAL_LANGUAGE + # name_module "geomodule" + # modules_list ${include_mal_files}) create_include_object( SQL_LANGUAGE @@ -35,7 +35,7 @@ if(GEOS_FOUND) geom.c geomBulk.c geom_upgrade.c - ${MONETDB_CURRENT_MAL_SOURCES} + # ${MONETDB_CURRENT_MAL_SOURCES} ${MONETDB_CURRENT_SQL_SOURCES} PUBLIC ${geomodule_public_headers}) diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c --- a/geom/monetdb5/geom.c +++ b/geom/monetdb5/geom.c @@ -6012,3 +6012,556 @@ wkbContains_point(bit *out, wkb **a, dbl *out = TRUE; return MAL_SUCCEED; } + +static const char geom_functions[] = " \ +module geom; \ + \ +function AsText(w:wkb) :str; \ + x := ToText(w,0); \ + return x; \ +end AsText; \ +function AsEWKT(w:wkb) :str; \ + x := ToText(w,1); \ + return x; \ +end AsEWKT; \ + \ +function GeomFromText(wkt:str, srid:int) :wkb; \ + x := FromText(wkt,srid,0); \ + return x; \ +end GeomFromText; \ +function PointFromText(wkt:str, srid:int) :wkb; \ + x := FromText(wkt,srid,1); \ + return x; \ +end PointFromText; \ +function LineFromText(wkt:str, srid:int) :wkb; \ + x := FromText(wkt,srid,2); \ + return x; \ +end LineFromText; \ +function PolygonFromText(wkt:str, srid:int) :wkb; \ + x := FromText(wkt,srid,4); \ + return x; \ +end PolygonFromText; \ +function MPointFromText(wkt:str, srid:int) :wkb; \ + x := FromText(wkt,srid,5); \ + return x; \ +end MPointFromText; \ +function MLineFromText(wkt:str, srid:int) :wkb; \ + x := FromText(wkt,srid,6); \ + return x; \ +end MLineFromText; \ +function MPolyFromText(wkt:str, srid:int) :wkb; \ + x := FromText(wkt,srid,7); \ + return x; \ +end MPolyFromText; \ +function GeomCollFromText(wkt:str, srid:int) :wkb; \ + x := FromText(wkt,srid,8); \ + return x; \ +end GeomCollFromText; \ + \ +function GeomFromText(wkt:str) :wkb; \ + x := FromText(wkt,0,0); \ + return x; \ +end GeomFromText; \ +function PointFromText(wkt:str) :wkb; \ + x := FromText(wkt,0,1); \ + return x; \ +end PointFromText; \ +function LineFromText(wkt:str) :wkb; \ + x := FromText(wkt,0,2); \ + return x; \ +end LineFromText; \ +function PolygonFromText(wkt:str) :wkb; \ + x := FromText(wkt,0,4); \ + return x; \ +end PolygonFromText; \ +function MPointFromText(wkt:str) :wkb; \ + x := FromText(wkt,0,5); \ + return x; \ +end MPointFromText; \ +function MLineFromText(wkt:str) :wkb; \ + x := FromText(wkt,0,6); \ + return x; \ +end MLineFromText; \ +function MPolyFromText(wkt:str) :wkb; \ + x := FromText(wkt,0,7); \ + return x; \ +end MPolyFromText; \ +function GeomCollFromText(wkt:str) :wkb; \ + x := FromText(wkt,0,8); \ + return x; \ +end GeomCollFromText; \ + \ +#function GeomFromWKB(wkb_raw:????, srid:int) : wkb; \ +# x := wkb.FromWKB(wkb_raw, srid, 0); \ +# return x; \ +#end GeomFromWKB; \ + \ +function NumInteriorRings(w:wkb) :int; \ + x := geom.NumRings(w, 0); \ + return x; \ +end NumInteriorRings; \ +function NRings(w:wkb) :int; \ + x := geom.NumRings(w, 1); \ + return x; \ +end NRings; \ + \ +function BdPolyFromText(wkt:str, srid:int) :wkb; \ + x := MLineStringToPolygon(wkt,srid,0); \ + return x; \ +end BdPolyFromText; \ +function BdMPolyFromText(wkt:str, srid:int) :wkb; \ + x := MLineStringToPolygon(wkt,srid,1); \ + return x; \ +end BdMPolyFromText; \ + \ +function MakePoint(x:dbl, y:dbl) :wkb; \ + p := MakePointXYZM(x, y, 0:dbl, 0:dbl, 0); \ + return p; \ +end MakePoint; \ +function MakePoint(x:dbl, y:dbl, z:dbl) :wkb; \ + p := MakePointXYZM(x, y, z, 0:dbl, 10); \ + return p; \ +end MakePoint; \ +function MakePointM(x:dbl, y:dbl, m:dbl) :wkb; \ + p := MakePointXYZM(x, y, 0:dbl, m, 1); \ + return p; \ +end MakePointM; \ +function MakePoint(x:dbl, y:dbl, z:dbl, m:dbl) :wkb; \ + p := MakePointXYZM(x, y, z, m, 11); \ + return p; \ +end MakePoint; \ + \ +function GeometryType1(w:wkb) :str; \ + x := GeometryType(w, 0); \ + return x; \ +end GeometryType1; \ +function GeometryType2(w:wkb) :str; \ + x := GeometryType(w, 1); \ + return x; \ +end GeometryType2; \ + \ +function X(w:wkb) :dbl; \ + c := GetCoordinate(w, 0); \ + return c; \ +end X; \ +function Y(w:wkb) :dbl; \ + c := GetCoordinate(w, 1); \ + return c; \ +end Y; \ +function Z(w:wkb) :dbl; \ + c := GetCoordinate(w, 2); \ + return c; \ +end Z; \ + \ +function Force2D(g:wkb) :wkb; \ + x := ForceDimensions(g, 2); \ + return x; \ +end Force2D; \ + \ +function Force3D(g:wkb) :wkb; \ + x := ForceDimensions(g, 3); \ + return x; \ +end Force3D; \ + \ +function Translate(g:wkb, dx:dbl, dy:dbl) :wkb; \ + x := Translate3D(g,dx,dy,0:dbl); \ + return x; \ +end Translate; \ + \ +function Translate(g:wkb, dx:dbl, dy:dbl, dz:dbl) :wkb; \ + x := Translate3D(g,dx,dy,dz); \ + return x; \ +end Translate; \ + \ +function NumPoints(w:wkb) :int; \ + x := PointsNum(w, 1); \ + return x; \ +end NumPoints; \ +function NPoints(w:wkb) :int; \ + x := PointsNum(w, 0); \ + return x; \ +end NPoints; \ + \ +function MakeEnvelope(xmin:dbl, ymin:dbl, xmax:dbl, ymax:dbl, srid:int) :wkb; \ + x := EnvelopeFromCoordinates(xmin, ymin, xmax, ymax, srid); \ + return x; \ +end MakeEnvelope; \ + \ +function MakeEnvelope(xmin:dbl, ymin:dbl, xmax:dbl, ymax:dbl) :wkb; \ + x := EnvelopeFromCoordinates(xmin, ymin, xmax, ymax, 0);\ + return x; \ +end MakeEnvelope; \ + \ +function MakePolygon(external:wkb) :wkb; \ + x := Polygon(external, nil:bat[:wkb], 0); \ + return x; \ +end MakePolygon; \ +function MakePolygon(external:wkb, srid:int) :wkb; \ + x := Polygon(external, nil:bat[:wkb], srid); \ + return x; \ +end MakePolygon; \ +#function MakePolygon(external:wkb, internal:bat[:wkb]) :wkb; \ +# x := Polygon(external, internal, 0); \ +# return x; \ +#end MakePolygon; \ + \ +function XMinFromWKB(g:wkb) :dbl; \ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list