Update of /cvsroot/monetdb/pathfinder/compiler/sql
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv4487/compiler/sql

Modified Files:
        lalg2sql.brg 
Log Message:
-- Improved the robustness and correctness of the sql-code-generation for the 
serialize_rel(empty_tbl) tree pattern.
-- Extended the schema-information of the empty_tbl operator with types.

Index: lalg2sql.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/sql/lalg2sql.brg,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -d -r1.104 -r1.105
--- lalg2sql.brg        14 Jan 2008 23:26:55 -0000      1.104
+++ lalg2sql.brg        15 Jan 2008 13:57:13 -0000      1.105
@@ -2265,18 +2265,46 @@
             /*
             Let's generate a pseudo-query whose result is an empty table:
             
-            SELECT -1 AS iter, -1 AS pos
+            SELECT -1 AS iter_nat, -1 AS pos_nat, ... AS item_...
             FROM sysibm.sysdummy1 AS a0000
             WHERE 1 = 0;
             */
 
+            PFsql_t *selectlist = NULL;
+            PFalg_schema_t schema = p->schema;
+            int count = schema.count;
+            for(int i = 0; i < count; i++)
+            {
+                PFalg_schm_item_t schemaItem = schema.items[i];
+
+                PFalg_att_t columnName = schemaItem.name;
+                PFalg_simple_type_t columnType = schemaItem.type;
+
+                PFsql_t* columnPseudoVal;
+                switch (columnType) {
+                    case aat_nat:   columnPseudoVal = lit_int (-1);   break;
+                    case aat_int:   columnPseudoVal = lit_int (-1);   break;
+                    case aat_str:   columnPseudoVal = lit_str ("");   break;
+                    case aat_dec:   columnPseudoVal = lit_dec (-1);   break;
+                    default:        columnPseudoVal = lit_int (-1);   break;
+                }
+
+                selectlist = 
+                    select_list (
+                        selectlist,
+                        column_assign (
+                            columnPseudoVal,  
+                            column_name(
+                                new_col (
+                                    columnName, 
+                                    columnType))));
+
+            }
 
             /* call a helper function that does the 'real' job */
             PFsql_t* final_query = PFsql_select (
                 false,
-                select_list (
-                    column_assign (lit_int (-1), ITER_),
-                    column_assign (lit_int (-1), POS_)),
+                selectlist,
                 from_list(
                     alias_bind (
                         schema_table_name (


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to