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

Reply via email to