Changeset: 8559deab90b3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8559deab90b3
Modified Files:
sql/server/rel_optimizer.c
Branch: DVframework
Log Message:
pmv: fixed bug. remove the available from the pkey space for unavailable
required derived metadata.
diffs (71 lines):
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -1307,7 +1307,7 @@ str VAL2str(ValRecord* valp)
/* form and run this kind of query:
*
- INSERT INTO tt_res SELECT * FROM tt LEFT OUTER JOIN (SELECT d_st FROM days
WHERE d_st >= '2013-01-08' AND d_st <= '2013-01-22') AS dd ON tt.d = dd.d_st;*
+ INSERT INTO tt_res SELECT * FROM (SELECT * FROM tt LEFT OUTER JOIN (SELECT
d_st FROM days WHERE d_st >= '2013-01-08' AND d_st <= '2013-01-22') AS dd ON
tt.d = dd.d_st) AS ee WHERE ee.d_st IS NULL;
*/
void find_out_pkey_space_for_unavailable_required_derived_metadata(mvc* sql,
list* list_of_PERPAD, int* is_pkey_to_be_enumerated, int
num_pkeys_to_be_enumerated)
{
@@ -1316,7 +1316,7 @@ void find_out_pkey_space_for_unavailable
int i,j;
node *n = NULL;
int num_sp;
- str s, table_name, buf2, q, schema_name, r;
+ str s, table_name, buf2, q, schema_name, r, s2;
char temp_column_name;
char temp_column_name_start = 97;
str temp_table_name = "tt";
@@ -1443,7 +1443,7 @@ void find_out_pkey_space_for_unavailable
}
}
- r = "FROM %s LEFT OUTER JOIN (%s) AS aa ON ";
+ r = "FROM (SELECT * FROM %s LEFT OUTER JOIN (%s) AS aa ON ";
buf2 = (str)GDKmalloc((strlen(q) + strlen(r))*sizeof(char));
sprintf(buf2, "%s%s", q, r);
q = GDKstrdup(buf2);
@@ -1459,7 +1459,7 @@ void find_out_pkey_space_for_unavailable
str buf = (str)GDKmalloc((BUFSIZ +
num_pkeys_to_be_enumerated * 128)*sizeof(char));
j++;
if(j == num_pkeys_to_be_enumerated)
- sprintf(buf, "%s %s.%c = aa.%s;\n", q,
temp_table_name, temp_column_name, sp->column->base.name);
+ sprintf(buf, "%s %s.%c = aa.%s", q,
temp_table_name, temp_column_name, sp->column->base.name);
else
sprintf(buf, "%s %s.%c = aa.%s AND ", q,
temp_table_name, temp_column_name, sp->column->base.name);
q = GDKstrdup(buf);
@@ -1469,6 +1469,31 @@ void find_out_pkey_space_for_unavailable
}
}
+ s2 = ") AS bb WHERE ";
+ buf2 = (str)GDKmalloc((strlen(q) + strlen(s2))*sizeof(char));
+ sprintf(buf2, "%s%s", q, s2);
+ q = GDKstrdup(buf2);
+ GDKfree(buf2);
+
+ for (n = list_of_PERPAD->h, i = 0, j = 0; n; n = n->next, i++)
+ {
+ sel_predicate *sp = n->data;
+
+ if(is_pkey_to_be_enumerated[i])
+ {
+ str buf = (str)GDKmalloc((BUFSIZ +
num_pkeys_to_be_enumerated * 128)*sizeof(char));
+ j++;
+ if(j == num_pkeys_to_be_enumerated)
+ sprintf(buf, "%s bb.%s IS NULL;\n", q,
sp->column->base.name);
+ else
+ sprintf(buf, "%s bb.%s IS NULL AND ", q,
sp->column->base.name);
+ q = GDKstrdup(buf);
+ GDKfree(buf);
+
+ }
+ }
+
+
buf2 = (str)GDKmalloc((strlen(q) + 128 + strlen(s))*sizeof(char));
sprintf(buf2, q, temp_table_name_res, temp_table_name, s);
q = GDKstrdup(buf2);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list