Update of /cvsroot/monetdb/pathfinder/compiler/sql
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv28823
Modified Files:
Tag: XQuery_0-24
lalg2sql.brg
Log Message:
Supporting boolean items as sort criterion.
U lalg2sql.brg
Index: lalg2sql.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/sql/lalg2sql.brg,v
retrieving revision 1.133.2.1
retrieving revision 1.133.2.2
diff -u -d -r1.133.2.1 -r1.133.2.2
--- lalg2sql.brg 12 Jun 2008 12:39:20 -0000 1.133.2.1
+++ lalg2sql.brg 30 Jun 2008 09:01:49 -0000 1.133.2.2
@@ -4371,10 +4371,21 @@
bool asc, cols_added;
rank_map_t *rank_map;
+
+
+ PFsql_t *expr;
+ PFalg_simple_type_t expr_ty;
+
+
for (i = 0; i < PFord_count (sortby); i++) {
- ord = PFord_order_col_at (sortby, i);
+ ord = PFord_order_col_at (sortby, i);
asc = PFord_order_dir_at (sortby, i) == DIR_ASC;
+ expr_ty = type_of (L(p), ord);
+ expr = col_env_lookup (COLMAP(L(p)),
+ ord,
+ expr_ty);
+
cols_added = false;
if (RANK_MAP(L(p)))
for (j = 0; j < PFarray_last (RANK_MAP(L(p))); j++) {
@@ -4396,10 +4407,10 @@
if (!cols_added)
*(PFsql_t **) PFarray_add (srtbylist)
= sortkey_item (
- col_env_lookup (
- COLMAP(L(p)),
- ord,
- type_of (L(p), ord)),
+ (expr->kind == sql_column_name ||
+ expr->kind ==
sql_lit_int)
+ ? expr
+ : case_ (when
(expr, TRUE_INT), else_ (FALSE_INT)),
asc);
}
@@ -4425,20 +4436,27 @@
PFsql_t *srtbylist = NULL;
PFalg_att_t ord;
bool asc;
+ PFsql_t* expr = NULL;
+ PFalg_simple_type_t expr_ty;
/* collect all sorting criteria */
for (int i = PFord_count (sortby) - 1; i >= 0; i--) {
ord = PFord_order_col_at (sortby, i);
asc = PFord_order_dir_at (sortby, i) == DIR_ASC;
+
+ expr_ty = type_of (L(p), ord);
+ expr = col_env_lookup (COLMAP(L(p)),
+ ord,
+ expr_ty);
+
srtbylist = sortkey_list (
sortkey_item (
- col_env_lookup (
- COLMAP(L(p)),
- ord,
- type_of (L(p), ord)),
+
(expr->kind == sql_column_name ||
+ expr->kind ==
sql_lit_int)
+ ? expr
+ : case_
(when (expr, TRUE_INT), else_ (FALSE_INT)),
asc),
srtbylist);
-
}
col_env_add (COLMAP(p),
p->sem.sort.res,
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins