Changeset: 12ae6b3910b9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=12ae6b3910b9
Modified Files:
clients/src/python/COPYRIGHT
clients/src/python/Makefile.ag
clients/src/python/README.rst
clients/src/python/debian/changelog
clients/src/python/debian/compat
clients/src/python/debian/control
clients/src/python/debian/copyright
clients/src/python/debian/docs
clients/src/python/debian/pycompat
clients/src/python/debian/rules
clients/src/python/examples/basics.py
clients/src/python/examples/perf.py
clients/src/python/monetdb/Makefile.ag
clients/src/python/monetdb/__init__.py
clients/src/python/monetdb/mapi.py
clients/src/python/monetdb/mapi2.py
clients/src/python/monetdb/mapi3.py
clients/src/python/monetdb/mclient.py
clients/src/python/monetdb/monetdb_exceptions.py
clients/src/python/monetdb/sql/Makefile.ag
clients/src/python/monetdb/sql/__init__.py
clients/src/python/monetdb/sql/connections.py
clients/src/python/monetdb/sql/converters.py
clients/src/python/monetdb/sql/cursors.py
clients/src/python/monetdb/sql/type_codes.py
clients/src/python/setup.py
clients/src/python/test/Makefile.ag
clients/src/python/test/capabilities.py
clients/src/python/test/capabilities_monetdb.py
clients/src/python/test/dbapi20.py
clients/src/python/test/dbapi20_monetdb.py
sql/src/backends/monet5/sql_scenario.mx
Branch: default
Log Message:
mreged default
diffs (truncated from 8849 to 300 lines):
diff -r b40c380dc6f5 -r 12ae6b3910b9 .hgignore
--- a/.hgignore Thu May 13 22:40:51 2010 +0200
+++ b/.hgignore Thu May 13 22:42:32 2010 +0200
@@ -29,3 +29,4 @@
^buildtools/burg/ylwrap$
^buildtools/mel/depcomp$
^pathfinder/conf/compile$
+\.pyc$
diff -r b40c380dc6f5 -r 12ae6b3910b9 MonetDB5/conf/monetdb5.conf.in
--- a/MonetDB5/conf/monetdb5.conf.in Thu May 13 22:40:51 2010 +0200
+++ b/MonetDB5/conf/monetdb5.conf.in Thu May 13 22:42:32 2010 +0200
@@ -231,7 +231,7 @@
datacyclotron_pipe=inline,remap,evaluate,costModel,coercions,emptySet,aliases,datacyclotron,mergetable,deadcode,constants,commonTerms,joinPath,reorder,deadcode,reduce,dataflow,history,replication,multiplex,garbageCollector
# The default + derivePath
-derive_pipe=inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,derivePath,joinPath,deadcode,reduce,dataflow,history,multiplex,garbageCollector
+derive_pipe=inline,remap,evaluate,costModel,coercions,emptySet,aliases,mitosis,mergetable,deadcode,commonTerms,derivePath,joinPath,reorder,deadcode,reduce,dataflow,history,multiplex,garbageCollector
# The default + dictionary
dictionary_pipe=inline,remap,dictionary,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,dataflow,history,multiplex,garbageCollector
diff -r b40c380dc6f5 -r 12ae6b3910b9 MonetDB5/src/mal/mal_function.mx
--- a/MonetDB5/src/mal/mal_function.mx Thu May 13 22:40:51 2010 +0200
+++ b/MonetDB5/src/mal/mal_function.mx Thu May 13 22:42:32 2010 +0200
@@ -295,29 +295,29 @@
yieldseen= TRUE;
}
case RETURNsymbol:
- { InstrPtr ps= getInstrPtr(mb,0);
- int e;
+ {
+ InstrPtr ps = getInstrPtr(mb, 0);
+ int e;
if (p->barrier == RETURNsymbol)
- yieldseen = FALSE; /* always end with a
return */
- if( ps->retc != p->retc){
- showScriptException(mb,i,SYNTAX,
- "invalid return target!");
- mb->errors++;
- } else
- if(ps->typechk == TYPE_RESOLVED)
- for(e=0;e<p->retc; e++){
- if( resolveType(getArgType(mb,ps,e),getArgType(mb,p,e))
<0 ){
- str tpname=
getTypeName(getArgType(mb,p,e));
- showScriptException(mb,i,TYPE,
- "%s type mismatch at
type '%s'",
- (p->barrier==RETURNsymbol?"RETURN":"YIELD"),
tpname);
- GDKfree(tpname);
- mb->errors++;
- }
- }
- if(ps->typechk != TYPE_RESOLVED) fixed =0;
+ yieldseen = FALSE; /* always end
with a return */
+ if (ps->retc != p->retc) {
+ showScriptException(mb, i, SYNTAX,
+ "invalid return
target!");
+ mb->errors++;
+ } else if (ps->typechk == TYPE_RESOLVED)
+ for (e = 0; e < p->retc; e++) {
+ if (resolveType(getArgType(mb,
ps, e), getArgType(mb, p, e)) < 0) {
+ str tpname =
getTypeName(getArgType(mb, p, e));
+ showScriptException(mb,
i, TYPE,
+ "%s
type mismatch at type '%s'",
+
(p->barrier == RETURNsymbol ? "RETURN" : "YIELD"), tpname);
+ GDKfree(tpname);
+ mb->errors++;
+ }
+ }
+ if (ps->typechk != TYPE_RESOLVED) fixed = 0;
}
- if (btop==0)
+ if (btop == 0)
retseen = 1;
break;
case RAISEsymbol:
diff -r b40c380dc6f5 -r 12ae6b3910b9 MonetDB5/src/mal/mal_import.mx
--- a/MonetDB5/src/mal/mal_import.mx Thu May 13 22:40:51 2010 +0200
+++ b/MonetDB5/src/mal/mal_import.mx Thu May 13 22:42:32 2010 +0200
@@ -34,7 +34,6 @@
#include "mal_utils.h"
mal_export void slash_2_dir_sep(str fname);
-mal_export stream *openSourceFile(str fname);
@-
The import context is located. If the module already exists,
we should silently skip parsing the file. This is handled at the parser level.
@@ -62,23 +61,23 @@
*s = DIR_SEP;
}
-stream *
-openSourceFile(str fname)
+static str
+malResolveFile(str fname)
+{
+ char path[PATHLENGTH];
+
+ snprintf(path, PATHLENGTH, "%s", fname);
+ slash_2_dir_sep(path);
+ return MSP_locate_script(path);
+}
+
+static stream *
+malOpenSource(str file)
{
stream *fd = NULL;
- char path[PATHLENGTH];
- str fullname;
- snprintf(path,PATHLENGTH,"%s",fname);
- slash_2_dir_sep(path);
- fullname = MSP_locate_script(path);
-
- if (fullname) {
- fd = open_rastream(fullname);
- GDKfree(fullname);
- } else {
- fd = open_rastream(path);
- }
+ if (file)
+ fd = open_rastream(file);
return fd;
}
@@ -97,14 +96,14 @@
{
stream *fd;
- fd = openSourceFile(name);
+ fd = malOpenSource(name);
if (stream_errnr(fd) == OPEN_ERROR) {
stream_destroy(fd);
throw(MAL, "malInclude", "could not open file: %s", name);
}
*fdin = bstream_create(fd, 128 * BLOCK);
- if( bstream_next(*fdin) < 0)
- stream_printf(c->fdout,"!WARNING: could not read %s\n",name);
+ if (bstream_next(*fdin) < 0)
+ stream_printf(c->fdout, "!WARNING: could not read %s\n", name);
return MAL_SUCCEED;
}
@@ -175,6 +174,8 @@
malInclude(Client c, str name, int listing)
{
str s= MAL_SUCCEED;
+ str filename;
+ str p;
bstream *oldfdin = c->fdin;
int oldyycur = c->yycur;
@@ -189,16 +190,30 @@
Module oldnspace = c->nspace;
Symbol oldprg = c->curprg;
- c->yycur = 0;
c->prompt = GDKstrdup(""); /* do not produce visible prompts */
c->promptlength = 0;
c->listing = listing;
- c->bak = NULL;
c->fdin = NULL;
- c->srcFile = name;
- if ((s = malLoadScript(c, name, &c->fdin)) == 0)
- parseMAL(c,c->curprg);
+
+ if ((filename = malResolveFile(name)) != NULL) {
+ name = filename;
+ while ((p = strchr(filename, PATH_SEP)) != NULL) {
+ *p = '\0';
+ c->srcFile = filename;
+ c->yycur = 0;
+ c->bak = NULL;
+ if ((s = malLoadScript(c, filename, &c->fdin)) == 0)
+ parseMAL(c, c->curprg);
+ filename = p + 1;
+ }
+ c->srcFile = filename;
+ c->yycur = 0;
+ c->bak = NULL;
+ if ((s = malLoadScript(c, filename, &c->fdin)) == 0)
+ parseMAL(c, c->curprg);
+ GDKfree(name);
+ }
@:restoreClient()@
return s;
@@ -228,25 +243,56 @@
evalFile(Client c, str fname, int listing){
@:restoreState@
stream *fd;
+ str p;
+ str filename;
str msg= MAL_SUCCEED;
- c->yycur = 0;
c->prompt = GDKstrdup(""); /* do not produce visible prompts */
c->promptlength = 0;
c->listing = listing;
- c->bak = NULL;
c->fdin = NULL;
- c->srcFile= fname;
- fd = openSourceFile(fname);
+
+ filename = malResolveFile(fname);
+ if (filename == NULL) {
+ stream_printf(c->fdout, "#WARNING: could not open file: %s\n",
fname);
+ @:restoreClient3()@
+ @:restoreClient()@
+ return msg;
+ }
+
+ fname = filename;
+ while ((p = strchr(filename, PATH_SEP)) != NULL) {
+ *p = '\0';
+ fd = malOpenSource(filename);
+ if (stream_errnr(fd) == OPEN_ERROR) {
+ stream_destroy(fd);
+ stream_printf(c->fdout, "#WARNING: could not open file:
%s\n",
+ filename);
+ } else {
+ c->srcFile = filename;
+ c->yycur = 0;
+ c->bak = NULL;
+ MSinitClientPrg(c, "user", "main"); /*
re-initialize context */
+ MCpushClientInput(c, bstream_create(fd, 128 * BLOCK),
c->listing, "");
+ msg = runScenario(c);
+ }
+ filename = p + 1;
+ }
+ fd = malOpenSource(filename);
if (stream_errnr(fd) == OPEN_ERROR) {
stream_destroy(fd);
- stream_printf(c->fdout, "#WARNING: could not open file: %s\n",
fname);
+ stream_printf(c->fdout, "#WARNING: could not open file: %s\n",
+ filename);
} else {
- MSinitClientPrg(c,"user","main"); /* re-initialize
context */
- MCpushClientInput(c, bstream_create(fd, 128 *
BLOCK),c->listing,"");
+ c->srcFile = filename;
+ c->yycur = 0;
+ c->bak = NULL;
+ MSinitClientPrg(c, "user", "main"); /* re-initialize
context */
+ MCpushClientInput(c, bstream_create(fd, 128 * BLOCK),
c->listing, "");
msg = runScenario(c);
}
+ GDKfree(fname);
@:restoreClient3()@
@:restoreClient()@
diff -r b40c380dc6f5 -r 12ae6b3910b9 MonetDB5/src/mal/mal_linker.mx
--- a/MonetDB5/src/mal/mal_linker.mx Thu May 13 22:40:51 2010 +0200
+++ b/MonetDB5/src/mal/mal_linker.mx Thu May 13 22:42:32 2010 +0200
@@ -59,10 +59,13 @@
#define RTLD_NOW_REPORT_ERROR 8
#endif
+#include <sys/types.h> /* opendir */
+
/* #define DEBUG_MAL_LINKER */
#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_file(const char *mod_name);
mal_export str loadLibrary(str modulename, int flag);
mal_export void unloadLibraries(void);
@@ -71,7 +74,7 @@
mal_export int isLoaded(str modulename);
#endif
@-
-The MAL module should be compiled with -rdynamic and -ldl.
+The MAL module should be compiled with -rdynamic and -ldl (Linux).
This enables loading the routines and finding out the address
of a particular routine.
The mapping from MAL module.function() identifier to an address is
@@ -83,7 +86,7 @@
the current directory.
Note, however, that the libraries are reference counted. Although we
-do;t close them until end of session it seems prudent to maintain
+don't close them until end of session it seems prudent to maintain
the consistency of this counter.
@c
@@ -320,8 +323,14 @@
The plausible locations of the modules can be designated by
an environment variable.
@c
+static int
+cmpstr(const void *p1, const void *p2)
+{
+ return strcmp(*(char* const*)p1, *(char* const*)p2);
+}
+
static char *
-locate_file(const char *basename, const char *ext)
+locate_file(const char *basename, const char *ext, const bit recurse)
{
char *mod_path = GDKgetenv("monet_mod_path");
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list