Update of /cvsroot/monetdb/sql/src/server
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv14064/src/server
Modified Files:
sql_updates.mx
Log Message:
fixed crash, after add / drop column
fixed passing over seperators, m5 doesn't do de-escaping by default, so
we do it in import and export
Index: sql_updates.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_updates.mx,v
retrieving revision 1.131
retrieving revision 1.132
diff -u -d -r1.131 -r1.132
--- sql_updates.mx 11 Jan 2008 10:52:14 -0000 1.131
+++ sql_updates.mx 30 Jan 2008 10:41:36 -0000 1.132
@@ -464,16 +464,35 @@
return res;
}
+
+static stmt **
+table_update_array(sql_table *t, int *Len)
+{
+ stmt **updates;
+ int i, len = list_length(t->columns.set);
+ node *m;
+
+ *Len = len;
+ updates = NEW_ARRAY(stmt *, len);
+ for (m = t->columns.set->h, i = 0; m; m = m->next, i++) {
+ sql_column *c = m->data;
+
+ /* update the column number, for correct array access */
+ c->colnr = i;
+ updates[i] = NULL;
+ }
+ return updates;
+}
+
stmt *
sql_insert_add_idx(mvc *sql, sql_table *t, sql_idx * idx, list *l)
{
stmt **inserts;
node *m;
- int i, len = list_length(t->columns.set);
+ int i, len;
stmt *ts = stmt_basetable(t, t->base.name);
- inserts = NEW_ARRAY(stmt *, len);
-
+ inserts = table_update_array(t, &len);
for (m = t->columns.set->h, i = 0; m; m = m->next, i++) {
sql_column *c = m->data;
stmt *b = stmt_bat(c, stmt_dup(ts), RDONLY);
@@ -725,7 +744,7 @@
sql_delete_set_Fkeys(mvc *sql, sql_schema *schema, sql_key *k, stmt *rows, int
action)
{
list *l = NULL;
- int len = 0, i;
+ int len = 0;
node *m, *o;
sql_idx *ri = ((sql_fkey*)k)->rkey->k.idx;
stmt *ts = stmt_basetable(ri->t, ri->t->base.name), *fts, **new_updates;
@@ -733,12 +752,7 @@
fts = stmt_basetable(k->idx->t, k->idx->t->base.name);
- len = list_length(t->columns.set);
- new_updates = NEW_ARRAY(stmt *, len);
-
- for (i = 0; i < len; i++)
- new_updates[i] = NULL;
-
+ new_updates = table_update_array(t, &len);
for (m = k->idx->columns->h, o = ri->columns->h; m && o; m = m->next, o
= o->next) {
sql_kc *fc = m->data;
stmt *upd = NULL;
@@ -789,7 +803,7 @@
sql_update_cascade_Fkeys(mvc *sql, sql_schema *schema, sql_key *k, int updcol,
stmt **updates, int action)
{
list *l = NULL;
- int len = 0, i;
+ int len = 0;
node *m, *o;
sql_idx *ri = ((sql_fkey*)k)->rkey->k.idx;
stmt *ts = stmt_basetable(ri->t, ri->t->base.name), *fts, **new_updates;
@@ -802,12 +816,7 @@
rows = stmt_semijoin(stmt_reverse(rows),
stmt_dup(updates[updcol]->op2.stval));
rows = stmt_reverse(rows);
- len = list_length(t->columns.set);
- new_updates = NEW_ARRAY(stmt *, len);
-
- for (i = 0; i < len; i++)
- new_updates[i] = NULL;
-
+ new_updates = table_update_array(t, &len);
for (m = k->idx->columns->h, o = ri->columns->h; m && o; m = m->next, o
= o->next) {
sql_kc *fc = m->data;
sql_kc *c = o->data;
@@ -1227,11 +1236,7 @@
collist = t->columns.set;
}
- len = list_length(t->columns.set);
- inserts = NEW_ARRAY(stmt *, len);
-
- for (i = 0; i < len; i++)
- inserts[i] = NULL;
+ inserts = table_update_array(t, &len);
if (val_or_q->token == SQL_VALUES) {
dlist *rowlist = val_or_q->data.lval;
@@ -1381,9 +1386,7 @@
stmt **inserts, *res = NULL;
rs = stmt_import(stmt_basetable(t, t->base.name), _strdup(tsep),
_strdup(rsep), _strdup(ssep), fname, nr, offset);
- len = list_length(t->columns.set);
- inserts = NEW_ARRAY(stmt *, len);
-
+ inserts = table_update_array(t, &len);
for (n = t->columns.set->h, i = 0; n; n = n->next, i++) {
sql_column *c = n->data;
@@ -1594,11 +1597,7 @@
}
l = create_stmt_list();
- len = list_length(t->columns.set);
- updates = NEW_ARRAY(stmt *, len);
-
- for (i = 0; i < len; i++)
- updates[i] = NULL;
+ updates = table_update_array(t, &len);
for (n = assignmentlist->h, i = 0; n; n = n->next, i++) {
symbol *a = NULL;
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins