Changeset: 21a781ce6ff6 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=21a781ce6ff6
Modified Files:
pathfinder/compiler/sql/lalg2sql.brg
Branch: default
Log Message:
Merge git master into default
diffs (113 lines):
diff -r 5c23515c4b2c -r 21a781ce6ff6
pathfinder/compiler/algebra/opt/opt_algebra_cse.c
--- a/pathfinder/compiler/algebra/opt/opt_algebra_cse.c Tue Jul 13 17:24:57
2010 +0200
+++ b/pathfinder/compiler/algebra/opt/opt_algebra_cse.c Tue Jul 13 17:51:47
2010 +0200
@@ -974,9 +974,9 @@
case la_bool_and:
case la_bool_or:
case la_to:
- if ((ACTCOL (L(a), a->sem.binary.col1) &&
- ACTCOL (L(b), b->sem.binary.col1)) ==
- (ACTCOL (L(a), a->sem.binary.col2) &&
+ if ((ACTCOL (L(a), a->sem.binary.col1) ==
+ ACTCOL (L(b), b->sem.binary.col1)) &&
+ (ACTCOL (L(a), a->sem.binary.col2) ==
ACTCOL (L(b), b->sem.binary.col2)))
return true ;
diff -r 5c23515c4b2c -r 21a781ce6ff6
pathfinder/compiler/algebra/opt/opt_reqval.c
--- a/pathfinder/compiler/algebra/opt/opt_reqval.c Tue Jul 13 17:24:57
2010 +0200
+++ b/pathfinder/compiler/algebra/opt/opt_reqval.c Tue Jul 13 17:51:47
2010 +0200
@@ -123,10 +123,11 @@
PFprop_req_rank_col (p->prop, p->sem.sort.res))
*p = *rank (L(p), p->sem.sort.res, p->sem.sort.sortby);
else if (p->kind == la_rowrank &&
- PFprop_req_multi_col_col (p->prop, p->sem.sort.res) &&
+ (PFprop_req_bijective_col (p->prop, p->sem.sort.res) ||
+ (PFprop_req_multi_col_col (p->prop, p->sem.sort.res) &&
/* single ascending order criterion */
+ PFord_order_dir_at (p->sem.sort.sortby, 0) == DIR_ASC)) &&
PFord_count (p->sem.sort.sortby) == 1 &&
- PFord_order_dir_at (p->sem.sort.sortby, 0) == DIR_ASC &&
/* sort criterion should not stem from a rank operator */
PFprop_type_of (p, PFord_order_col_at (p->sem.sort.sortby, 0))
!= aat_nat) {
diff -r 5c23515c4b2c -r 21a781ce6ff6 pathfinder/compiler/debug/logdebug.c
--- a/pathfinder/compiler/debug/logdebug.c Tue Jul 13 17:24:57 2010 +0200
+++ b/pathfinder/compiler/debug/logdebug.c Tue Jul 13 17:51:47 2010 +0200
@@ -348,6 +348,7 @@
case aat_bln: PFarray_printf (s, "bool"); break;
case aat_uA: PFarray_printf (s, "uA"); break;
case aat_qname_id: PFarray_printf (s, "qname"); break;
+ case aat_date: PFarray_printf (s, "date"); break;
case aat_attr: PFarray_printf (s, "attr"); break;
case aat_nkind: PFarray_printf (s, "pnode"); break;
default: break;
diff -r 5c23515c4b2c -r 21a781ce6ff6 pathfinder/compiler/sql/lalg2sql.brg
--- a/pathfinder/compiler/sql/lalg2sql.brg Tue Jul 13 17:24:57 2010 +0200
+++ b/pathfinder/compiler/sql/lalg2sql.brg Tue Jul 13 17:51:47 2010 +0200
@@ -585,7 +585,8 @@
ty == aat_dbl || ty == aat_dec ||
ty == aat_str || ty == aat_uA ||
ty == aat_bln || ty == aat_pre ||
- ty == aat_qname_loc || ty == aat_qname_uri);
+ ty == aat_qname_loc || ty == aat_qname_uri ||
+ ty == aat_date);
*(sql_column_env_t *) PFarray_add (env) =
(sql_column_env_t) { .type = ty,
@@ -1848,6 +1849,7 @@
(t == aat_uA))
#define NUM_NOTEXPR(t) ((t == aat_int))
#define BOOL_TYPE(t) (t == aat_bln)
+ #define DATE_TYPE(t) (t == aat_date)
/* Since we handle untypedAtomic and Strings the same
* way in SQL, its obvious we don't have to
@@ -1877,6 +1879,11 @@
else if (CHAR_TYPE (ty) && NUM_NOTEXPR (res_ty))
expr = cast (expr, type (aat_dbl));
+ /* ensure that the cast to date only gets a string as input */
+ if (DATE_TYPE (res_ty) && !CHAR_TYPE (ty))
+ PFoops (OOPS_FATAL,
+ "can only cast values of type string to a date");
+
return cast (expr, type (res_ty));
}
diff -r 5c23515c4b2c -r 21a781ce6ff6 pathfinder/compiler/sql/sqlprint.c
--- a/pathfinder/compiler/sql/sqlprint.c Tue Jul 13 17:24:57 2010 +0200
+++ b/pathfinder/compiler/sql/sqlprint.c Tue Jul 13 17:51:47 2010 +0200
@@ -652,10 +652,17 @@
case sql_cast:
assert (R(n)->kind == sql_type);
- PFprettyprintf ("CAST(");
- print_statement (L(n));
- PFprettyprintf (" AS %s)",
- PFsql_simple_type_str (R(n)->sem.type.t));
+ if (R(n)->sem.type.t == aat_date) {
+ PFprettyprintf ("date (");
+ print_statement (L(n));
+ PFprettyprintf (")");
+ }
+ else {
+ PFprettyprintf ("CAST(");
+ print_statement (L(n));
+ PFprettyprintf (" AS %s)",
+ PFsql_simple_type_str (R(n)->sem.type.t));
+ }
break;
case sql_schema_tbl_name:
diff -r 5c23515c4b2c -r 21a781ce6ff6
pathfinder/compiler/xmlimport/xml2lalg_converters.c
--- a/pathfinder/compiler/xmlimport/xml2lalg_converters.c Tue Jul 13
17:24:57 2010 +0200
+++ b/pathfinder/compiler/xmlimport/xml2lalg_converters.c Tue Jul 13
17:51:47 2010 +0200
@@ -241,6 +241,7 @@
else if (strcmp(typeString, "bool") == 0) return aat_bln;
else if (strcmp(typeString, "uA") == 0) return aat_uA;
else if (strcmp(typeString, "qname") == 0) return aat_qname;
+ else if (strcmp(typeString, "date")== 0) return aat_date;
else if (strcmp(typeString, "node")== 0) return aat_node;
else if (strcmp(typeString, "attr")== 0) return aat_anode;
else if (strcmp(typeString, "pnode") == 0) return aat_pnode;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list