Changeset: 83109069c4de for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=83109069c4de Modified Files: geom/sql/40_geom.sql geom/sql/Makefile.ag geom/sql/geom.sql monetdb5/mal/mal_import.mx monetdb5/mal/mal_linker.mx sql/backends/monet5/sql_scenario.mx sql/sql/10_math.sql sql/sql/11_times.sql sql/sql/12_url.sql sql/sql/13_date.sql sql/sql/14_inet.sql sql/sql/15_history.sql sql/sql/16_tracelog.sql sql/sql/17_compress.sql sql/sql/18_dictionary.sql sql/sql/19_cluster.sql sql/sql/20_vacuum.sql sql/sql/21_dependency_functions.sql sql/sql/22_clients.sql sql/sql/23_skyserver.sql sql/sql/24_zorder.sql sql/sql/30_rdf.sql sql/sql/99_system.sql sql/sql/Makefile.ag sql/sql/clients.sql sql/sql/cluster.sql sql/sql/compress.sql sql/sql/date.sql sql/sql/dependency_functions.sql sql/sql/dictionary.sql sql/sql/history.sql sql/sql/inet.sql sql/sql/math.sql sql/sql/rdf.sql sql/sql/skyserver.sql sql/sql/system.sql sql/sql/times.sql sql/sql/tracelog.sql sql/sql/url.sql sql/sql/vacuum.sql sql/sql/zorder.sql Branch: default Log Message:
Implemented createdb.sql as a directory. If "createdb" is a directory in the search path, execute all .sql files in that directory in order when initializing a new database. This way it is easy to drop in extra SQL modules. Also removed definitions from geom.sql (renamed to 40_geom.sql) that don't actually work. diffs (258 lines): diff --git a/geom/sql/geom.sql b/geom/sql/40_geom.sql rename from geom/sql/geom.sql rename to geom/sql/40_geom.sql --- a/geom/sql/geom.sql +++ b/geom/sql/40_geom.sql @@ -43,11 +43,11 @@ CREATE FUNCTION Point(x double,y double) RETURNS Point external name geom.point; -CREATE FUNCTION Point(g Geometry) RETURNS Point external name geom.point; -CREATE FUNCTION Curve(g Geometry) RETURNS Curve external name geom.curve; -CREATE FUNCTION LineString(g Geometry) RETURNS LineString external name geom.linestring; -CREATE FUNCTION Surface(g Geometry) RETURNS Surface external name geom.surface; -CREATE FUNCTION Polygon(g Geometry) RETURNS Polygon external name geom.polygon; +-- CREATE FUNCTION Point(g Geometry) RETURNS Point external name geom.point; +-- CREATE FUNCTION Curve(g Geometry) RETURNS Curve external name geom.curve; +-- CREATE FUNCTION LineString(g Geometry) RETURNS LineString external name geom.linestring; +-- CREATE FUNCTION Surface(g Geometry) RETURNS Surface external name geom.surface; +-- CREATE FUNCTION Polygon(g Geometry) RETURNS Polygon external name geom.polygon; -- ogc basic methods CREATE FUNCTION Dimension(g Geometry) RETURNS integer external name geom."Dimension"; diff --git a/geom/sql/Makefile.ag b/geom/sql/Makefile.ag --- a/geom/sql/Makefile.ag +++ b/geom/sql/Makefile.ag @@ -17,8 +17,8 @@ headers_sql = { HEADERS = sql - DIR = datadir/MonetDB/sql - SOURCES = geom.sql + DIR = libdir/monetdb5/createdb + SOURCES = 40_geom.sql } EXTRA_DIST_DIR = Tests diff --git a/monetdb5/mal/mal_import.mx b/monetdb5/mal/mal_import.mx --- a/monetdb5/mal/mal_import.mx +++ b/monetdb5/mal/mal_import.mx @@ -205,8 +205,10 @@ if ((filename = malResolveFile(name)) != NULL) { name = filename; - while ((p = strchr(filename, PATH_SEP)) != NULL) { - *p = '\0'; + do { + p = strchr(filename, PATH_SEP); + if (p) + *p = '\0'; c->srcFile = filename; c->yycur = 0; c->bak = NULL; @@ -215,16 +217,9 @@ parseMAL(c, c->curprg); bstream_destroy(c->fdin); } - filename = p + 1; - } - c->srcFile = filename; - c->yycur = 0; - c->bak = NULL; - if ((s = malLoadScript(c, filename, &c->fdin)) == 0) { - cfdin = c->fdin; - parseMAL(c, c->curprg); - bstream_destroy(cfdin); - } + if (p) + filename = p + 1; + } while (p); GDKfree(name); c->fdin = NULL; } diff --git a/monetdb5/mal/mal_linker.mx b/monetdb5/mal/mal_linker.mx --- a/monetdb5/mal/mal_linker.mx +++ b/monetdb5/mal/mal_linker.mx @@ -65,7 +65,7 @@ #define MONET64 1 mal_export MALfcn getAddress(str filename, str modnme, str fcnname,int silent); mal_export char *MSP_locate_script(const char *mod_name); -mal_export char *MSP_locate_sqlscript(const char *mod_name); +mal_export char *MSP_locate_sqlscript(const char *mod_name, bit recurse); mal_export char *MSP_locate_file(const char *mod_name); mal_export str loadLibrary(str modulename, int flag); mal_export void unloadLibraries(void); @@ -346,7 +346,7 @@ #define MAXMULTISCRIPT 48 static char * -locate_file(const char *basename, const char *ext, const bit recurse) +locate_file(const char *basename, const char *ext, bit recurse) { char *mod_path = GDKgetenv("monet_mod_path"); char *fullname; @@ -455,10 +455,10 @@ } char * -MSP_locate_sqlscript(const char *filename) +MSP_locate_sqlscript(const char *filename, bit recurse) { /* no directory semantics (yet) */ - return locate_file(filename, SQL_EXT, 0); + return locate_file(filename, SQL_EXT, recurse); } char * diff --git a/sql/backends/monet5/sql_scenario.mx b/sql/backends/monet5/sql_scenario.mx --- a/sql/backends/monet5/sql_scenario.mx +++ b/sql/backends/monet5/sql_scenario.mx @@ -474,25 +474,37 @@ SQLnewcatalog = 0; snprintf(path, PATHLENGTH, "createdb"); slash_2_dir_sep(path); - fullname = MSP_locate_sqlscript(path); + fullname = MSP_locate_sqlscript(path, 1); if (fullname) { - fd = open_rastream(fullname); + str filename = fullname; + str p; + fprintf(stdout, "# SQL catalog created, loading sql scripts once\n"); + do { + p = strchr(filename, PATH_SEP); + if (p) + *p = '\0'; + fd = open_rastream(filename); + if (p) + filename = p + 1; + + if (fd) { + str msg = MAL_SUCCEED; + bfd = bstream_create(fd, 128 * BLOCK); + if (bfd && bstream_next(bfd) >= 0) + msg = SQLstatementIntern(c, &bfd->buf, "sql.init", TRUE, FALSE); + bstream_destroy(bfd); + if (m->sa) + sa_destroy(m->sa); + m->sa = NULL; + if (msg) { + GDKfree(fullname); + return msg; + } + } + } while (p); GDKfree(fullname); - - if (fd) { - str msg = MAL_SUCCEED; - bfd = bstream_create(fd, 128 * BLOCK); - fprintf(stdout, "# SQL catalog created, loading sql scripts once\n"); - if (bfd && bstream_next(bfd) >= 0) - msg = SQLstatementIntern(c, &bfd->buf, "sql.init", TRUE, FALSE); - bstream_destroy(bfd); - if (m->sa) - sa_destroy(m->sa); - m->sa = NULL; - return msg; - } - } - fprintf(stderr, "!could not read createdb.sql\n"); + } else + fprintf(stderr, "!could not read createdb.sql\n"); } fflush(stdout); fflush(stderr); @@ -824,7 +836,7 @@ str *expr; mvc *m; - fullname= MSP_locate_sqlscript(*name); + fullname= MSP_locate_sqlscript(*name, 0); if ( fullname == NULL) fullname= *name; fd = open_rastream(fullname); diff --git a/sql/sql/math.sql b/sql/sql/10_math.sql rename from sql/sql/math.sql rename to sql/sql/10_math.sql diff --git a/sql/sql/times.sql b/sql/sql/11_times.sql rename from sql/sql/times.sql rename to sql/sql/11_times.sql diff --git a/sql/sql/url.sql b/sql/sql/12_url.sql rename from sql/sql/url.sql rename to sql/sql/12_url.sql diff --git a/sql/sql/date.sql b/sql/sql/13_date.sql rename from sql/sql/date.sql rename to sql/sql/13_date.sql diff --git a/sql/sql/inet.sql b/sql/sql/14_inet.sql rename from sql/sql/inet.sql rename to sql/sql/14_inet.sql diff --git a/sql/sql/history.sql b/sql/sql/15_history.sql rename from sql/sql/history.sql rename to sql/sql/15_history.sql diff --git a/sql/sql/tracelog.sql b/sql/sql/16_tracelog.sql rename from sql/sql/tracelog.sql rename to sql/sql/16_tracelog.sql diff --git a/sql/sql/compress.sql b/sql/sql/17_compress.sql rename from sql/sql/compress.sql rename to sql/sql/17_compress.sql diff --git a/sql/sql/dictionary.sql b/sql/sql/18_dictionary.sql rename from sql/sql/dictionary.sql rename to sql/sql/18_dictionary.sql diff --git a/sql/sql/cluster.sql b/sql/sql/19_cluster.sql rename from sql/sql/cluster.sql rename to sql/sql/19_cluster.sql diff --git a/sql/sql/vacuum.sql b/sql/sql/20_vacuum.sql rename from sql/sql/vacuum.sql rename to sql/sql/20_vacuum.sql diff --git a/sql/sql/dependency_functions.sql b/sql/sql/21_dependency_functions.sql rename from sql/sql/dependency_functions.sql rename to sql/sql/21_dependency_functions.sql diff --git a/sql/sql/clients.sql b/sql/sql/22_clients.sql rename from sql/sql/clients.sql rename to sql/sql/22_clients.sql diff --git a/sql/sql/skyserver.sql b/sql/sql/23_skyserver.sql rename from sql/sql/skyserver.sql rename to sql/sql/23_skyserver.sql diff --git a/sql/sql/zorder.sql b/sql/sql/24_zorder.sql rename from sql/sql/zorder.sql rename to sql/sql/24_zorder.sql diff --git a/sql/sql/rdf.sql b/sql/sql/30_rdf.sql rename from sql/sql/rdf.sql rename to sql/sql/30_rdf.sql diff --git a/sql/sql/system.sql b/sql/sql/99_system.sql rename from sql/sql/system.sql rename to sql/sql/99_system.sql diff --git a/sql/sql/Makefile.ag b/sql/sql/Makefile.ag --- a/sql/sql/Makefile.ag +++ b/sql/sql/Makefile.ag @@ -19,21 +19,21 @@ headers_sql = { HEADERS = sql + DIR = libdir/monetdb5/createdb + SOURCES = 10_math.sql 11_times.sql 12_url.sql 13_date.sql 14_inet.sql 15_history.sql 16_tracelog.sql 17_compress.sql 18_dictionary.sql 19_cluster.sql 20_vacuum.sql 21_dependency_functions.sql 22_clients.sql 23_skyserver.sql 24_zorder.sql 25_debug.sql 99_system.sql +} + +headers_moresql = { + HEADERS = sql DIR = libdir/monetdb5 SOURCES = \ - createdb.mx \ cache.sql octopus.sql parts.sql \ - replication.sql temporal.sql vacuum.sql + replication.sql temporal.sql } headers_rdf = { COND = HAVE_RAPTOR HEADERS = sql - DIR = libdir/monetdb5 - SOURCES = rdf.sql + DIR = libdir/monetdb5/createdb + SOURCES = 30_rdf.sql } - -EXTRA_DIST = clients.sql cluster.sql compress.sql date.sql \ - dependency_functions.sql dictionary.sql history.sql inet.sql \ - math.sql mtime.sql skyserver.sql system.sql times.sql \ - tracelog.sql url.sql zorder.sql _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list