Skip to content

Commit 5801fb0

Browse files
committed
Implement is_null/is_not_null functions
1 parent 1ea1934 commit 5801fb0

File tree

5 files changed

+182
-46
lines changed

5 files changed

+182
-46
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ OBJS = vops.o
66
EXTENSION = vops
77
DATA = vops--1.0.sql
88
PGFILEDESC = "vops - vectorized operations"
9-
CUSTOM_COPT = -O3
9+
#CUSTOM_COPT = -O3
1010

11-
REGRESS =
11+
REGRESS = test.sql
1212

1313
ifdef USE_PGXS
1414
PG_CONFIG = pg_config

sql/test.out

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
CREATE EXTENSION
2+
CREATE TABLE
3+
CREATE TABLE
4+
INSERT 0 6
5+
populate
6+
----------
7+
8+
(1 row)
9+
10+
unnest
11+
--------
12+
(2)
13+
(3)
14+
(4)
15+
(3 rows)
16+
17+
countall
18+
----------
19+
4
20+
(1 row)
21+
22+
count
23+
-------
24+
60
25+
(1 row)
26+
27+
count
28+
-------
29+
4
30+
(1 row)
31+
32+
count | count | sum | avg | min | max | variance | var_pop | var_samp | stddev | stddev_pop | stddev_samp
33+
-------+-------+-----+-----+-----+-----+------------------+---------+------------------+------------------+------------------+------------------
34+
4 | 4 | 10 | 2.5 | 1 | 4 | 1.66666666666667 | 1.25 | 1.66666666666667 | 1.29099444873581 | 1.11803398874989 | 1.29099444873581
35+
(1 row)
36+
37+
count | count | sum | avg | min | max | variance | var_pop | var_samp | stddev | stddev_pop | stddev_samp
38+
-------+-------+-----+-----+-----+-----+------------------+---------+------------------+------------------+------------------+------------------
39+
4 | 4 | 10 | 2.5 | 1 | 4 | 1.66666666666667 | 1.25 | 1.66666666666667 | 1.29099444873581 | 1.11803398874989 | 1.29099444873581
40+
(1 row)
41+
42+
count | count | sum | avg | min | max | variance | var_pop | var_samp | stddev | stddev_pop | stddev_samp
43+
-------+-------+-----+-----+-----+-----+----------+-------------------+----------+--------+-------------------+-------------
44+
3 | 3 | 9 | 3 | 2 | 4 | 1 | 0.666666666666667 | 1 | 1 | 0.816496580927726 | 1
45+
(1 row)
46+
47+
count | count | sum | avg | min | max | variance | var_pop | var_samp | stddev | stddev_pop | stddev_samp
48+
-------+-------+-----+-----+-----+-----+----------+-------------------+----------+--------+-------------------+-------------
49+
3 | 3 | 9 | 3 | 2 | 4 | 1 | 0.666666666666667 | 1 | 1 | 0.816496580927726 | 1
50+
(1 row)
51+

sql/test.sql

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
create extension vops;
2+
create table s(x real);
3+
create table v(x vops_float4);
4+
insert into s values(1.0),(2.0),(null),(3.0),(null),(4.0);
5+
select populate(destination:='v'::regclass, source:='s'::regclass);
6+
select unnest(v.*) from v where x > 1;
7+
select countall(*) from v where x is not null;
8+
select count(*) from v where x is null;
9+
select count(*) from v where x is not null;
10+
select count(*),count(x),sum(x),avg(x),min(x),max(x),variance(x),var_pop(x),var_samp(x),stddev(x),stddev_pop(x),stddev_samp(x) from v where x >= 0.0;
11+
select count(*),count(x),sum(x),avg(x),min(x),max(x),variance(x),var_pop(x),var_samp(x),stddev(x),stddev_pop(x),stddev_samp(x) from s where x >= 0.0;
12+
select count(*),count(x),sum(x),avg(x),min(x),max(x),variance(x),var_pop(x),var_samp(x),stddev(x),stddev_pop(x),stddev_samp(x) from v where x > 1.0;
13+
select count(*),count(x),sum(x),avg(x),min(x),max(x),variance(x),var_pop(x),var_samp(x),stddev(x),stddev_pop(x),stddev_samp(x) from s where x > 1.0;

vops--1.0.sql

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ CREATE AGGREGATE variance(vops_char) (
260260
CREATE AGGREGATE stddev_pop(vops_char) (
261261
SFUNC = vops_char_var_accumulate,
262262
STYPE = internal,
263-
FINALFUNC = vops_var_pop_final,
263+
FINALFUNC = vops_stddev_pop_final,
264264
COMBINEFUNC = vops_var_combine,
265265
SERIALFUNC = vops_var_serial,
266266
DESERIALFUNC = vops_var_deserial,
@@ -270,7 +270,7 @@ CREATE AGGREGATE stddev_pop(vops_char) (
270270
CREATE AGGREGATE stddev_samp(vops_char) (
271271
SFUNC = vops_char_var_accumulate,
272272
STYPE = internal,
273-
FINALFUNC = vops_var_samp_final,
273+
FINALFUNC = vops_stddev_samp_final,
274274
COMBINEFUNC = vops_var_combine,
275275
SERIALFUNC = vops_var_serial,
276276
DESERIALFUNC = vops_var_deserial,
@@ -280,7 +280,7 @@ CREATE AGGREGATE stddev_samp(vops_char) (
280280
CREATE AGGREGATE stddev(vops_char) (
281281
SFUNC = vops_char_var_accumulate,
282282
STYPE = internal,
283-
FINALFUNC = vops_var_samp_final,
283+
FINALFUNC = vops_stddev_samp_final,
284284
COMBINEFUNC = vops_var_combine,
285285
SERIALFUNC = vops_var_serial,
286286
DESERIALFUNC = vops_var_deserial,
@@ -447,7 +447,7 @@ CREATE AGGREGATE variance(vops_int2) (
447447
CREATE AGGREGATE stddev_pop(vops_int2) (
448448
SFUNC = vops_int2_var_accumulate,
449449
STYPE = internal,
450-
FINALFUNC = vops_var_pop_final,
450+
FINALFUNC = vops_stddev_pop_final,
451451
COMBINEFUNC = vops_var_combine,
452452
SERIALFUNC = vops_var_serial,
453453
DESERIALFUNC = vops_var_deserial,
@@ -457,7 +457,7 @@ CREATE AGGREGATE stddev_pop(vops_int2) (
457457
CREATE AGGREGATE stddev_samp(vops_int2) (
458458
SFUNC = vops_int2_var_accumulate,
459459
STYPE = internal,
460-
FINALFUNC = vops_var_samp_final,
460+
FINALFUNC = vops_stddev_samp_final,
461461
COMBINEFUNC = vops_var_combine,
462462
SERIALFUNC = vops_var_serial,
463463
DESERIALFUNC = vops_var_deserial,
@@ -467,7 +467,7 @@ CREATE AGGREGATE stddev_samp(vops_int2) (
467467
CREATE AGGREGATE stddev(vops_int2) (
468468
SFUNC = vops_int2_var_accumulate,
469469
STYPE = internal,
470-
FINALFUNC = vops_var_samp_final,
470+
FINALFUNC = vops_stddev_samp_final,
471471
COMBINEFUNC = vops_var_combine,
472472
SERIALFUNC = vops_var_serial,
473473
DESERIALFUNC = vops_var_deserial,
@@ -648,7 +648,7 @@ CREATE AGGREGATE variance(vops_int4) (
648648
CREATE AGGREGATE stddev_pop(vops_int4) (
649649
SFUNC = vops_int4_var_accumulate,
650650
STYPE = internal,
651-
FINALFUNC = vops_var_pop_final,
651+
FINALFUNC = vops_stddev_pop_final,
652652
COMBINEFUNC = vops_var_combine,
653653
SERIALFUNC = vops_var_serial,
654654
DESERIALFUNC = vops_var_deserial,
@@ -658,7 +658,7 @@ CREATE AGGREGATE stddev_pop(vops_int4) (
658658
CREATE AGGREGATE stddev_samp(vops_int4) (
659659
SFUNC = vops_int4_var_accumulate,
660660
STYPE = internal,
661-
FINALFUNC = vops_var_samp_final,
661+
FINALFUNC = vops_stddev_samp_final,
662662
COMBINEFUNC = vops_var_combine,
663663
SERIALFUNC = vops_var_serial,
664664
DESERIALFUNC = vops_var_deserial,
@@ -668,7 +668,7 @@ CREATE AGGREGATE stddev_samp(vops_int4) (
668668
CREATE AGGREGATE stddev(vops_int4) (
669669
SFUNC = vops_int4_var_accumulate,
670670
STYPE = internal,
671-
FINALFUNC = vops_var_samp_final,
671+
FINALFUNC = vops_stddev_samp_final,
672672
COMBINEFUNC = vops_var_combine,
673673
SERIALFUNC = vops_var_serial,
674674
DESERIALFUNC = vops_var_deserial,
@@ -845,7 +845,7 @@ CREATE AGGREGATE variance(vops_date) (
845845
CREATE AGGREGATE stddev_pop(vops_date) (
846846
SFUNC = vops_date_var_accumulate,
847847
STYPE = internal,
848-
FINALFUNC = vops_var_pop_final,
848+
FINALFUNC = vops_stddev_pop_final,
849849
COMBINEFUNC = vops_var_combine,
850850
SERIALFUNC = vops_var_serial,
851851
DESERIALFUNC = vops_var_deserial,
@@ -855,7 +855,7 @@ CREATE AGGREGATE stddev_pop(vops_date) (
855855
CREATE AGGREGATE stddev_samp(vops_date) (
856856
SFUNC = vops_date_var_accumulate,
857857
STYPE = internal,
858-
FINALFUNC = vops_var_samp_final,
858+
FINALFUNC = vops_stddev_samp_final,
859859
COMBINEFUNC = vops_var_combine,
860860
SERIALFUNC = vops_var_serial,
861861
DESERIALFUNC = vops_var_deserial,
@@ -865,7 +865,7 @@ CREATE AGGREGATE stddev_samp(vops_date) (
865865
CREATE AGGREGATE stddev(vops_date) (
866866
SFUNC = vops_date_var_accumulate,
867867
STYPE = internal,
868-
FINALFUNC = vops_var_samp_final,
868+
FINALFUNC = vops_stddev_samp_final,
869869
COMBINEFUNC = vops_var_combine,
870870
SERIALFUNC = vops_var_serial,
871871
DESERIALFUNC = vops_var_deserial,
@@ -1042,7 +1042,7 @@ CREATE AGGREGATE variance(vops_timestamp) (
10421042
CREATE AGGREGATE stddev_pop(vops_timestamp) (
10431043
SFUNC = vops_timestamp_var_accumulate,
10441044
STYPE = internal,
1045-
FINALFUNC = vops_var_pop_final,
1045+
FINALFUNC = vops_stddev_pop_final,
10461046
COMBINEFUNC = vops_var_combine,
10471047
SERIALFUNC = vops_var_serial,
10481048
DESERIALFUNC = vops_var_deserial,
@@ -1052,7 +1052,7 @@ CREATE AGGREGATE stddev_pop(vops_timestamp) (
10521052
CREATE AGGREGATE stddev_samp(vops_timestamp) (
10531053
SFUNC = vops_timestamp_var_accumulate,
10541054
STYPE = internal,
1055-
FINALFUNC = vops_var_samp_final,
1055+
FINALFUNC = vops_stddev_samp_final,
10561056
COMBINEFUNC = vops_var_combine,
10571057
SERIALFUNC = vops_var_serial,
10581058
DESERIALFUNC = vops_var_deserial,
@@ -1062,7 +1062,7 @@ CREATE AGGREGATE stddev_samp(vops_timestamp) (
10621062
CREATE AGGREGATE stddev(vops_timestamp) (
10631063
SFUNC = vops_timestamp_var_accumulate,
10641064
STYPE = internal,
1065-
FINALFUNC = vops_var_samp_final,
1065+
FINALFUNC = vops_stddev_samp_final,
10661066
COMBINEFUNC = vops_var_combine,
10671067
SERIALFUNC = vops_var_serial,
10681068
DESERIALFUNC = vops_var_deserial,
@@ -1240,7 +1240,7 @@ CREATE AGGREGATE variance(vops_int8) (
12401240
CREATE AGGREGATE stddev_pop(vops_int8) (
12411241
SFUNC = vops_int8_var_accumulate,
12421242
STYPE = internal,
1243-
FINALFUNC = vops_var_pop_final,
1243+
FINALFUNC = vops_stddev_pop_final,
12441244
COMBINEFUNC = vops_var_combine,
12451245
SERIALFUNC = vops_var_serial,
12461246
DESERIALFUNC = vops_var_deserial,
@@ -1250,7 +1250,7 @@ CREATE AGGREGATE stddev_pop(vops_int8) (
12501250
CREATE AGGREGATE stddev_samp(vops_int8) (
12511251
SFUNC = vops_int8_var_accumulate,
12521252
STYPE = internal,
1253-
FINALFUNC = vops_var_samp_final,
1253+
FINALFUNC = vops_stddev_samp_final,
12541254
COMBINEFUNC = vops_var_combine,
12551255
SERIALFUNC = vops_var_serial,
12561256
DESERIALFUNC = vops_var_deserial,
@@ -1260,7 +1260,7 @@ CREATE AGGREGATE stddev_samp(vops_int8) (
12601260
CREATE AGGREGATE stddev(vops_int8) (
12611261
SFUNC = vops_int8_var_accumulate,
12621262
STYPE = internal,
1263-
FINALFUNC = vops_var_samp_final,
1263+
FINALFUNC = vops_stddev_samp_final,
12641264
COMBINEFUNC = vops_var_combine,
12651265
SERIALFUNC = vops_var_serial,
12661266
DESERIALFUNC = vops_var_deserial,
@@ -1427,7 +1427,7 @@ CREATE AGGREGATE variance(vops_float4) (
14271427
CREATE AGGREGATE stddev_pop(vops_float4) (
14281428
SFUNC = vops_float4_var_accumulate,
14291429
STYPE = internal,
1430-
FINALFUNC = vops_var_pop_final,
1430+
FINALFUNC = vops_stddev_pop_final,
14311431
COMBINEFUNC = vops_var_combine,
14321432
SERIALFUNC = vops_var_serial,
14331433
DESERIALFUNC = vops_var_deserial,
@@ -1437,7 +1437,7 @@ CREATE AGGREGATE stddev_pop(vops_float4) (
14371437
CREATE AGGREGATE stddev_samp(vops_float4) (
14381438
SFUNC = vops_float4_var_accumulate,
14391439
STYPE = internal,
1440-
FINALFUNC = vops_var_samp_final,
1440+
FINALFUNC = vops_stddev_samp_final,
14411441
COMBINEFUNC = vops_var_combine,
14421442
SERIALFUNC = vops_var_serial,
14431443
DESERIALFUNC = vops_var_deserial,
@@ -1447,7 +1447,7 @@ CREATE AGGREGATE stddev_samp(vops_float4) (
14471447
CREATE AGGREGATE stddev(vops_float4) (
14481448
SFUNC = vops_float4_var_accumulate,
14491449
STYPE = internal,
1450-
FINALFUNC = vops_var_samp_final,
1450+
FINALFUNC = vops_stddev_samp_final,
14511451
COMBINEFUNC = vops_var_combine,
14521452
SERIALFUNC = vops_var_serial,
14531453
DESERIALFUNC = vops_var_deserial,
@@ -1614,7 +1614,7 @@ CREATE AGGREGATE variance(vops_float8) (
16141614
CREATE AGGREGATE stddev_pop(vops_float8) (
16151615
SFUNC = vops_float8_var_accumulate,
16161616
STYPE = internal,
1617-
FINALFUNC = vops_var_pop_final,
1617+
FINALFUNC = vops_stddev_pop_final,
16181618
COMBINEFUNC = vops_var_combine,
16191619
SERIALFUNC = vops_var_serial,
16201620
DESERIALFUNC = vops_var_deserial,
@@ -1624,7 +1624,7 @@ CREATE AGGREGATE stddev_pop(vops_float8) (
16241624
CREATE AGGREGATE stddev_samp(vops_float8) (
16251625
SFUNC = vops_float8_var_accumulate,
16261626
STYPE = internal,
1627-
FINALFUNC = vops_var_samp_final,
1627+
FINALFUNC = vops_stddev_samp_final,
16281628
COMBINEFUNC = vops_var_combine,
16291629
SERIALFUNC = vops_var_serial,
16301630
DESERIALFUNC = vops_var_deserial,
@@ -1634,7 +1634,7 @@ CREATE AGGREGATE stddev_samp(vops_float8) (
16341634
CREATE AGGREGATE stddev(vops_float8) (
16351635
SFUNC = vops_float8_var_accumulate,
16361636
STYPE = internal,
1637-
FINALFUNC = vops_var_samp_final,
1637+
FINALFUNC = vops_stddev_samp_final,
16381638
COMBINEFUNC = vops_var_combine,
16391639
SERIALFUNC = vops_var_serial,
16401640
DESERIALFUNC = vops_var_deserial,
@@ -1716,3 +1716,6 @@ create function reduce(bigint) returns setof vops_aggregates as 'MODULE_PATHNAME
17161716
create function unnest(anyelement) returns setof record as 'MODULE_PATHNAME','vops_unnest' language C parallel safe strict immutable;
17171717

17181718
create cast (vops_bool as bool) with function filter(vops_bool) AS IMPLICIT;
1719+
1720+
create function is_null(anyelement) returns vops_bool as 'MODULE_PATHNAME','vops_is_null' language C parallel safe immutable;
1721+
create function is_not_null(anyelement) returns vops_bool as 'MODULE_PATHNAME','vops_is_not_null' language C parallel safe immutable;

0 commit comments

Comments
 (0)