Update of /cvsroot/monetdb/sql/src/server
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv13513/src/server

Modified Files:
        rel_semantic.mx sql_parser.mx sql_psm.mx sql_semantic.mx 
        sql_updates.mx 
Log Message:
added binary import support (using new BATattach)


U sql_psm.mx
Index: sql_psm.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_psm.mx,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -d -r1.65 -r1.66
--- sql_psm.mx  7 Jan 2009 14:19:29 -0000       1.65
+++ sql_psm.mx  22 Jan 2009 21:58:06 -0000      1.66
@@ -442,6 +442,7 @@
                        res = select_into(sql, s, ek);
                }       break;
                case SQL_COPYFROM:
+               case SQL_BINCOPYFROM:
                        res = updates(sql, s);
                        break;
                case SQL_INSERT:

U sql_parser.mx
Index: sql_parser.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_parser.mx,v
retrieving revision 1.299
retrieving revision 1.300
diff -u -d -r1.299 -r1.300
--- sql_parser.mx       17 Jan 2009 18:17:01 -0000      1.299
+++ sql_parser.mx       22 Jan 2009 21:58:06 -0000      1.300
@@ -157,6 +157,7 @@
        SQL_WHEN,
        SQL_ESCAPE,
        SQL_COPYFROM,
+       SQL_BINCOPYFROM,
        SQL_COPYTO,
        SQL_EXPORT,
        SQL_NEXT,
@@ -2400,6 +2401,12 @@
          append_list(l, $2);
          append_string(l, $8);
          $$ = _symbol_create_list( SQL_COPYFROM, l ); }
+/* binary copy from */
+  | COPY INTO qname FROM '(' string_commalist ')'
+       { dlist *l = L();
+         append_list(l, $3);
+         append_list(l, $6);
+         $$ = _symbol_create_list( SQL_BINCOPYFROM, l ); }
   | COPY select_no_parens_orderby INTO string opt_seps opt_null_string
        { dlist *l = L();
          append_symbol(l, $2);
@@ -5108,6 +5115,7 @@
        SQL(WHEN);
        SQL(ESCAPE);
        SQL(COPYFROM);
+       SQL(BINCOPYFROM);
        SQL(COPYTO);
        SQL(EXPORT);
        SQL(NEXT);

U sql_semantic.mx
Index: sql_semantic.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_semantic.mx,v
retrieving revision 1.194
retrieving revision 1.195
diff -u -d -r1.194 -r1.195
--- sql_semantic.mx     7 Jan 2009 14:19:29 -0000       1.194
+++ sql_semantic.mx     22 Jan 2009 21:58:06 -0000      1.195
@@ -1040,6 +1040,7 @@
                break;
        }
        case SQL_COPYFROM:
+       case SQL_BINCOPYFROM:
        case SQL_COPYTO:
        case SQL_INSERT:
        case SQL_UPDATE:

U rel_semantic.mx
Index: rel_semantic.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/rel_semantic.mx,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- rel_semantic.mx     7 Jan 2009 14:19:29 -0000       1.35
+++ rel_semantic.mx     22 Jan 2009 21:58:06 -0000      1.36
@@ -191,6 +191,7 @@
        case SQL_DROP_SEQ:
 
        case SQL_COPYFROM:
+       case SQL_BINCOPYFROM:
        case SQL_COPYTO:
 
        case SQL_CREATE_FUNC:

U sql_updates.mx
Index: sql_updates.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_updates.mx,v
retrieving revision 1.161
retrieving revision 1.162
diff -u -d -r1.161 -r1.162
--- sql_updates.mx      7 Jan 2009 14:19:29 -0000       1.161
+++ sql_updates.mx      22 Jan 2009 21:58:06 -0000      1.162
@@ -614,6 +614,51 @@
 }
 
 static stmt *
+bincopyfrom(mvc *sql, dlist *qname, dlist *files)
+{
+       list *ops;
+       char *sname = qname_schema(qname);
+       char *tname = qname_table(qname);
+       sql_schema *sys = mvc_bind_schema(sql, "sys");
+       sql_schema *s = NULL;
+       sql_table *t = NULL;
+       sql_subfunc *import = NULL;
+       list *slist;
+
+       if (sname && !(s=mvc_bind_schema(sql, sname))) {
+               (void) sql_error(sql, 02, "COPY INTO: no such schema '%s'", 
sname);
+               return NULL;
+       }
+       if (!s)
+               s = cur_schema(sql);
+       t = mvc_bind_table(sql, s, tname);
+       if (!t && !sname) {
+               s = tmp_schema(sql);
+               t = mvc_bind_table(sql, s, tname);
+               if (!t) {
+                       sql_subtype *tpe = stack_find_type(sql, tname);
+                       if (tpe)
+                               t = tpe->comp_type;
+               }
+       }
+       if (!t) {
+               return sql_error(sql, 02, "COPY INTO: no such table '%s'", 
tname);
+       } 
+       ops = create_stmt_list();
+       list_append(ops, stmt_atom_string(_strdup(s->base.name)));
+       list_append(ops, stmt_atom_string(_strdup(t->base.name)));
+       if (files) {
+               dnode *n = files->h;
+               for (; n; n = n->next)
+                       list_append(ops, 
stmt_atom_string(_strdup(n->data.sval)));
+       }
+       slist = create_stmt_list();
+       import = sql_find_func(sys, "import", 2); /* TODO later we need true 
varargs */
+       list_append(slist, stmt_Nop(stmt_list(ops), import));
+       return stmt_list(slist);
+}
+
+static stmt *
 copyto(mvc *sql, symbol *sq, str filename, dlist *seps, str null_string)
 {
        char *tsep = seps->h->data.sval;
@@ -652,6 +697,14 @@
                sql->type = Q_UPDATE;
        }
                break;
+       case SQL_BINCOPYFROM:
+       {
+               dlist *l = s->data.lval;
+
+               ret = bincopyfrom(sql, l->h->data.lval, l->h->next->data.lval);
+               sql->type = Q_UPDATE;
+       }
+               break;
        case SQL_COPYTO:
        {
                dlist *l = s->data.lval;


------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to