PGVER = $(shell $(PG_CONFIG) --version | sed 's/PostgreSQL //')
SQLMED = $(shell test "$(PGVER)" "<" "8.4" && echo "false" || echo "true")
PG91 = $(shell test "$(PGVER)" "<" "9.1" && echo "false" || echo "true")
+PG92 = $(shell test "$(PGVER)" "<" "9.2" && echo "false" || echo "true")
# SQL/MED available, add foreign data wrapper and regression tests
ifeq ($(SQLMED), true)
EXTRA_CLEAN += $(EXTSQL)
endif
+ifeq ($(PG92), true)
+REGRESS += plproxy_range
+endif
#
# load PGXS makefile
switch (s_type->typtype)
{
default:
- case TYPTYPE_RANGE:
plproxy_error(func, "unsupported type code: %s (%u)", namebuf, oid);
break;
case TYPTYPE_PSEUDO:
case TYPTYPE_COMPOSITE:
case TYPTYPE_DOMAIN:
case TYPTYPE_ENUM:
+ case TYPTYPE_RANGE:
break;
}
--- /dev/null
+\c test_part0
+CREATE TYPE f8range AS RANGE (
+ subtype = float8,
+ subtype_diff = float8mi
+);
+create or replace function test_range(in id int, inout frange f8range,
+ out irange int4range)
+returns record as $$
+begin
+ irange := '[20,30)';
+ return;
+end;
+$$ language plpgsql;
+select * from test_range(0, '(1.5,2.4]');
+ frange | irange
+-----------+---------
+ (1.5,2.4] | [20,30)
+(1 row)
+
+\c regression
+CREATE TYPE f8range AS RANGE (
+ subtype = float8,
+ subtype_diff = float8mi
+);
+create or replace function test_range(in _id integer, inout frange f8range, out irange int4range)
+returns setof record as $$
+ cluster 'testcluster';
+ run on _id;
+$$ language plproxy;
+select * from test_range(0, '(1.5,2.4]');
+ frange | irange
+-----------+---------
+ (1.5,2.4] | [20,30)
+(1 row)
+
--- /dev/null
+
+\c test_part0
+
+CREATE TYPE f8range AS RANGE (
+ subtype = float8,
+ subtype_diff = float8mi
+);
+
+create or replace function test_range(in id int, inout frange f8range,
+ out irange int4range)
+returns record as $$
+begin
+ irange := '[20,30)';
+ return;
+end;
+$$ language plpgsql;
+
+select * from test_range(0, '(1.5,2.4]');
+
+\c regression
+
+CREATE TYPE f8range AS RANGE (
+ subtype = float8,
+ subtype_diff = float8mi
+);
+
+create or replace function test_range(in _id integer, inout frange f8range, out irange int4range)
+returns setof record as $$
+ cluster 'testcluster';
+ run on _id;
+$$ language plproxy;
+
+select * from test_range(0, '(1.5,2.4]');
+