Changeset: 7a0efdbd5368 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7a0efdbd5368 Added Files: sql/backends/monet5/generator/Tests/joins00.sql sql/backends/monet5/generator/Tests/joins00.stable.err sql/backends/monet5/generator/Tests/joins00.stable.out sql/test/pg_regress/Tests/abstime.sql sql/test/pg_regress/Tests/aggregates.sql sql/test/pg_regress/Tests/alter_table.sql sql/test/pg_regress/Tests/arrays.sql sql/test/pg_regress/Tests/bit.sql sql/test/pg_regress/Tests/boolean.sql sql/test/pg_regress/Tests/box.sql sql/test/pg_regress/Tests/btree_index.sql sql/test/pg_regress/Tests/case.sql sql/test/pg_regress/Tests/char.sql sql/test/pg_regress/Tests/circle.sql sql/test/pg_regress/Tests/cluster.sql sql/test/pg_regress/Tests/comments.sql sql/test/pg_regress/Tests/conversion.sql sql/test/pg_regress/Tests/copy2.sql sql/test/pg_regress/Tests/create_aggregate.sql sql/test/pg_regress/Tests/create_index.sql sql/test/pg_regress/Tests/create_misc.sql sql/test/pg_regress/Tests/create_operator.sql sql/test/pg_regress/Tests/create_table.sql sql/test/pg_regress/Tests/create_type.sql sql/test/pg_regress/Tests/create_view.sql sql/test/pg_regress/Tests/date.sql sql/test/pg_regress/Tests/domain.sql sql/test/pg_regress/Tests/drop.sql sql/test/pg_regress/Tests/errors.sql sql/test/pg_regress/Tests/float4.sql sql/test/pg_regress/Tests/float8.sql sql/test/pg_regress/Tests/foreign_key.sql sql/test/pg_regress/Tests/geometry.sql sql/test/pg_regress/Tests/hash_index.sql sql/test/pg_regress/Tests/horology.sql sql/test/pg_regress/Tests/inet.sql sql/test/pg_regress/Tests/inherit.sql sql/test/pg_regress/Tests/insert.sql sql/test/pg_regress/Tests/int2.sql sql/test/pg_regress/Tests/int4.sql sql/test/pg_regress/Tests/int8.sql sql/test/pg_regress/Tests/interval.sql sql/test/pg_regress/Tests/join.sql sql/test/pg_regress/Tests/limit.sql sql/test/pg_regress/Tests/lseg.sql sql/test/pg_regress/Tests/mule_internal.sql sql/test/pg_regress/Tests/name.sql sql/test/pg_regress/Tests/namespace.sql sql/test/pg_regress/Tests/numeric.sql sql/test/pg_regress/Tests/numeric_big.sql sql/test/pg_regress/Tests/numerology.sql sql/test/pg_regress/Tests/oid.sql sql/test/pg_regress/Tests/oidjoins.sql sql/test/pg_regress/Tests/opr_sanity.sql sql/test/pg_regress/Tests/path.sql sql/test/pg_regress/Tests/plpgsql.sql sql/test/pg_regress/Tests/point.sql sql/test/pg_regress/Tests/polygon.sql sql/test/pg_regress/Tests/polymorphism.sql sql/test/pg_regress/Tests/portals.sql sql/test/pg_regress/Tests/portals_p2.sql sql/test/pg_regress/Tests/prepare.sql sql/test/pg_regress/Tests/privileges.sql sql/test/pg_regress/Tests/random.sql sql/test/pg_regress/Tests/rangefuncs.sql sql/test/pg_regress/Tests/reltime.sql sql/test/pg_regress/Tests/rowtypes.sql sql/test/pg_regress/Tests/rules.sql sql/test/pg_regress/Tests/sanity_check.sql sql/test/pg_regress/Tests/select.sql sql/test/pg_regress/Tests/select_distinct.sql sql/test/pg_regress/Tests/select_distinct_on.sql sql/test/pg_regress/Tests/select_having.sql sql/test/pg_regress/Tests/select_implicit.sql sql/test/pg_regress/Tests/select_into.sql sql/test/pg_regress/Tests/select_views.sql sql/test/pg_regress/Tests/sequence.sql sql/test/pg_regress/Tests/sql_ascii.sql sql/test/pg_regress/Tests/stats.sql sql/test/pg_regress/Tests/strings.sql sql/test/pg_regress/Tests/strings_cast.sql sql/test/pg_regress/Tests/strings_concat.sql sql/test/pg_regress/Tests/strings_like.sql sql/test/pg_regress/Tests/subselect.sql sql/test/pg_regress/Tests/temp.sql sql/test/pg_regress/Tests/text.sql sql/test/pg_regress/Tests/time.sql sql/test/pg_regress/Tests/timestamp.sql sql/test/pg_regress/Tests/timestamptz.sql sql/test/pg_regress/Tests/timetz.sql sql/test/pg_regress/Tests/tinterval.sql sql/test/pg_regress/Tests/transactions.sql sql/test/pg_regress/Tests/triggers.sql sql/test/pg_regress/Tests/truncate.sql sql/test/pg_regress/Tests/type_sanity.sql sql/test/pg_regress/Tests/union.sql sql/test/pg_regress/Tests/update.sql sql/test/pg_regress/Tests/vacuum.sql sql/test/pg_regress/Tests/varchar.sql sql/test/pg_regress/Tests/without_oid.sql Removed Files: sql/test/pg_regress/monetdb/abstime.sql sql/test/pg_regress/monetdb/aggregates.sql sql/test/pg_regress/monetdb/alter_table.sql sql/test/pg_regress/monetdb/arrays.sql sql/test/pg_regress/monetdb/bit.sql sql/test/pg_regress/monetdb/boolean.sql sql/test/pg_regress/monetdb/box.sql sql/test/pg_regress/monetdb/btree_index.sql sql/test/pg_regress/monetdb/case.sql sql/test/pg_regress/monetdb/char.sql sql/test/pg_regress/monetdb/circle.sql sql/test/pg_regress/monetdb/cluster.sql sql/test/pg_regress/monetdb/comments.sql sql/test/pg_regress/monetdb/conversion.sql sql/test/pg_regress/monetdb/copy2.sql sql/test/pg_regress/monetdb/create_aggregate.sql sql/test/pg_regress/monetdb/create_index.sql sql/test/pg_regress/monetdb/create_misc.sql sql/test/pg_regress/monetdb/create_operator.sql sql/test/pg_regress/monetdb/create_table.sql sql/test/pg_regress/monetdb/create_type.sql sql/test/pg_regress/monetdb/create_view.sql sql/test/pg_regress/monetdb/date.sql sql/test/pg_regress/monetdb/domain.sql sql/test/pg_regress/monetdb/drop.sql sql/test/pg_regress/monetdb/errors.sql sql/test/pg_regress/monetdb/float4.sql sql/test/pg_regress/monetdb/float8.sql sql/test/pg_regress/monetdb/foreign_key.sql sql/test/pg_regress/monetdb/geometry.sql sql/test/pg_regress/monetdb/hash_index.sql sql/test/pg_regress/monetdb/horology.sql sql/test/pg_regress/monetdb/inet.sql sql/test/pg_regress/monetdb/inherit.sql sql/test/pg_regress/monetdb/insert.sql sql/test/pg_regress/monetdb/int2.sql sql/test/pg_regress/monetdb/int4.sql sql/test/pg_regress/monetdb/int8.sql sql/test/pg_regress/monetdb/interval.sql sql/test/pg_regress/monetdb/join.sql sql/test/pg_regress/monetdb/limit.sql sql/test/pg_regress/monetdb/lseg.sql sql/test/pg_regress/monetdb/mule_internal.sql sql/test/pg_regress/monetdb/name.sql sql/test/pg_regress/monetdb/namespace.sql sql/test/pg_regress/monetdb/numeric.sql sql/test/pg_regress/monetdb/numeric_big.sql sql/test/pg_regress/monetdb/numerology.sql sql/test/pg_regress/monetdb/oid.sql sql/test/pg_regress/monetdb/oidjoins.sql sql/test/pg_regress/monetdb/opr_sanity.sql sql/test/pg_regress/monetdb/path.sql sql/test/pg_regress/monetdb/plpgsql.sql sql/test/pg_regress/monetdb/point.sql sql/test/pg_regress/monetdb/polygon.sql sql/test/pg_regress/monetdb/polymorphism.sql sql/test/pg_regress/monetdb/portals.sql sql/test/pg_regress/monetdb/portals_p2.sql sql/test/pg_regress/monetdb/prepare.sql sql/test/pg_regress/monetdb/privileges.sql sql/test/pg_regress/monetdb/random.sql sql/test/pg_regress/monetdb/rangefuncs.sql sql/test/pg_regress/monetdb/reltime.sql sql/test/pg_regress/monetdb/rowtypes.sql sql/test/pg_regress/monetdb/rules.sql sql/test/pg_regress/monetdb/sanity_check.sql sql/test/pg_regress/monetdb/select.sql sql/test/pg_regress/monetdb/select_distinct.sql sql/test/pg_regress/monetdb/select_distinct_on.sql sql/test/pg_regress/monetdb/select_having.sql sql/test/pg_regress/monetdb/select_implicit.sql sql/test/pg_regress/monetdb/select_into.sql sql/test/pg_regress/monetdb/select_views.sql sql/test/pg_regress/monetdb/sequence.sql sql/test/pg_regress/monetdb/sql_ascii.sql sql/test/pg_regress/monetdb/stats.sql sql/test/pg_regress/monetdb/strings.sql sql/test/pg_regress/monetdb/strings_cast.sql sql/test/pg_regress/monetdb/strings_concat.sql sql/test/pg_regress/monetdb/strings_like.sql sql/test/pg_regress/monetdb/subselect.sql sql/test/pg_regress/monetdb/temp.sql sql/test/pg_regress/monetdb/text.sql sql/test/pg_regress/monetdb/time.sql sql/test/pg_regress/monetdb/timestamp.sql sql/test/pg_regress/monetdb/timestamptz.sql sql/test/pg_regress/monetdb/timetz.sql sql/test/pg_regress/monetdb/tinterval.sql sql/test/pg_regress/monetdb/transactions.sql sql/test/pg_regress/monetdb/triggers.sql sql/test/pg_regress/monetdb/truncate.sql sql/test/pg_regress/monetdb/type_sanity.sql sql/test/pg_regress/monetdb/union.sql sql/test/pg_regress/monetdb/update.sql sql/test/pg_regress/monetdb/vacuum.sql sql/test/pg_regress/monetdb/varchar.sql sql/test/pg_regress/monetdb/without_oid.sql Modified Files: monetdb5/modules/kernel/algebra.c monetdb5/modules/kernel/algebra.h monetdb5/modules/kernel/algebra.mal sql/backends/monet5/generator/Makefile.ag sql/backends/monet5/generator/Tests/All sql/backends/monet5/generator/Tests/generator03.stable.out sql/backends/monet5/generator/generator.c sql/backends/monet5/generator/generator.h sql/backends/monet5/generator/generator.mal sql/test/pg_regress/Tests/All Branch: transaction-replication Log Message:
Merge with default branch diffs (truncated from 1135 to 300 lines): diff --git a/monetdb5/modules/kernel/algebra.c b/monetdb5/modules/kernel/algebra.c --- a/monetdb5/modules/kernel/algebra.c +++ b/monetdb5/modules/kernel/algebra.c @@ -472,28 +472,6 @@ ALGselect1(int *result, int *bid, ptr va } str -ALGselect1Head(int *result, int *bid, ptr value) -{ - BAT *b, *bn = NULL; - - if ((b = BATdescriptor(*bid)) == NULL) { - throw(MAL, "algebra.select", RUNTIME_OBJECT_MISSING); - } - b = BATmirror(b); - derefStr(b, t, value); - bn = BATselect(b, value, 0); - bn = BATmirror(bn); - BBPreleaseref(b->batCacheid); - if (bn) { - if (!(bn->batDirty&2)) bn = BATsetaccess(bn, BAT_READ); - *result = bn->batCacheid; - BBPkeepref(*result); - return MAL_SUCCEED; - } - throw(MAL, "algebra.select", GDK_EXCEPTION); -} - -str ALGuselect1(int *result, int *bid, ptr value) { BAT *b, *bn = NULL; @@ -629,30 +607,6 @@ ALGselectNotNil(int *result, int *bid) } str -ALGselectHead(int *result, int *bid, ptr low, ptr high) -{ - BAT *b, *bn = NULL; - - if ((b = BATdescriptor(*bid)) == NULL) { - throw(MAL, "algebra.select", RUNTIME_OBJECT_MISSING); - } - b = BATmirror(b); - derefStr(b, t, low); - derefStr(b, t, high); - bn = BATselect(b, low, high); - bn = BATmirror(bn); - if (bn) { - if (!(bn->batDirty&2)) bn = BATsetaccess(bn, BAT_READ); - *result = bn->batCacheid; - BBPkeepref(*result); - BBPreleaseref(b->batCacheid); - return MAL_SUCCEED; - } - BBPreleaseref(b->batCacheid); - throw(MAL, "algebra.select", GDK_EXCEPTION); -} - -str ALGuselect(int *result, int *bid, ptr low, ptr high) { BAT *b, *bn = NULL; @@ -741,30 +695,6 @@ ALGselectInclusive(int *result, int *bid } str -ALGselectInclusiveHead(int *result, int *bid, ptr low, ptr high, bit *lin, bit *rin) -{ - BAT *b, *bn = NULL; - - if ((b = BATdescriptor(*bid)) == NULL) { - throw(MAL, "algebra.select", RUNTIME_OBJECT_MISSING); - } - b = BATmirror(b); - derefStr(b, t, low); - derefStr(b, t, high); - CMDselect_(&bn, b, low, high, lin, rin); - bn = BATmirror(bn); - if (bn) { - if (!(bn->batDirty&2)) bn = BATsetaccess(bn, BAT_READ); - *result = bn->batCacheid; - BBPkeepref(*result); - BBPreleaseref(b->batCacheid); - return MAL_SUCCEED; - } - BBPreleaseref(b->batCacheid); - throw(MAL, "algebra.select", GDK_EXCEPTION); -} - -str ALGuselectInclusive(int *result, int *bid, ptr low, ptr high, bit *lin, bit *rin) { BAT *b, *bn = NULL; diff --git a/monetdb5/modules/kernel/algebra.h b/monetdb5/modules/kernel/algebra.h --- a/monetdb5/modules/kernel/algebra.h +++ b/monetdb5/modules/kernel/algebra.h @@ -51,16 +51,13 @@ algebra_export str ALGsubselect2(bat *re algebra_export str ALGthetasubselect1(bat *result, bat *bid, const void *val, const char **op); algebra_export str ALGthetasubselect2(bat *result, bat *bid, bat *sid, const void *val, const char **op); algebra_export str ALGselect1(int *result, int *bid, ptr value); -algebra_export str ALGselect1Head(int *result, int *bid, ptr value); algebra_export str ALGuselect1(int *result, int *bid, ptr value); algebra_export str ALGthetauselect(int *result, int *bid, ptr value, str *op); algebra_export str ALGantiuselect1(int *result, int *bid, ptr value); algebra_export str ALGselect(int *result, int *bid, ptr low, ptr high); algebra_export str ALGthetaselect(int *result, int *bid, ptr low, str *op); -algebra_export str ALGselectHead(int *result, int *bid, ptr low, ptr high); algebra_export str ALGuselect(int *result, int *bid, ptr low, ptr high); algebra_export str ALGselectInclusive(int *result, int *bid, ptr low, ptr high, bit *lin, bit *rin); -algebra_export str ALGselectInclusiveHead(int *result, int *bid, ptr low, ptr high, bit *lin, bit *rin); algebra_export str ALGuselectInclusive(int *result, int *bid, ptr low, ptr high, bit *lin, bit *rin); algebra_export str ALGantiuselectInclusive(int *result, int *bid, ptr low, ptr high, bit *lin, bit *rin); diff --git a/monetdb5/modules/kernel/algebra.mal b/monetdb5/modules/kernel/algebra.mal --- a/monetdb5/modules/kernel/algebra.mal +++ b/monetdb5/modules/kernel/algebra.mal @@ -93,8 +93,12 @@ comment "Select all head values of the f the tail the head value of the input BAT for which the relationship holds. The output BAT is sorted on the tail value."; -command select(b:bat[:any_1,:any_2], low:any_2, high:any_2) - :bat[:any_1,:any_2] + +#command thetaselect(b:bat[:any_1,:any_2], val:any_2, op:str) :bat[:any_1,:any_2] +#address ALGthetaselect +#comment "The theta (<=,<,=,>,>=) select()"; +# +command select(b:bat[:oid,:any_2], low:any_2, high:any_2):bat[:oid,:any_2] address ALGselect comment "Select all BUNs that have tail values: {v| low <= v <= high}. NIL boundary values have a special meaning. @@ -106,12 +110,7 @@ comment "Select all BUNs that have tail ordered domain of values, tuples with 'nil' values are NEVER returned by the range select."; -command thetaselect(b:bat[:any_1,:any_2], val:any_2, op:str) :bat[:any_1,:any_2] -address ALGthetaselect -comment "The theta (<=,<,=,>,>=) select()"; - -command select(b:bat[:any_1,:any_2], low:any_2, - high:any_2, li:bit, hi:bit) :bat[:any_1,:any_2] +command select(b:bat[:oid,:any_2], low:any_2, high:any_2, li:bit, hi:bit) :bat[:oid,:any_2] address ALGselectInclusive comment "Select all BUNs that have tail values: {v| low <{=} v <{=} high}. Boundary inclusion is indicated separately. @@ -119,41 +118,17 @@ comment "Select all BUNs that have tail + low == nil means: no lower bound + high == nil means: no upper bound."; -command select(b:bat[:any_1,:any_2],value:any_2) :bat[:any_1,:any_2] +command select(b:bat[:oid,:any_2],value:any_2) :bat[:oid,:any_2] address ALGselect1 comment "Select all BUNs of a BAT with a certain tail value. Selection on NIL is also possible (it should be properly casted, e.g.:int(nil))."; -command selectNotNil(b:bat[:any_1,:any_2]):bat[:any_1,:any_2] +command selectNotNil(b:bat[:oid,:any_2]):bat[:oid,:any_2] address ALGselectNotNil comment "Select all not-nil values"; -# The second group uses the head to perform the range selection. -command selectH(b:bat[:any_1,:any_2], low:any_1, high:any_1) - :bat[:any_1,:any_2] -address ALGselectHead; - -command selectH(b:bat[:any_1,:any_2], low:any_1, - high:any_1, li:bit, hi:bit) :bat[:any_1,:any_2] -address ALGselectInclusiveHead; - -command selectH(b:bat[:any_1,:any_2],value:any_1) :bat[:any_1,:any_2] -address ALGselect1Head; - -# A special case for this set are the void tailed bats. -command select(b:bat[:any_2,:void], low:any_2) - :bat[:any_2,:void] -address ALGselect1Head; - -command select(b:bat[:any_2,:void], low:any_2, high:any_2) - :bat[:any_2,:void] -address ALGselectHead; -command select(b:bat[:any_2,:void], low:any_2, high:any_2,li:bit, hi:bit) - :bat[:any_2,:void] -address ALGselectInclusiveHead; - # The second group uses the head to perform the range selection command slice(b:bat[:any_1,:any_2], x:oid, y:oid) :bat[:any_1,:any_2] diff --git a/sql/backends/monet5/generator/Makefile.ag b/sql/backends/monet5/generator/Makefile.ag --- a/sql/backends/monet5/generator/Makefile.ag +++ b/sql/backends/monet5/generator/Makefile.ag @@ -35,7 +35,7 @@ INCLUDES = ../../../include \ lib__generator = { MODULE DIR = libdir/monetdb5 - SOURCES = generator.c + SOURCES = generator.c generator.h LIBS = ../../../../monetdb5/tools/libmonetdb5 \ ../../../../gdk/libbat $(curl_LIBS) } diff --git a/sql/backends/monet5/generator/Tests/All b/sql/backends/monet5/generator/Tests/All --- a/sql/backends/monet5/generator/Tests/All +++ b/sql/backends/monet5/generator/Tests/All @@ -2,3 +2,5 @@ generator00 generator01 generator02 generator03 + +joins00 diff --git a/sql/backends/monet5/generator/Tests/generator03.stable.out b/sql/backends/monet5/generator/Tests/generator03.stable.out --- a/sql/backends/monet5/generator/Tests/generator03.stable.out +++ b/sql/backends/monet5/generator/Tests/generator03.stable.out @@ -51,8 +51,8 @@ Ready. [ 2008-03-03 02:00:00.000000 ] [ 2008-03-03 12:00:00.000000 ] [ 2008-03-03 22:00:00.000000 ] -[ 2008-03-04 08:00:00.000000 ] -#select * from generate_series(cast( '2008-03-01 00:00' as timestamp), +#select * from generate_series( +# cast( '2008-03-01 00:00' as timestamp), # cast( '2008-03-04 12:00' as timestamp), # cast( '1' as interval day)); % . # table_name @@ -62,7 +62,6 @@ Ready. [ 2008-03-01 00:00:00.000000 ] [ 2008-03-02 00:00:00.000000 ] [ 2008-03-03 00:00:00.000000 ] -[ 2008-03-04 00:00:00.000000 ] # 09:47:33 > # 09:47:33 > "Done." diff --git a/sql/backends/monet5/generator/Tests/joins00.sql b/sql/backends/monet5/generator/Tests/joins00.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/generator/Tests/joins00.sql @@ -0,0 +1,29 @@ +-- To be done tests. +-- Using an 'int' rather then a 'tinyint' calls for casting the generated values first +-- The two join cases illustrate how a join could be optimized by 'looking' up the correct value. + +create table tmp(i tinyint); +insert into tmp values(3),(4),(5); +select * from tmp; + +select * from generate_series(0,10,2) X, tmp Y where X.value = Y.i; +select * from generate_series(0,10,2) X, tmp Y where Y.i = X.value; + +select * from generate_series(0,10,2) X, tmp Y where X.value = Y.i and value <5; + +select * from generate_series(0,10,2) as X, tmp Y where X.value = Y.i and value <7 and value >3; + +drop table tmp; + +create table tmp2(i tinyint); +insert into tmp2 values(8),(9),(10),(11),(12); +select * from tmp2; + +select * from generate_series(0,10,2) X, tmp2 Y where X.value = Y.i; +select * from generate_series(0,10,2) X, tmp2 Y where Y.i = X.value; + +select * from generate_series(0,10,2) X, tmp2 Y where X.value = Y.i and value >5; + +select * from generate_series(0,10,2) as X, tmp2 Y where X.value = Y.i and value <12 and value >3; + +drop table tmp2; diff --git a/sql/backends/monet5/generator/Tests/joins00.stable.err b/sql/backends/monet5/generator/Tests/joins00.stable.err new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/generator/Tests/joins00.stable.err @@ -0,0 +1,36 @@ +stderr of test 'joins00` in directory 'sql/backends/monet5/generator` itself: + + +# 14:48:53 > +# 14:48:53 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=30956" "--set" "mapi_usock=/var/tmp/mtest-27422/.s.monetdb.30956" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/export/scratch1/mk/current//Linux/var/MonetDB/mTests_sql_backends_monet5_generator" "--set" "mal_listing=0" +# 14:48:53 > + +# builtin opt gdk_dbpath = /export/scratch1/mk/current//Linux/var/monetdb5/dbfarm/demo +# builtin opt gdk_debug = 0 +# builtin opt gdk_vmtrim = no +# builtin opt monet_prompt = > +# builtin opt monet_daemon = no +# builtin opt mapi_port = 50000 +# builtin opt mapi_open = false +# builtin opt mapi_autosense = false +# builtin opt sql_optimizer = default_pipe +# builtin opt sql_debug = 0 +# cmdline opt gdk_nr_threads = 0 +# cmdline opt mapi_open = true +# cmdline opt mapi_port = 30956 +# cmdline opt mapi_usock = /var/tmp/mtest-27422/.s.monetdb.30956 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbpath = /export/scratch1/mk/current//Linux/var/MonetDB/mTests_sql_backends_monet5_generator +# cmdline opt mal_listing = 0 +# cmdline opt gdk_debug = 536870922 + +# 14:48:53 > _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list