Update of /cvsroot/monetdb/pathfinder/compiler/sql
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv26028/compiler/sql
Modified Files:
lalg2sql.brg sql.c sqlprint.c
Log Message:
-- operator conderr added
-- operator boot_not added
-- refactoring some structures
Index: sql.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/sql/sql.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- sql.c 9 Feb 2007 08:08:58 -0000 1.17
+++ sql.c 13 Feb 2007 11:58:13 -0000 1.18
@@ -163,10 +163,10 @@
/* distinct flag is false */
ret->sem.select.distinct = false;
/* initialize select lists */
- ret->sem.select.select_list = (PFsql_t*)selectlist;
- ret->sem.select.from_list = (PFsql_t*)fromlist;
- ret->sem.select.where_list = (PFsql_t*)wherelist;
- ret->sem.select.grpby_list = (PFsql_t*)grpbylist;
+ ret->child[0] = (PFsql_t*)selectlist;
+ ret->child[1] = (PFsql_t*)fromlist;
+ ret->child[2] = (PFsql_t*)wherelist;
+ ret->child[3] = (PFsql_t*)grpbylist;
return ret;
}
@@ -412,7 +412,7 @@
{
PFsql_t *ret = leaf(sql_tbl_name);
ret->sem.tablename.ident = name;
- ret->sem.tablename.clmn_list = clmnlist;
+ ret->child[0] = clmnlist;
return ret;
}
@@ -580,7 +580,9 @@
switch( type ) {
case aat_nat:
case aat_int: return "INTEGER";
- case aat_str: return "VARCHAR(100)";
+ case aat_uA:
+ case aat_str: return "CHAR(100)";
+ case aat_dbl:
case aat_dec: return "DECIMAL";
default: return "unknown";
}
@@ -888,7 +890,7 @@
PFsql_t*
PFsql_where_list_add(const PFsql_t *list, const PFsql_t *item)
{
- return and( item, list);
+ return and_( item, list);
}
/**
Index: lalg2sql.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/sql/lalg2sql.brg,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- lalg2sql.brg 9 Feb 2007 14:01:20 -0000 1.29
+++ lalg2sql.brg 13 Feb 2007 11:58:13 -0000 1.30
@@ -197,8 +197,6 @@
Rel: count (Rel) = 45 (10);
Rel: rownum (Rel) = 50 (10);
Rel: number (Rel) = 51 (10);
-Rel: number (number (Rel)) = 52 (10);
-Rel: number (project (number (Rel))) = 53 (10);
Rel: type (Rel) = 54 (10);
Rel: type_assert (Rel) = 55 (10);
Rel: cast (cast (Rel)) = 56 (10);
@@ -956,12 +954,12 @@
p->sem.attach.attname, p->sem.attach.value.type,
literal (p->sem.attach.value));
- assert (L(p)->sql_ann->sfw);
-
+ assert (L(p)->sql_ann->sfw->child[1]);
+
sql_stmt = select
(
NULL, /* no selectlist provided */
- L(p)->sql_ann->sfw->sem.select.from_list,
+ L(p)->sql_ann->sfw->child[1],
NULL,
NULL
);
@@ -992,7 +990,7 @@
sql_stmt = select
(
NULL,
- L(p)->sql_ann->sfw->sem.select.from_list,
+ L(p)->sql_ann->sfw->child[1],
NULL,
NULL
);
@@ -1068,7 +1066,7 @@
);
/* preparing fromlist */
- PFsql_t *fromlist = L(p)->sql_ann->sfw->sem.select.from_list;
+ PFsql_t *fromlist = L(p)->sql_ann->sfw->child[1];
fromlist = from_list_add(fromlist,
alias
(
@@ -1153,7 +1151,7 @@
),
from_list
(
- L(p)->sql_ann->sfw->sem.select.from_list,
+ L(p)->sql_ann->sfw->child[1],
alias
(
select
@@ -1191,7 +1189,7 @@
NULL,
from_list
(
- L(p)->sql_ann->sfw->sem.select.from_list,
+ L(p)->sql_ann->sfw->child[1],
/* get maximal pre value from current max_pre_frag
* relation */
alias
@@ -1268,7 +1266,7 @@
sql_stmt = select
(
NULL,
- L(p)->sql_ann->sfw->sem.select.from_list,
+ L(p)->sql_ann->sfw->child[1],
NULL,
(p->sem.aggr.part)?
column_list (sql_expression (L(p)->sql_ann->colmap,
@@ -1298,7 +1296,7 @@
select_distinct
(
NULL,
- p->sql_ann->sfw->sem.select.from_list,
+ p->sql_ann->sfw->child[1],
NULL,
NULL
):
@@ -1325,7 +1323,7 @@
select_distinct
(
NULL,
- p->sql_ann->sfw->sem.select.from_list,
+ p->sql_ann->sfw->child[1],
NULL,
NULL
):
@@ -1337,7 +1335,7 @@
sql_stmt = select_distinct
(
NULL,
- p->sql_ann->sfw->sem.select.from_list,
+ p->sql_ann->sfw->child[1],
NULL,
NULL
);
@@ -1519,7 +1517,7 @@
sql_stmt = select
(
NULL,
- L(p)->sql_ann->sfw->sem.select.from_list,
+ L(p)->sql_ann->sfw->child[1],
NULL,
NULL
);
@@ -1553,7 +1551,7 @@
sql_stmt = select_distinct
(
NULL,
- L(p)->sql_ann->sfw->sem.select.from_list,
+ L(p)->sql_ann->sfw->child[1],
NULL,
NULL
);
@@ -1585,7 +1583,7 @@
sql_stmt = select
(
NULL, /* no selectlist provided */
- L(p)->sql_ann->sfw->sem.select.from_list,
+ L(p)->sql_ann->sfw->child[1],
NULL,
NULL
);
@@ -1702,7 +1700,7 @@
sql_stmt = select
(
NULL,
- L(p)->sql_ann->sfw->sem.select.from_list,
+ L(p)->sql_ann->sfw->child[1],
NULL,
NULL
);
@@ -1751,7 +1749,7 @@
sql_stmt = select
(
NULL,
- L(p)->sql_ann->sfw->sem.select.from_list,
+ L(p)->sql_ann->sfw->child[1],
NULL,
NULL
);
@@ -1762,6 +1760,7 @@
case 65:
{
sql_stmt = doc_access (p);
+ p->dirty = true;
} break;
/* Rel: element_tag (Rel, Rel) */
case 500:
@@ -2039,7 +2038,7 @@
correlation_name (t3loc_crrl->name)
)
),
- and
+ and_
(
eq
(
@@ -2054,7 +2053,7 @@
->sem.column.ident),
eloc_crrl->name)
),
- and
+ and_
(
gteq
(
@@ -2313,23 +2312,23 @@
sql_column_env_add (p->sql_ann->colmap,
p->sem.string_join.iter_res,
type_of (p, p->sem.string_join.iter_res),
- sql_expression (R(p)->sql_ann->colmap,
- p->sem.string_join.iter_sep,
- type_of (R(p), p->sem.string_join.iter_sep))
+ sql_expression (L(p)->sql_ann->colmap,
+ p->sem.string_join.iter,
+ type_of (L(p), p->sem.string_join.iter))
);
sql_column_env_add (p->sql_ann->colmap,
p->sem.string_join.item_res,
type_of (p, p->sem.string_join.item_res),
- sql_expression (R(p)->sql_ann->colmap,
- p->sem.string_join.item_sep,
- type_of (R(p), p->sem.string_join.item_sep))
+ sql_expression (L(p)->sql_ann->colmap,
+ p->sem.string_join.item,
+ type_of (L(p), p->sem.string_join.item))
);
sql_stmt = select
(
NULL,
- from_list (R(p)->sql_ann->sfw->sem.select.from_list),
+ from_list (L(p)->sql_ann->sfw->child[1]),
NULL,
NULL
);
@@ -2361,7 +2360,7 @@
sql_stmt = select
(
NULL,
- R(p)->sql_ann->sfw->sem.select.from_list,
+ R(p)->sql_ann->sfw->child[1],
NULL,
NULL
);
@@ -2406,14 +2405,66 @@
sql_stmt = select
(
NULL,
- L(p)->sql_ann->sfw->sem.select.from_list,
+ L(p)->sql_ann->sfw->child[1],
+ NULL,
+ NULL
+ );
+ } break;
+ /* Rel: conderr (Rel) */
+ case 80:
+ {
+ for (unsigned int i = 0; i < PFarray_last (
+ L(p)->sql_ann->colmap); i++) {
+ sql_column_env_t entry = sql_column_env_at (
+ L(p)->sql_ann->colmap, i);
+ sql_column_env_add (p->sql_ann->colmap,
+ entry.att, entry.type,
+ entry.expression);
+ }
+
+ sql_stmt = select
+ (
+ NULL,
+ from_list (L(p)->sql_ann->sfw->child[1]),
NULL,
NULL
);
} break;
+ /* Rel: bool_not (Rel) */
+ case 40:
+ {
+ /* copy all existing expressions */
+ for (unsigned int i = 0;
+ i < PFarray_last (L(p)->sql_ann->colmap); i++) {
+ sql_column_env_t entry = sql_column_env_at (
+ L(p)->sql_ann->colmap, i);
+ sql_column_env_add (p->sql_ann->colmap,
+ entry.att, entry.type,
+ entry.expression);
+ }
+
+ sql_column_env_add (p->sql_ann->colmap,
+ p->sem.unary.res, type_of (p, p->sem.unary.res),
+ not_
+ (
+ sql_expression (L(p)->sql_ann->colmap,
+ p->sem.unary.att,
+ type_of (L(p), p->sem.unary.att))
+ )
+ );
+ where_env_copy (p->sql_ann->wheremap, L(p)->sql_ann->wheremap);
+
+ sql_stmt = select
+ (
+ NULL,
+ from_list (L(p)->sql_ann->sfw->child[1]),
+ NULL,
+ NULL
+ );
+ } break;
default:
{
- /** TODO add OOPS here to indicate an unimplemented rule */
+ /** add OOPS here to indicate an unimplemented rule */
PFoops (OOPS_FATAL,
"SQLgen: Logical algebra rule (%u) not supported",
rule);
@@ -2538,8 +2589,8 @@
p->sql_ann->wheremap = sql_where_env_new ();
if (sql_stmt->kind == sql_select) {
- sql_stmt->sem.select.select_list = selectlist1;
- sql_stmt->sem.select.where_list =
+ sql_stmt->child[0] = selectlist1;
+ sql_stmt->child[3] =
(!wherelist)?
NULL:
wherelist;
@@ -2641,6 +2692,7 @@
case aat_int: return lit_int (atom.val.nat_);
case aat_str: return lit_str (atom.val.str);
case aat_bln: return lit_bln (atom.val.bln);
+ case aat_dbl:
case aat_dec: return lit_dec (atom.val.dec_);
case aat_qname: return lit_str (PFqname_loc (atom.val.int_));
default:
@@ -2707,7 +2759,7 @@
return select
(
NULL, /* no selectlist provided */
- L(p)->sql_ann->sfw->sem.select.from_list,
+ L(p)->sql_ann->sfw->child[1],
NULL,
NULL
);
@@ -2754,7 +2806,7 @@
return select
(
NULL, /* no selectlist provided */
- L(p)->sql_ann->sfw->sem.select.from_list,
+ from_list (L(p)->sql_ann->sfw->child[1]),
NULL,
NULL
);
@@ -2885,14 +2937,14 @@
select
(
selectlist1,
- l->sql_ann->sfw->sem.select.from_list,
+ l->sql_ann->sfw->child[1],
wherelist1,
NULL
),
select
(
selectlist2,
- r->sql_ann->sfw->sem.select.from_list,
+ r->sql_ann->sfw->child[1],
wherelist2,
NULL
)
@@ -3725,7 +3777,7 @@
));
- PFsql_t *fromlist = R(p)->sql_ann->sfw->sem.select.from_list;
+ PFsql_t *fromlist = R(p)->sql_ann->sfw->child[1];
/* this new relation we need to get the attributes beside the pre
value */
fromlist = from_list_add( fromlist, alias(frag->sql_ann->fragment,
@@ -3796,7 +3848,7 @@
}
ret->sfw = gen_select(p, ret);
- ret->sfw->sem.select.from_list = fromlist;
+ ret->sfw->child[1] = fromlist;
return ret;
}
@@ -3923,7 +3975,7 @@
break;
}
- PFsql_t * fromlist = R(p)->sql_ann->sfw->sem.select.from_list;
+ PFsql_t * fromlist = R(p)->sql_ann->sfw->child[1];
fromlist = from_list_add
(
fromlist,
Index: sqlprint.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/sql/sqlprint.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- sqlprint.c 9 Feb 2007 08:01:24 -0000 1.14
+++ sqlprint.c 13 Feb 2007 11:58:13 -0000 1.15
@@ -270,9 +270,9 @@
sqlprintf("%s", PFsql_table_str( n->sem.tablename.ident ));
/* the column-list has not to be specified in every case */
- if( n->sem.tablename.clmn_list ) {
+ if( n->child[0]) {
sqlprintf("(");
- print_clm_list(n->sem.tablename.clmn_list);
+ print_clm_list(n->child[0]);
sqlprintf(")");
}
}
@@ -287,18 +287,18 @@
sqlprintf("SELECT ");
sqlprintf("%s", ( n->sem.select.distinct )?
"DISTINCT ":"");
- print_select_list( n->sem.select.select_list );
+ print_select_list( n->child[0] );
sqlprintf(" FROM ");
- print_from_list( n->sem.select.from_list );
+ print_from_list( n->child[1] );
/* where list is optional, we leave the where list
to zero when its not specified */
- if( n->sem.select.where_list ) {
+ if( n->child[2]) {
sqlprintf(" WHERE ");
- print_expr( n->sem.select.where_list );
+ print_expr( n->child[2]);
}
- if( n->sem.select.grpby_list ) {
+ if( n->child[4]) {
sqlprintf(" GROUP BY ");
- print_clm_list( n->sem.select.grpby_list );
+ print_clm_list( n->child[3] );
}
} break;
default:
@@ -431,6 +431,11 @@
switch( n->kind )
{
+ case sql_not:
+ sqlprintf("NOT (");
+ print_expr( n->child[0] );
+ sqlprintf(")");
+ break;
case sql_max:
{
sqlprintf("MAX (");
@@ -453,23 +458,6 @@
print_expr( n->child[1] );
sqlprintf(")");
} break;
- case sql_add:
- {
- sqlprintf("(");
- print_expr( n->child[0] );
- sqlprintf(" + ");
- print_expr( n->child[1] );
- sqlprintf(")");
- } break;
- case sql_sub:
- {
- sqlprintf("(");
- print_expr( n->child[0] );
- sqlprintf(" - ");
- print_expr( n->child[1] );
- sqlprintf(")");
-
- } break;
case sql_gt:
{
sqlprintf("(");
@@ -511,6 +499,18 @@
print_statement(n->child[1]);
sqlprintf(")");
break;
+ /* expression : '(' expression '+' expression ')' */
+ case sql_add:
+ case sql_sub:
+ case sql_mul:
+ case sql_div:
+ {
+ sqlprintf("(");
+ print_statement(n->child[0]);
+ sqlprintf(" %s ", ID[n->kind]);
+ print_statement(n->child[1]);
+ sqlprintf(")");
+ } break;
default:
{
PFoops( OOPS_FATAL, "expression screwed up (%u)",
@@ -831,8 +831,8 @@
{
sqlprintf("SELECT ");
if( n->sem.select.distinct ) sqlprintf("DISTINCT ");
- print_select_list(n->sem.select.select_list);
- if(n->sem.select.from_list)
+ print_select_list(n->child[0]);
+ if(n->child[1])
{
sqlprintf(" FROM ");
}
@@ -849,6 +849,23 @@
print_statement(n->child[1]);
sqlprintf(")");
} break;
+ case sql_gt:
+ {
+ sqlprintf("(");
+ print_expr( n->child[0] );
+ sqlprintf(" > ");
+ print_expr( n->child[1] );
+ sqlprintf(")");
+ } break;
+ case sql_gteq:
+ {
+ sqlprintf("(");
+ print_expr( n->child[0] );
+ sqlprintf(" >= ");
+ print_expr( n->child[1] );
+ sqlprintf(")");
+ } break;
+
default:
{
PFoops( OOPS_FATAL,
@@ -927,9 +944,9 @@
assert( n->kind == sql_tbl_name );
sqlprintf("%s", PFsql_table_str( n->sem.tablename.ident ));
- if( n->sem.tablename.clmn_list ) {
+ if( n->child[0]) {
sqlprintf("(");
- print_clm_list(n->sem.tablename.clmn_list);
+ print_clm_list(n->child[0]);
sqlprintf(")");
}
}
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins