summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorAshutosh Bapat2011-06-29 08:09:12 +0000
committerAshutosh Bapat2011-06-29 08:09:12 +0000
commitbc0decce1cb03d4f645f38bb61c7f73b16445fcb (patch)
tree13cc37ff72f713ca83d90335cded4d75bca83215 /src/test
parent51355d7b7c7cde644fd754ace4e21b746840e4f9 (diff)
Since aggregation can work without collection function, user need not provide
collection function for user-defined aggregate. But in such cases aggregate will not be pushed to the datanodes. This change also renders the alternate output file create_aggregate_1.out, hence deleted it.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/regress/expected/create_aggregate_1.out73
-rw-r--r--src/test/regress/expected/polymorphism_1.out129
2 files changed, 61 insertions, 141 deletions
diff --git a/src/test/regress/expected/create_aggregate_1.out b/src/test/regress/expected/create_aggregate_1.out
deleted file mode 100644
index a1afc03d0a..0000000000
--- a/src/test/regress/expected/create_aggregate_1.out
+++ /dev/null
@@ -1,73 +0,0 @@
---
--- CREATE_AGGREGATE
---
--- all functions CREATEd
-CREATE AGGREGATE newavg (
- sfunc = int4_avg_accum, basetype = int4, stype = _int8,
- finalfunc = int8_avg,
- initcond1 = '{0,0}'
-);
-ERROR: aggregate ctype must be specified
--- test comments
-COMMENT ON AGGREGATE newavg_wrong (int4) IS 'an agg comment';
-ERROR: aggregate newavg_wrong(integer) does not exist
-COMMENT ON AGGREGATE newavg (int4) IS 'an agg comment';
-ERROR: aggregate newavg(integer) does not exist
-COMMENT ON AGGREGATE newavg (int4) IS NULL;
-ERROR: aggregate newavg(integer) does not exist
--- without finalfunc; test obsolete spellings 'sfunc1' etc
-CREATE AGGREGATE newsum (
- sfunc1 = int4pl, basetype = int4, stype1 = int4,
- initcond1 = '0'
-);
-ERROR: aggregate ctype must be specified
--- zero-argument aggregate
-CREATE AGGREGATE newcnt (*) (
- sfunc = int8inc, stype = int8,
- initcond = '0'
-);
-ERROR: aggregate ctype must be specified
--- old-style spelling of same
-CREATE AGGREGATE oldcnt (
- sfunc = int8inc, basetype = 'ANY', stype = int8,
- initcond = '0'
-);
-ERROR: aggregate ctype must be specified
--- aggregate that only cares about null/nonnull input
-CREATE AGGREGATE newcnt ("any") (
- sfunc = int8inc_any, stype = int8,
- initcond = '0'
-);
-ERROR: aggregate ctype must be specified
-COMMENT ON AGGREGATE nosuchagg (*) IS 'should fail';
-ERROR: aggregate nosuchagg(*) does not exist
-COMMENT ON AGGREGATE newcnt (*) IS 'an agg(*) comment';
-ERROR: aggregate newcnt(*) does not exist
-COMMENT ON AGGREGATE newcnt ("any") IS 'an agg(any) comment';
-ERROR: aggregate newcnt("any") does not exist
--- multi-argument aggregate
-create function sum3(int8,int8,int8) returns int8 as
-'select $1 + $2 + $3' language sql strict immutable;
-create aggregate sum2(int8,int8) (
- sfunc = sum3, stype = int8,
- initcond = '0'
-);
-ERROR: aggregate ctype must be specified
--- multi-argument aggregates sensitive to distinct/order, strict/nonstrict
-create type aggtype as (a integer, b integer, c text);
-create function aggf_trans(aggtype[],integer,integer,text) returns aggtype[]
-as 'select array_append($1,ROW($2,$3,$4)::aggtype)'
-language sql strict immutable;
-create function aggfns_trans(aggtype[],integer,integer,text) returns aggtype[]
-as 'select array_append($1,ROW($2,$3,$4)::aggtype)'
-language sql immutable;
-create aggregate aggfstr(integer,integer,text) (
- sfunc = aggf_trans, stype = aggtype[],
- initcond = '{}'
-);
-ERROR: aggregate ctype must be specified
-create aggregate aggfns(integer,integer,text) (
- sfunc = aggfns_trans, stype = aggtype[],
- initcond = '{}'
-);
-ERROR: aggregate ctype must be specified
diff --git a/src/test/regress/expected/polymorphism_1.out b/src/test/regress/expected/polymorphism_1.out
index 008c399498..774f935dac 100644
--- a/src/test/regress/expected/polymorphism_1.out
+++ b/src/test/regress/expected/polymorphism_1.out
@@ -76,28 +76,28 @@ CREATE FUNCTION ffnp(int[]) returns int[] as
-- should CREATE
CREATE AGGREGATE myaggp01a(*) (SFUNC = stfnp, STYPE = int4[],
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- P N
-- should ERROR: stfnp(anyarray) not matched by stfnp(int[])
CREATE AGGREGATE myaggp02a(*) (SFUNC = stfnp, STYPE = anyarray,
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
-- N P
-- should CREATE
CREATE AGGREGATE myaggp03a(*) (SFUNC = stfp, STYPE = int4[],
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
CREATE AGGREGATE myaggp03b(*) (SFUNC = stfp, STYPE = int4[],
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- P P
-- should ERROR: we have no way to resolve S
CREATE AGGREGATE myaggp04a(*) (SFUNC = stfp, STYPE = anyarray,
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
CREATE AGGREGATE myaggp04b(*) (SFUNC = stfp, STYPE = anyarray,
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
-- Case2 (R = P) && ((B = P) || (B = N))
-- -------------------------------------
-- S tf1 B tf2
@@ -106,106 +106,103 @@ ERROR: aggregate ctype must be specified
-- should CREATE
CREATE AGGREGATE myaggp05a(BASETYPE = int, SFUNC = tfnp, STYPE = int[],
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- N N N P
-- should CREATE
CREATE AGGREGATE myaggp06a(BASETYPE = int, SFUNC = tf2p, STYPE = int[],
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- N N P N
-- should ERROR: tfnp(int[], anyelement) not matched by tfnp(int[], int)
CREATE AGGREGATE myaggp07a(BASETYPE = anyelement, SFUNC = tfnp, STYPE = int[],
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tfnp(integer[], anyelement) does not exist
-- N N P P
-- should CREATE
CREATE AGGREGATE myaggp08a(BASETYPE = anyelement, SFUNC = tf2p, STYPE = int[],
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- N P N N
-- should CREATE
CREATE AGGREGATE myaggp09a(BASETYPE = int, SFUNC = tf1p, STYPE = int[],
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
CREATE AGGREGATE myaggp09b(BASETYPE = int, SFUNC = tf1p, STYPE = int[],
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- N P N P
-- should CREATE
CREATE AGGREGATE myaggp10a(BASETYPE = int, SFUNC = tfp, STYPE = int[],
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
CREATE AGGREGATE myaggp10b(BASETYPE = int, SFUNC = tfp, STYPE = int[],
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- N P P N
-- should ERROR: tf1p(int[],anyelement) not matched by tf1p(anyarray,int)
CREATE AGGREGATE myaggp11a(BASETYPE = anyelement, SFUNC = tf1p, STYPE = int[],
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tf1p(integer[], anyelement) does not exist
CREATE AGGREGATE myaggp11b(BASETYPE = anyelement, SFUNC = tf1p, STYPE = int[],
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tf1p(integer[], anyelement) does not exist
-- N P P P
-- should ERROR: tfp(int[],anyelement) not matched by tfp(anyarray,anyelement)
CREATE AGGREGATE myaggp12a(BASETYPE = anyelement, SFUNC = tfp, STYPE = int[],
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tfp(integer[], anyelement) does not exist
CREATE AGGREGATE myaggp12b(BASETYPE = anyelement, SFUNC = tfp, STYPE = int[],
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tfp(integer[], anyelement) does not exist
-- P N N N
-- should ERROR: tfnp(anyarray, int) not matched by tfnp(int[],int)
CREATE AGGREGATE myaggp13a(BASETYPE = int, SFUNC = tfnp, STYPE = anyarray,
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
-- P N N P
-- should ERROR: tf2p(anyarray, int) not matched by tf2p(int[],anyelement)
CREATE AGGREGATE myaggp14a(BASETYPE = int, SFUNC = tf2p, STYPE = anyarray,
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
-- P N P N
-- should ERROR: tfnp(anyarray, anyelement) not matched by tfnp(int[],int)
CREATE AGGREGATE myaggp15a(BASETYPE = anyelement, SFUNC = tfnp,
STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tfnp(anyarray, anyelement) does not exist
-- P N P P
-- should ERROR: tf2p(anyarray, anyelement) not matched by tf2p(int[],anyelement)
CREATE AGGREGATE myaggp16a(BASETYPE = anyelement, SFUNC = tf2p,
STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tf2p(anyarray, anyelement) does not exist
-- P P N N
-- should ERROR: we have no way to resolve S
CREATE AGGREGATE myaggp17a(BASETYPE = int, SFUNC = tf1p, STYPE = anyarray,
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
CREATE AGGREGATE myaggp17b(BASETYPE = int, SFUNC = tf1p, STYPE = anyarray,
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
-- P P N P
-- should ERROR: tfp(anyarray, int) not matched by tfp(anyarray, anyelement)
CREATE AGGREGATE myaggp18a(BASETYPE = int, SFUNC = tfp, STYPE = anyarray,
FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
CREATE AGGREGATE myaggp18b(BASETYPE = int, SFUNC = tfp, STYPE = anyarray,
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
-- P P P N
-- should ERROR: tf1p(anyarray, anyelement) not matched by tf1p(anyarray, int)
CREATE AGGREGATE myaggp19a(BASETYPE = anyelement, SFUNC = tf1p,
STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tf1p(anyarray, anyelement) does not exist
CREATE AGGREGATE myaggp19b(BASETYPE = anyelement, SFUNC = tf1p,
STYPE = anyarray, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tf1p(anyarray, anyelement) does not exist
-- P P P P
-- should CREATE
CREATE AGGREGATE myaggp20a(BASETYPE = anyelement, SFUNC = tfp,
STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
CREATE AGGREGATE myaggp20b(BASETYPE = anyelement, SFUNC = tfp,
STYPE = anyarray, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- Case3 (R = N) && (B = A)
-- ------------------------
-- S tf1
@@ -214,28 +211,28 @@ ERROR: aggregate ctype must be specified
-- should CREATE
CREATE AGGREGATE myaggn01a(*) (SFUNC = stfnp, STYPE = int4[],
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
CREATE AGGREGATE myaggn01b(*) (SFUNC = stfnp, STYPE = int4[],
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- P N
-- should ERROR: stfnp(anyarray) not matched by stfnp(int[])
CREATE AGGREGATE myaggn02a(*) (SFUNC = stfnp, STYPE = anyarray,
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
CREATE AGGREGATE myaggn02b(*) (SFUNC = stfnp, STYPE = anyarray,
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
-- N P
-- should CREATE
CREATE AGGREGATE myaggn03a(*) (SFUNC = stfp, STYPE = int4[],
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- P P
-- should ERROR: ffnp(anyarray) not matched by ffnp(int[])
CREATE AGGREGATE myaggn04a(*) (SFUNC = stfp, STYPE = anyarray,
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
-- Case4 (R = N) && ((B = P) || (B = N))
-- -------------------------------------
-- S tf1 B tf2
@@ -244,110 +241,107 @@ ERROR: aggregate ctype must be specified
-- should CREATE
CREATE AGGREGATE myaggn05a(BASETYPE = int, SFUNC = tfnp, STYPE = int[],
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
CREATE AGGREGATE myaggn05b(BASETYPE = int, SFUNC = tfnp, STYPE = int[],
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- N N N P
-- should CREATE
CREATE AGGREGATE myaggn06a(BASETYPE = int, SFUNC = tf2p, STYPE = int[],
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
CREATE AGGREGATE myaggn06b(BASETYPE = int, SFUNC = tf2p, STYPE = int[],
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- N N P N
-- should ERROR: tfnp(int[], anyelement) not matched by tfnp(int[], int)
CREATE AGGREGATE myaggn07a(BASETYPE = anyelement, SFUNC = tfnp, STYPE = int[],
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tfnp(integer[], anyelement) does not exist
CREATE AGGREGATE myaggn07b(BASETYPE = anyelement, SFUNC = tfnp, STYPE = int[],
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tfnp(integer[], anyelement) does not exist
-- N N P P
-- should CREATE
CREATE AGGREGATE myaggn08a(BASETYPE = anyelement, SFUNC = tf2p, STYPE = int[],
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
CREATE AGGREGATE myaggn08b(BASETYPE = anyelement, SFUNC = tf2p, STYPE = int[],
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- N P N N
-- should CREATE
CREATE AGGREGATE myaggn09a(BASETYPE = int, SFUNC = tf1p, STYPE = int[],
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- N P N P
-- should CREATE
CREATE AGGREGATE myaggn10a(BASETYPE = int, SFUNC = tfp, STYPE = int[],
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
-- N P P N
-- should ERROR: tf1p(int[],anyelement) not matched by tf1p(anyarray,int)
CREATE AGGREGATE myaggn11a(BASETYPE = anyelement, SFUNC = tf1p, STYPE = int[],
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tf1p(integer[], anyelement) does not exist
-- N P P P
-- should ERROR: tfp(int[],anyelement) not matched by tfp(anyarray,anyelement)
CREATE AGGREGATE myaggn12a(BASETYPE = anyelement, SFUNC = tfp, STYPE = int[],
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tfp(integer[], anyelement) does not exist
-- P N N N
-- should ERROR: tfnp(anyarray, int) not matched by tfnp(int[],int)
CREATE AGGREGATE myaggn13a(BASETYPE = int, SFUNC = tfnp, STYPE = anyarray,
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
CREATE AGGREGATE myaggn13b(BASETYPE = int, SFUNC = tfnp, STYPE = anyarray,
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
-- P N N P
-- should ERROR: tf2p(anyarray, int) not matched by tf2p(int[],anyelement)
CREATE AGGREGATE myaggn14a(BASETYPE = int, SFUNC = tf2p, STYPE = anyarray,
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
CREATE AGGREGATE myaggn14b(BASETYPE = int, SFUNC = tf2p, STYPE = anyarray,
INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
-- P N P N
-- should ERROR: tfnp(anyarray, anyelement) not matched by tfnp(int[],int)
CREATE AGGREGATE myaggn15a(BASETYPE = anyelement, SFUNC = tfnp,
STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tfnp(anyarray, anyelement) does not exist
CREATE AGGREGATE myaggn15b(BASETYPE = anyelement, SFUNC = tfnp,
STYPE = anyarray, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tfnp(anyarray, anyelement) does not exist
-- P N P P
-- should ERROR: tf2p(anyarray, anyelement) not matched by tf2p(int[],anyelement)
CREATE AGGREGATE myaggn16a(BASETYPE = anyelement, SFUNC = tf2p,
STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tf2p(anyarray, anyelement) does not exist
CREATE AGGREGATE myaggn16b(BASETYPE = anyelement, SFUNC = tf2p,
STYPE = anyarray, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tf2p(anyarray, anyelement) does not exist
-- P P N N
-- should ERROR: ffnp(anyarray) not matched by ffnp(int[])
CREATE AGGREGATE myaggn17a(BASETYPE = int, SFUNC = tf1p, STYPE = anyarray,
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
-- P P N P
-- should ERROR: tfp(anyarray, int) not matched by tfp(anyarray, anyelement)
CREATE AGGREGATE myaggn18a(BASETYPE = int, SFUNC = tfp, STYPE = anyarray,
FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: cannot determine transition data type
+DETAIL: An aggregate using a polymorphic transition type must have at least one polymorphic argument.
-- P P P N
-- should ERROR: tf1p(anyarray, anyelement) not matched by tf1p(anyarray, int)
CREATE AGGREGATE myaggn19a(BASETYPE = anyelement, SFUNC = tf1p,
STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function tf1p(anyarray, anyelement) does not exist
-- P P P P
-- should ERROR: ffnp(anyarray) not matched by ffnp(int[])
CREATE AGGREGATE myaggn20a(BASETYPE = anyelement, SFUNC = tfp,
STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}');
-ERROR: aggregate ctype must be specified
+ERROR: function ffnp(anyarray) does not exist
-- multi-arg polymorphic
CREATE AGGREGATE mysum2(anyelement,anyelement) (SFUNC = sum3,
STYPE = anyelement, INITCOND = '0');
-ERROR: aggregate ctype must be specified
-- create test data for polymorphic aggregates
create temp table t(f1 int, f2 int[], f3 text);
ERROR: PG-XC does not yet support temporary tables
@@ -534,24 +528,23 @@ create aggregate build_group(anyelement, integer) (
SFUNC = add_group,
STYPE = anyarray
);
-ERROR: aggregate ctype must be specified
select build_group(q1,3) from int8_tbl;
-ERROR: function build_group(bigint, integer) does not exist
-LINE 1: select build_group(q1,3) from int8_tbl;
- ^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
+ build_group
+----------------------------
+ {123,123,4567890123456789}
+(1 row)
+
-- this should fail because stype isn't compatible with arg
create aggregate build_group(int8, integer) (
SFUNC = add_group,
STYPE = int2[]
);
-ERROR: aggregate ctype must be specified
+ERROR: function add_group(smallint[], bigint, integer) does not exist
-- but we can make a non-poly agg from a poly sfunc if types are OK
create aggregate build_group(int8, integer) (
SFUNC = add_group,
STYPE = int8[]
);
-ERROR: aggregate ctype must be specified
-- check that we can apply functions taking ANYARRAY to pg_stats
select distinct array_ndims(histogram_bounds) from pg_stats
where histogram_bounds is not null;