Changeset: 4cb7e5279533 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4cb7e5279533
Modified Files:
gdk/gdk_bbp.c
Branch: default
Log Message:
The big one: merge pipeline (pp_hashjoin) into default.
diffs (truncated from 368039 to 300 lines):
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -129,6 +129,11 @@ jobs:
PATH=$HOME/MDB/bin:$PATH $HOME/MDB/bin/Mtest.py -v -r --debug=0 --ci
--no-html --TSTTRGBASE=.
if: runner.os != 'Windows'
+ - name: mtest-pipeline
+ run: |
+ PATH=$HOME/MDB/bin:$PATH $HOME/MDB/bin/Mtest.py -r --debug=0 --ci
--no-html --TSTTRGBASE=. --pipeline
+ if: runner.os != 'Windows'
+
- name: ctest
shell: pwsh
run: |
@@ -144,6 +149,13 @@ jobs:
python C:\MDB\bin\Mtest.py -v -r --debug=0 --ci --no-html
--TSTTRGBASE=.
if: runner.os == 'Windows'
+ - name: mtest-pipeline
+ shell: pwsh
+ run: |
+ $env:PATH =
'C:\MDB\lib;C:\MDB\lib\monetdb5;C:\MDB\bin;C:\vcpkg\installed\x64-windows\bin;C:\vcpkg\installed\x64-windows\debug\bin;'
+ $env:PATH
+ python C:\MDB\bin\Mtest.py -v -r --debug=0 --ci --no-html
--TSTTRGBASE=. --pipeline
+ if: runner.os == 'Windows'
+
- name: Tar files
run: tar -cvf mtests.tar mTests
- name: Publish mtest results
diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -49,6 +49,7 @@ cscope.*
*.rej
*.orig
compile_commands.json
+.cache
# package building on Mac OS X
MacOSX/build
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -513,6 +513,7 @@ embedded library (%{name}-embedded).
%{_libdir}/libmonetdbsql*.so*
%dir %{_libdir}/monetdb5-%{version}
%{_libdir}/monetdb5*/lib_csv.so
+%{_libdir}/monetdb5*/lib_parquet.so
%{_libdir}/monetdb5*/lib_generator.so
%{_libdir}/monetdb5*/lib_monetdb_loader.so
diff --git a/clients/Tests/MAL-signatures-hge.test
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -3269,6 +3269,11 @@ pattern aggr.sum(X_0:bat[:sht], X_1:bit)
CMDBATsum
Calculate aggregate sum of B.
aggr
+uniques_guess
+command aggr.uniques_guess(X_0:bat[:any_1]):lng
+uniques_guess
+(empty)
+aggr
variance
command aggr.variance(X_0:bat[:bte], X_1:bat[:oid], X_2:bat[:any_1]):bat[:dbl]
AGGRvariance3_dbl
@@ -3570,7 +3575,7 @@ ALGouterjoin1
Left outer join with candidate lists; only produce left output
algebra
outerselect
-command algebra.outerselect(X_0:bat[:oid], X_1:bat[:bit], X_2:bat[:bit],
X_3:bit) (X_4:bat[:oid], X_5:bat[:bit])
+command algebra.outerselect(X_0:bat[:oid], X_1:bat[:bit], X_2:bat[:bit],
X_3:bit, X_4:bit) (X_5:bat[:oid], X_6:bat[:bit])
ALGouterselect
Per input lid return at least one row, if none of the predicates (p) hold,
return a nil, else 'all' true cases.
algebra
@@ -3639,6 +3644,11 @@ command algebra.semijoin(X_0:bat[:any_1]
ALGsemijoin
Semi join with candidate lists
algebra
+single
+command algebra.single(X_0:bat[:oid], X_1:bat[:oid]):bat[:oid]
+ALGsingle
+Check for single result ids.
+algebra
slice
command algebra.slice(X_0:bat[:any_1], X_1:int, X_2:int):bat[:any_1]
ALGslice_int
@@ -3704,6 +3714,11 @@ command algebra.subslice(X_0:bat[:any_1]
ALGsubslice_lng
Return the oids of the slice with the BUNs at position x till y.
algebra
+subslice
+command algebra.subslice(X_0:bat[:any_1], X_1:lng, X_2:lng) (X_3:bat[:oid],
X_4:bat[:oid], X_5:bat[:oid])
+LALGsubslice
+Returns the slice of a pipelined result
+algebra
thetajoin
command algebra.thetajoin(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid],
X_3:bat[:oid], X_4:int, X_5:bit, X_6:lng) (X_7:bat[:oid], X_8:bat[:oid])
ALGthetajoin
@@ -3754,6 +3769,11 @@ command bat.append(X_0:bat[:any_1], X_1:
BKCappend_wrap
append the content of u to i
bat
+append
+unsafe pattern bat.append(X_0:bat[:any_1], X_1:lng, X_2:bat[:any_1], X_3:bit,
X_4:bat[:bte]):int
+PPappend
+Append bat at offset
+bat
appendBulk
pattern bat.appendBulk(X_0:bat[:any_1], X_1:bit, X_2:any_1...):bat[:any_1]
CMDBATappend_bulk
@@ -34088,6 +34108,11 @@ year
pattern batmtime.year(X_0:bat[:timestamp], X_1:bat[:oid]):bat[:int]
MTIMEtimestamp_year_bulk
(empty)
+batoahash
+hash
+pattern batoahash.hash(X_0:bat[:any_1]):bat[:lng]
+OAHASHhash
+Compute hash.
batpcre
replace
command batpcre.replace(X_0:bat[:str], X_1:str, X_2:str, X_3:str):bat[:str]
@@ -34525,6 +34550,11 @@ SQLrank
return the ranked groups
batsql
row_number
+pattern batsql.row_number(X_0:bat[:any], X_1:oid) (X_2:bat[:int], X_3:oid)
+PBATSQLrow_number
+Returns the unique row number.
+batsql
+row_number
pattern batsql.row_number(X_0:bat[:any_1], X_1:bat?[:bit],
X_2:bat?[:bit]):bat[:int]
SQLrow_number
return the row_numer-ed groups
@@ -44599,6 +44629,31 @@ pattern calc.not(X_0:sht):sht
CMDvarNOT
Unary bitwise not of V
calc
+num_div
+pattern calc.num_div(X_0:bte, X_1:lng):bte
+CMDvarDIV2
+Return (V1+(V2-1)/2) / V2, nil on divide by zero
+calc
+num_div
+pattern calc.num_div(X_0:hge, X_1:lng):hge
+CMDvarDIV2
+Return (V1+(V2-1)/2) / V2, nil on divide by zero
+calc
+num_div
+pattern calc.num_div(X_0:int, X_1:lng):int
+CMDvarDIV2
+Return (V1+(V2-1)/2) / V2, nil on divide by zero
+calc
+num_div
+pattern calc.num_div(X_0:lng, X_1:lng):lng
+CMDvarDIV2
+Return (V1+(V2-1)/2) / V2, nil on divide by zero
+calc
+num_div
+pattern calc.num_div(X_0:sht, X_1:lng):sht
+CMDvarDIV2
+Return (V1+(V2-1)/2) / V2, nil on divide by zero
+calc
oid
pattern calc.oid(X_0:bit):oid
CMDvarCONVERT
@@ -45378,6 +45433,131 @@ wakeup
unsafe pattern clients.wakeup(X_0:int):void
CLTwakeup
Wakeup a client process
+copy
+from_stdin
+unsafe pattern copy.from_stdin(X_0:lng, X_1:lng, X_2:bit, X_3:str, X_4:str,
X_5:bit):streams
+COPYfrom_stdin
+read FROM STDIN
+copy
+get_blocksize
+command copy.get_blocksize():int
+COPYget_blocksize
+get the COPY block size
+copy
+new
+unsafe pattern copy.new(X_0:stream, X_1:lng, X_2:lng, X_3:lng, X_4:str,
X_5:str, X_6:str, X_7:str, X_8:bit, X_9:str, X_10:bit):bat[:bte]
+COPYnew
+Create resource for shared reading from stream
+copy
+parse_decimal
+pattern copy.parse_decimal(X_0:bat[:bte], X_1:bat[:int], X_2:int, X_3:int,
X_4:bte, X_5:bat[:oid], X_6:int, X_7:str, X_8:str, X_9:str):bat[:bte]
+COPYparse_decimal_bte
+Parse as a decimal
+copy
+parse_decimal
+pattern copy.parse_decimal(X_0:bat[:bte], X_1:bat[:int], X_2:int, X_3:int,
X_4:hge, X_5:bat[:oid], X_6:int, X_7:str, X_8:str, X_9:str):bat[:hge]
+COPYparse_decimal_hge
+Parse as a decimal
+copy
+parse_decimal
+pattern copy.parse_decimal(X_0:bat[:bte], X_1:bat[:int], X_2:int, X_3:int,
X_4:int, X_5:bat[:oid], X_6:int, X_7:str, X_8:str, X_9:str):bat[:int]
+COPYparse_decimal_int
+Parse as a decimal
+copy
+parse_decimal
+pattern copy.parse_decimal(X_0:bat[:bte], X_1:bat[:int], X_2:int, X_3:int,
X_4:lng, X_5:bat[:oid], X_6:int, X_7:str, X_8:str, X_9:str):bat[:lng]
+COPYparse_decimal_lng
+Parse as a decimal
+copy
+parse_decimal
+pattern copy.parse_decimal(X_0:bat[:bte], X_1:bat[:int], X_2:int, X_3:int,
X_4:sht, X_5:bat[:oid], X_6:int, X_7:str, X_8:str, X_9:str):bat[:sht]
+COPYparse_decimal_sht
+Parse as a decimal
+copy
+parse_float
+pattern copy.parse_float(X_0:bat[:bte], X_1:bat[:int], X_2:any_1,
X_3:bat[:oid], X_4:int, X_5:str, X_6:str, X_7:str):bat[:any_1]
+COPYparse_float
+Parse using GDK's atomFromStr, handle optional seperator and skip char
+copy
+parse_generic
+pattern copy.parse_generic(X_0:bat[:bte], X_1:bat[:int], X_2:any_1,
X_3:bat[:oid], X_4:int, X_5:str):bat[:any_1]
+COPYparse_generic
+Parse using GDK's atomFromStr
+copy
+parse_integer
+pattern copy.parse_integer(X_0:bat[:bte], X_1:bat[:int], X_2:bte,
X_3:bat[:oid], X_4:int, X_5:str):bat[:bte]
+COPYparse_integer_bte
+Parse as an integer
+copy
+parse_integer
+pattern copy.parse_integer(X_0:bat[:bte], X_1:bat[:int], X_2:hge,
X_3:bat[:oid], X_4:int, X_5:str):bat[:hge]
+COPYparse_integer_hge
+Parse as an integer
+copy
+parse_integer
+pattern copy.parse_integer(X_0:bat[:bte], X_1:bat[:int], X_2:int,
X_3:bat[:oid], X_4:int, X_5:str):bat[:int]
+COPYparse_integer_int
+Parse as an integer
+copy
+parse_integer
+pattern copy.parse_integer(X_0:bat[:bte], X_1:bat[:int], X_2:lng,
X_3:bat[:oid], X_4:int, X_5:str):bat[:lng]
+COPYparse_integer_lng
+Parse as an integer
+copy
+parse_integer
+pattern copy.parse_integer(X_0:bat[:bte], X_1:bat[:int], X_2:sht,
X_3:bat[:oid], X_4:int, X_5:str):bat[:sht]
+COPYparse_integer_sht
+Parse as an integer
+copy
+parse_string
+pattern copy.parse_string(X_0:bat[:bte], X_1:bat[:int], X_2:int,
X_3:bat[:oid], X_4:int, X_5:str):bat[:str]
+COPYparse_string
+Parse as a string with given max width
+copy
+request_upload
+unsafe pattern copy.request_upload(X_0:str, X_1:int):streams
+COPYrequest_upload
+request MAPI file upload
+copy
+rows
+unsafe pattern copy.rows():bat[:oid]
+COPYrows
+For best effort we use a selection vector too produce the correctly formated
rows
+copy
+scale
+pattern copy.scale(X_0:bat[:bte], X_1:int, X_2:bat[:oid], X_3:int,
X_4:str):bat[:bte]
+COPYscale_bte
+scale by a power of 10
+copy
+scale
+pattern copy.scale(X_0:bat[:hge], X_1:int, X_2:bat[:oid], X_3:int,
X_4:str):bat[:hge]
+COPYscale_hge
+scale by a power of 10
+copy
+scale
+pattern copy.scale(X_0:bat[:int], X_1:int, X_2:bat[:oid], X_3:int,
X_4:str):bat[:int]
+COPYscale_int
+scale by a power of 10
+copy
+scale
+pattern copy.scale(X_0:bat[:lng], X_1:int, X_2:bat[:oid], X_3:int,
X_4:str):bat[:lng]
+COPYscale_lng
+scale by a power of 10
+copy
+scale
+pattern copy.scale(X_0:bat[:sht], X_1:int, X_2:bat[:oid], X_3:int,
X_4:str):bat[:sht]
+COPYscale_sht
+scale by a power of 10
+copy
+set_blocksize
+command copy.set_blocksize(X_0:int):int
+COPYset_blocksize
+set the COPY block size
+copy
+splitlines
+pattern copy.splitlines(X_0:bat[:bte], X_1:bat[:oid]):bat[:int]...
+COPYsplitlines
+Find the fields of the individual columns
csv
epilogue
command csv.epilogue():void
@@ -45509,6 +45689,91 @@ pattern generator.join(X_0:bat[:sht], X_
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]