Changeset: 585081582d00 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=585081582d00
Modified Files:
monetdb5/modules/mal/01_batcalc.mal
monetdb5/modules/mal/01_calc.mal
monetdb5/modules/mal/batcalc.c
sql/backends/monet5/sql.c
Branch: rdf
Log Message:
Add operator +,- with input oid, oid
Kind of hacking for handling q5 bsbm.
diffs (167 lines):
diff --git a/monetdb5/modules/mal/01_batcalc.mal
b/monetdb5/modules/mal/01_batcalc.mal
--- a/monetdb5/modules/mal/01_batcalc.mal
+++ b/monetdb5/modules/mal/01_batcalc.mal
@@ -2608,6 +2608,45 @@ pattern add_noerror(v:lng,b:bat[:oid,:wr
address CMDbatADD
comment "Return V + B with candidates list, overflow causes NIL value";
+
+pattern +(b1:bat[:oid,:oid],b2:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatADDsignal
+comment "Return B1 + B2, signal error on overflow [RDF only]";
+pattern +(b1:bat[:oid,:oid],b2:bat[:oid,:oid],s:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatADDsignal
+comment "Return B1 + B2 with candidates list, signal error on overflow [RDF
only]";
+pattern add_noerror(b1:bat[:oid,:oid],b2:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatADD
+comment "Return B1 + B2, overflow causes NIL value [RDF only]";
+pattern add_noerror(b1:bat[:oid,:oid],b2:bat[:oid,:oid],s:bat[:oid,:oid])
:bat[:oid,:oid]
+address CMDbatADD
+comment "Return B1 + B2 with candidates list, overflow causes NIL value [RDF
only]";
+pattern +(b:bat[:oid,:oid],v:oid) :bat[:oid,:oid]
+address CMDbatADDsignal
+comment "Return B + V, signal error on overflow [RDF only]";
+pattern +(b:bat[:oid,:oid],v:oid,s:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatADDsignal
+comment "Return B + V with candidates list, signal error on overflow [RDF
only]";
+pattern add_noerror(b:bat[:oid,:oid],v:oid) :bat[:oid,:oid]
+address CMDbatADD
+comment "Return B + V, overflow causes NIL value [RDF only]";
+pattern add_noerror(b:bat[:oid,:oid],v:oid,s:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatADD
+comment "Return B + V with candidates list, overflow causes NIL value [RDF
only]";
+pattern +(v:oid,b:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatADDsignal
+comment "Return V + B, signal error on overflow [RDF only]";
+pattern +(v:oid,b:bat[:oid,:oid],s:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatADDsignal
+comment "Return V + B with candidates list, signal error on overflow [RDF
only]";
+pattern add_noerror(v:oid,b:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatADD
+comment "Return V + B, overflow causes NIL value [RDF only]";
+pattern add_noerror(v:oid,b:bat[:oid,:oid],s:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatADD
+comment "Return V + B with candidates list, overflow causes NIL value [RDF
only]";
+
+
pattern +(b1:bat[:oid,:lng],b2:bat[:oid,:lng]) :bat[:oid,:lng]
address CMDbatADDsignal
comment "Return B1 + B2, signal error on overflow";
@@ -4422,6 +4461,43 @@ pattern sub_noerror(v:lng,b:bat[:oid,:wr
address CMDbatSUB
comment "Return V - B with candidates list, overflow causes NIL value";
+pattern -(b1:bat[:oid,:oid],b2:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatSUBsignal
+comment "Return B1 - B2, signal error on overflow [RDF only]";
+pattern -(b1:bat[:oid,:oid],b2:bat[:oid,:oid],s:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatSUBsignal
+comment "Return B1 - B2 with candidates list, signal error on overflow [RDF
only]";
+pattern sub_noerror(b1:bat[:oid,:oid],b2:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatSUB
+comment "Return B1 - B2, overflow causes NIL value [RDF only]";
+pattern sub_noerror(b1:bat[:oid,:oid],b2:bat[:oid,:oid],s:bat[:oid,:oid])
:bat[:oid,:oid]
+address CMDbatSUB
+comment "Return B1 - B2 with candidates list, overflow causes NIL value [RDF
only]";
+pattern -(b:bat[:oid,:oid],v:oid) :bat[:oid,:oid]
+address CMDbatSUBsignal
+comment "Return B - V, signal error on overflow [RDF only]";
+pattern -(b:bat[:oid,:oid],v:oid,s:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatSUBsignal
+comment "Return B - V with candidates list, signal error on overflow [RDF
only]";
+pattern sub_noerror(b:bat[:oid,:oid],v:oid) :bat[:oid,:oid]
+address CMDbatSUB
+comment "Return B - V, overflow causes NIL value [RDF only]";
+pattern sub_noerror(b:bat[:oid,:oid],v:oid,s:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatSUB
+comment "Return B - V with candidates list, overflow causes NIL value [RDF
only]";
+pattern -(v:oid,b:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatSUBsignal
+comment "Return V - B, signal error on overflow [RDF only]";
+pattern -(v:oid,b:bat[:oid,:oid],s:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatSUBsignal
+comment "Return V - B with candidates list, signal error on overflow [RDF
only]";
+pattern sub_noerror(v:oid,b:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatSUB
+comment "Return V - B, overflow causes NIL value [RDF only]";
+pattern sub_noerror(v:oid,b:bat[:oid,:oid],s:bat[:oid,:oid]) :bat[:oid,:oid]
+address CMDbatSUB
+comment "Return V - B with candidates list, overflow causes NIL value [RDF
only]";
+
pattern -(b1:bat[:oid,:lng],b2:bat[:oid,:lng]) :bat[:oid,:lng]
address CMDbatSUBsignal
comment "Return B1 - B2, signal error on overflow";
diff --git a/monetdb5/modules/mal/01_calc.mal b/monetdb5/modules/mal/01_calc.mal
--- a/monetdb5/modules/mal/01_calc.mal
+++ b/monetdb5/modules/mal/01_calc.mal
@@ -684,6 +684,10 @@ pattern add_noerror(v1:lng,v2:wrd) :lng
address CMDvarADD
comment "Return V1 + V2, overflow causes NIL value";
+pattern +(v1:oid,v2:oid) :oid
+address CMDvarADDsignal
+comment "Return V1 + V2, signal error on overflow [RDF only]";
+
pattern +(v1:lng,v2:lng) :lng
address CMDvarADDsignal
comment "Return V1 + V2, signal error on overflow";
@@ -1028,6 +1032,10 @@ pattern sub_noerror(v1:lng,v2:wrd) :lng
address CMDvarSUB
comment "Return V1 - V2, overflow causes NIL value";
+pattern -(v1:oid,v2:oid) :oid
+address CMDvarSUBsignal
+comment "Return V1 - V2, signal error on overflow [RDF only]";
+
pattern -(v1:lng,v2:lng) :lng
address CMDvarSUBsignal
comment "Return V1 - V2, signal error on overflow";
@@ -2805,6 +2813,11 @@ pattern <(v1:str,v2:str) :bit
address CMDvarLT
comment "Return V1 < V2";
+
+pattern <(v1:oid,v2:lng) :bit
+address CMDvarLT
+comment "Return V1 < V2 [RDF only]";
+
pattern <(v1:oid,v2:oid) :bit
address CMDvarLT
comment "Return V1 < V2";
@@ -3223,6 +3236,11 @@ pattern >(v1:str,v2:str) :bit
address CMDvarGT
comment "Return V1 > V2";
+
+pattern >(v1:oid,v2:lng) :bit
+address CMDvarGT
+comment "Return V1 > V2 [RDF only]";
+
pattern >(v1:oid,v2:oid) :bit
address CMDvarGT
comment "Return V1 > V2";
diff --git a/monetdb5/modules/mal/batcalc.c b/monetdb5/modules/mal/batcalc.c
--- a/monetdb5/modules/mal/batcalc.c
+++ b/monetdb5/modules/mal/batcalc.c
@@ -206,6 +206,9 @@ calctype(int tp1, int tp2)
{
int tp1s = ATOMbasetype(tp1);
int tp2s = ATOMbasetype(tp2);
+
+ if (tp1 == TYPE_oid && tp2 == TYPE_oid) return TYPE_oid; //RDF only
+
if (tp1s == TYPE_str && tp2s == TYPE_str)
return TYPE_str;
if (tp1s < TYPE_flt && tp2s < TYPE_flt) {
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -130,7 +130,7 @@ sql_symbol2relation(mvc *c, symbol *sym)
if (1) c->emode = m_normal;
- if (1) c->emod = mod_explain;
+ if (0) c->emod = mod_explain;
}
}
else {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list