Changeset: 475960715bb1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=475960715bb1
Modified Files:
        monetdb5/mal/mal_import.c
        monetdb5/mal/mal_parser.c
        monetdb5/mal/mal_parser.h
        monetdb5/mal/mal_session.c
Branch: wlcr
Log Message:

Prepare for reading single MAL statements from source


diffs (66 lines):

diff --git a/monetdb5/mal/mal_import.c b/monetdb5/mal/mal_import.c
--- a/monetdb5/mal/mal_import.c
+++ b/monetdb5/mal/mal_import.c
@@ -202,7 +202,7 @@ malInclude(Client c, str name, int listi
                c->bak = NULL;
                c->fdin = bstream_create(mal_init_stream, mal_init_len);
                bstream_next(c->fdin);
-               parseMAL(c, c->curprg, 1);
+               parseMAL(c, c->curprg, 1, INT_MAX);
                free(mal_init_buf);
                free(mal_init_stream);
                free(c->fdin);
@@ -219,7 +219,7 @@ malInclude(Client c, str name, int listi
                        c->yycur = 0;
                        c->bak = NULL;
                        if ((s = malLoadScript(c, filename, &c->fdin)) == 
MAL_SUCCEED) {
-                               parseMAL(c, c->curprg, 1);
+                               parseMAL(c, c->curprg, 1, INT_MAX);
                                bstream_destroy(c->fdin);
                        } else {
                                GDKfree(s); // not interested in error here
diff --git a/monetdb5/mal/mal_parser.c b/monetdb5/mal/mal_parser.c
--- a/monetdb5/mal/mal_parser.c
+++ b/monetdb5/mal/mal_parser.c
@@ -1744,7 +1744,7 @@ part3:
 #define BRKONERR if (curPrg->def->errors >= MAXERRORS) \
                return curPrg->def->errors;
 int
-parseMAL(Client cntxt, Symbol curPrg, int skipcomments)
+parseMAL(Client cntxt, Symbol curPrg, int skipcomments, int lines)
 {
        int cntrl = 0;
        /*Symbol curPrg= cntxt->curprg;*/
@@ -1753,7 +1753,7 @@ parseMAL(Client cntxt, Symbol curPrg, in
 
        echoInput(cntxt);
        /* here the work takes place */
-       while ((c = currChar(cntxt))) {
+       while ((c = currChar(cntxt)) && lines-- > 0) {
                switch (c) {
                case '\n': case '\r': case '\f':
                        nextChar(cntxt);
diff --git a/monetdb5/mal/mal_parser.h b/monetdb5/mal/mal_parser.h
--- a/monetdb5/mal/mal_parser.h
+++ b/monetdb5/mal/mal_parser.h
@@ -20,7 +20,7 @@
 #define prevChar(X) if(X->yycur) X->yycur--
 
 mal_export void initParser(void);   /* needed in src/mal/mal.c */
-mal_export int parseMAL(Client cntxt, Symbol curPrg, int skipcomments);
+mal_export int parseMAL(Client cntxt, Symbol curPrg, int skipcomments, int 
lines);
 
 #endif /* _MAL_PARSER_H */
 
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
@@ -574,7 +574,7 @@ MALparser(Client c)
        oldstate = *c->curprg->def;
 
        prepareMalBlk(c->curprg->def, CURRENT(c));
-       if (parseMAL(c, c->curprg, 0) || c->curprg->def->errors) {
+       if (parseMAL(c, c->curprg, 0, INT_MAX) || c->curprg->def->errors) {
                /* just complete it for visibility */
                pushEndInstruction(c->curprg->def);
                /* caught errors */
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to