847 lines
16 KiB
Plaintext
847 lines
16 KiB
Plaintext
--
|
|
-- MISC
|
|
--
|
|
--
|
|
-- BTREE
|
|
--
|
|
UPDATE onek
|
|
SET unique1 = onek.unique1 + 1;
|
|
UPDATE onek
|
|
SET unique1 = onek.unique1 - 1;
|
|
--
|
|
-- BTREE partial
|
|
--
|
|
-- UPDATE onek2
|
|
-- SET unique1 = onek2.unique1 + 1;
|
|
--UPDATE onek2
|
|
-- SET unique1 = onek2.unique1 - 1;
|
|
--
|
|
-- BTREE shutting out non-functional updates
|
|
--
|
|
-- the following two tests seem to take a long time on some
|
|
-- systems. This non-func update stuff needs to be examined
|
|
-- more closely. - jolly (2/22/96)
|
|
--
|
|
UPDATE tmp
|
|
SET stringu1 = reverse_name(onek.stringu1)
|
|
FROM onek
|
|
WHERE onek.stringu1 = 'JBAAAA' and
|
|
onek.stringu1 = tmp.stringu1;
|
|
UPDATE tmp
|
|
SET stringu1 = reverse_name(onek2.stringu1)
|
|
FROM onek2
|
|
WHERE onek2.stringu1 = 'JCAAAA' and
|
|
onek2.stringu1 = tmp.stringu1;
|
|
DROP TABLE tmp;
|
|
--UPDATE person*
|
|
-- SET age = age + 1;
|
|
--UPDATE person*
|
|
-- SET age = age + 3
|
|
-- WHERE name = 'linda';
|
|
--
|
|
-- copy
|
|
--
|
|
COPY onek TO '@abs_builddir@/results/onek.data';
|
|
DELETE FROM onek;
|
|
COPY onek FROM '@abs_builddir@/results/onek.data';
|
|
SELECT unique1 FROM onek WHERE unique1 < 2 ORDER BY unique1;
|
|
unique1
|
|
---------
|
|
0
|
|
1
|
|
(2 rows)
|
|
|
|
DELETE FROM onek2;
|
|
COPY onek2 FROM '@abs_builddir@/results/onek.data';
|
|
SELECT unique1 FROM onek2 WHERE unique1 < 2 ORDER BY unique1;
|
|
unique1
|
|
---------
|
|
0
|
|
1
|
|
(2 rows)
|
|
|
|
COPY BINARY stud_emp TO '@abs_builddir@/results/stud_emp.data';
|
|
DELETE FROM stud_emp;
|
|
COPY BINARY stud_emp FROM '@abs_builddir@/results/stud_emp.data';
|
|
SELECT * FROM stud_emp;
|
|
name | age | location | salary | manager | gpa | percent
|
|
-------+-----+------------+--------+---------+-----+---------
|
|
jeff | 23 | (8,7.7) | 600 | sharon | 3.5 |
|
|
cim | 30 | (10.5,4.7) | 400 | | 3.4 |
|
|
linda | 19 | (0.9,6.1) | 100 | | 2.9 |
|
|
(3 rows)
|
|
|
|
-- COPY aggtest FROM stdin;
|
|
-- 56 7.8
|
|
-- 100 99.097
|
|
-- 0 0.09561
|
|
-- 42 324.78
|
|
-- .
|
|
-- COPY aggtest TO stdout;
|
|
--
|
|
-- inheritance stress test
|
|
--
|
|
SELECT * FROM a_star*;
|
|
class | a
|
|
-------+----
|
|
a | 1
|
|
a | 2
|
|
a |
|
|
b | 3
|
|
b | 4
|
|
b |
|
|
b |
|
|
c | 5
|
|
c | 6
|
|
c |
|
|
c |
|
|
d | 7
|
|
d | 8
|
|
d | 9
|
|
d | 10
|
|
d |
|
|
d | 11
|
|
d | 12
|
|
d | 13
|
|
d |
|
|
d |
|
|
d |
|
|
d | 14
|
|
d |
|
|
d |
|
|
d |
|
|
d |
|
|
e | 15
|
|
e | 16
|
|
e | 17
|
|
e |
|
|
e | 18
|
|
e |
|
|
e |
|
|
f | 19
|
|
f | 20
|
|
f | 21
|
|
f | 22
|
|
f |
|
|
f | 24
|
|
f | 25
|
|
f | 26
|
|
f |
|
|
f |
|
|
f |
|
|
f | 27
|
|
f |
|
|
f |
|
|
f |
|
|
f |
|
|
(50 rows)
|
|
|
|
SELECT *
|
|
FROM b_star* x
|
|
WHERE x.b = text 'bumble' or x.a < 3;
|
|
class | a | b
|
|
-------+---+--------
|
|
b | | bumble
|
|
(1 row)
|
|
|
|
SELECT class, a
|
|
FROM c_star* x
|
|
WHERE x.c ~ text 'hi';
|
|
class | a
|
|
-------+----
|
|
c | 5
|
|
c |
|
|
d | 7
|
|
d | 8
|
|
d | 10
|
|
d |
|
|
d | 12
|
|
d |
|
|
d |
|
|
d |
|
|
e | 15
|
|
e | 16
|
|
e |
|
|
e |
|
|
f | 19
|
|
f | 20
|
|
f | 21
|
|
f |
|
|
f | 24
|
|
f |
|
|
f |
|
|
f |
|
|
(22 rows)
|
|
|
|
SELECT class, b, c
|
|
FROM d_star* x
|
|
WHERE x.a < 100;
|
|
class | b | c
|
|
-------+---------+------------
|
|
d | grumble | hi sunita
|
|
d | stumble | hi koko
|
|
d | rumble |
|
|
d | | hi kristin
|
|
d | fumble |
|
|
d | | hi avi
|
|
d | |
|
|
d | |
|
|
(8 rows)
|
|
|
|
SELECT class, c FROM e_star* x WHERE x.c NOTNULL;
|
|
class | c
|
|
-------+-------------
|
|
e | hi carol
|
|
e | hi bob
|
|
e | hi michelle
|
|
e | hi elisa
|
|
f | hi claire
|
|
f | hi mike
|
|
f | hi marcel
|
|
f | hi keith
|
|
f | hi marc
|
|
f | hi allison
|
|
f | hi jeff
|
|
f | hi carl
|
|
(12 rows)
|
|
|
|
SELECT * FROM f_star* x WHERE x.c ISNULL;
|
|
class | a | c | e | f
|
|
-------+----+---+-----+-------------------------------------------
|
|
f | 22 | | -7 | ((111,555),(222,666),(333,777),(444,888))
|
|
f | 25 | | -9 |
|
|
f | 26 | | | ((11111,33333),(22222,44444))
|
|
f | | | -11 | ((1111111,3333333),(2222222,4444444))
|
|
f | 27 | | |
|
|
f | | | -12 |
|
|
f | | | | ((11111111,33333333),(22222222,44444444))
|
|
f | | | |
|
|
(8 rows)
|
|
|
|
-- grouping and aggregation on inherited sets have been busted in the past...
|
|
SELECT sum(a) FROM a_star*;
|
|
sum
|
|
-----
|
|
355
|
|
(1 row)
|
|
|
|
SELECT class, sum(a) FROM a_star* GROUP BY class ORDER BY class;
|
|
class | sum
|
|
-------+-----
|
|
a | 3
|
|
b | 7
|
|
c | 11
|
|
d | 84
|
|
e | 66
|
|
f | 184
|
|
(6 rows)
|
|
|
|
ALTER TABLE f_star RENAME COLUMN f TO ff;
|
|
ALTER TABLE e_star* RENAME COLUMN e TO ee;
|
|
ALTER TABLE d_star* RENAME COLUMN d TO dd;
|
|
ALTER TABLE c_star* RENAME COLUMN c TO cc;
|
|
ALTER TABLE b_star* RENAME COLUMN b TO bb;
|
|
ALTER TABLE a_star* RENAME COLUMN a TO aa;
|
|
SELECT class, aa
|
|
FROM a_star* x
|
|
WHERE aa ISNULL;
|
|
class | aa
|
|
-------+----
|
|
a |
|
|
b |
|
|
b |
|
|
c |
|
|
c |
|
|
d |
|
|
d |
|
|
d |
|
|
d |
|
|
d |
|
|
d |
|
|
d |
|
|
d |
|
|
e |
|
|
e |
|
|
e |
|
|
f |
|
|
f |
|
|
f |
|
|
f |
|
|
f |
|
|
f |
|
|
f |
|
|
f |
|
|
(24 rows)
|
|
|
|
-- As of Postgres 7.1, ALTER implicitly recurses,
|
|
-- so this should be same as ALTER a_star*
|
|
ALTER TABLE a_star RENAME COLUMN aa TO foo;
|
|
SELECT class, foo
|
|
FROM a_star* x
|
|
WHERE x.foo >= 2;
|
|
class | foo
|
|
-------+-----
|
|
a | 2
|
|
b | 3
|
|
b | 4
|
|
c | 5
|
|
c | 6
|
|
d | 7
|
|
d | 8
|
|
d | 9
|
|
d | 10
|
|
d | 11
|
|
d | 12
|
|
d | 13
|
|
d | 14
|
|
e | 15
|
|
e | 16
|
|
e | 17
|
|
e | 18
|
|
f | 19
|
|
f | 20
|
|
f | 21
|
|
f | 22
|
|
f | 24
|
|
f | 25
|
|
f | 26
|
|
f | 27
|
|
(25 rows)
|
|
|
|
ALTER TABLE a_star RENAME COLUMN foo TO aa;
|
|
SELECT *
|
|
from a_star*
|
|
WHERE aa < 1000;
|
|
class | aa
|
|
-------+----
|
|
a | 1
|
|
a | 2
|
|
b | 3
|
|
b | 4
|
|
c | 5
|
|
c | 6
|
|
d | 7
|
|
d | 8
|
|
d | 9
|
|
d | 10
|
|
d | 11
|
|
d | 12
|
|
d | 13
|
|
d | 14
|
|
e | 15
|
|
e | 16
|
|
e | 17
|
|
e | 18
|
|
f | 19
|
|
f | 20
|
|
f | 21
|
|
f | 22
|
|
f | 24
|
|
f | 25
|
|
f | 26
|
|
f | 27
|
|
(26 rows)
|
|
|
|
ALTER TABLE f_star ADD COLUMN f int4;
|
|
UPDATE f_star SET f = 10;
|
|
ALTER TABLE e_star* ADD COLUMN e int4;
|
|
--UPDATE e_star* SET e = 42;
|
|
SELECT * FROM e_star*;
|
|
class | aa | cc | ee | e
|
|
-------+----+-------------+-----+---
|
|
e | 15 | hi carol | -1 |
|
|
e | 16 | hi bob | |
|
|
e | 17 | | -2 |
|
|
e | | hi michelle | -3 |
|
|
e | 18 | | |
|
|
e | | hi elisa | |
|
|
e | | | -4 |
|
|
f | 19 | hi claire | -5 |
|
|
f | 20 | hi mike | -6 |
|
|
f | 21 | hi marcel | |
|
|
f | 22 | | -7 |
|
|
f | | hi keith | -8 |
|
|
f | 24 | hi marc | |
|
|
f | 25 | | -9 |
|
|
f | 26 | | |
|
|
f | | hi allison | -10 |
|
|
f | | hi jeff | |
|
|
f | | | -11 |
|
|
f | 27 | | |
|
|
f | | hi carl | |
|
|
f | | | -12 |
|
|
f | | | |
|
|
f | | | |
|
|
(23 rows)
|
|
|
|
ALTER TABLE a_star* ADD COLUMN a text;
|
|
NOTICE: merging definition of column "a" for child "d_star"
|
|
-- That ALTER TABLE should have added TOAST tables.
|
|
SELECT relname, reltoastrelid <> 0 AS has_toast_table
|
|
FROM pg_class
|
|
WHERE oid::regclass IN ('a_star', 'c_star')
|
|
ORDER BY 1;
|
|
relname | has_toast_table
|
|
---------+-----------------
|
|
a_star | t
|
|
c_star | t
|
|
(2 rows)
|
|
|
|
--UPDATE b_star*
|
|
-- SET a = text 'gazpacho'
|
|
-- WHERE aa > 4;
|
|
SELECT class, aa, a FROM a_star*;
|
|
class | aa | a
|
|
-------+----+---
|
|
a | 1 |
|
|
a | 2 |
|
|
a | |
|
|
b | 3 |
|
|
b | 4 |
|
|
b | |
|
|
b | |
|
|
c | 5 |
|
|
c | 6 |
|
|
c | |
|
|
c | |
|
|
d | 7 |
|
|
d | 8 |
|
|
d | 9 |
|
|
d | 10 |
|
|
d | |
|
|
d | 11 |
|
|
d | 12 |
|
|
d | 13 |
|
|
d | |
|
|
d | |
|
|
d | |
|
|
d | 14 |
|
|
d | |
|
|
d | |
|
|
d | |
|
|
d | |
|
|
e | 15 |
|
|
e | 16 |
|
|
e | 17 |
|
|
e | |
|
|
e | 18 |
|
|
e | |
|
|
e | |
|
|
f | 19 |
|
|
f | 20 |
|
|
f | 21 |
|
|
f | 22 |
|
|
f | |
|
|
f | 24 |
|
|
f | 25 |
|
|
f | 26 |
|
|
f | |
|
|
f | |
|
|
f | |
|
|
f | 27 |
|
|
f | |
|
|
f | |
|
|
f | |
|
|
f | |
|
|
(50 rows)
|
|
|
|
--
|
|
-- versions
|
|
--
|
|
--
|
|
-- postquel functions
|
|
--
|
|
--
|
|
-- mike does post_hacking,
|
|
-- joe and sally play basketball, and
|
|
-- everyone else does nothing.
|
|
--
|
|
SELECT p.name, name(p.hobbies) FROM ONLY person p;
|
|
name | name
|
|
-------+-------------
|
|
mike | posthacking
|
|
joe | basketball
|
|
sally | basketball
|
|
(3 rows)
|
|
|
|
--
|
|
-- as above, but jeff also does post_hacking.
|
|
--
|
|
SELECT p.name, name(p.hobbies) FROM person* p;
|
|
name | name
|
|
-------+-------------
|
|
mike | posthacking
|
|
joe | basketball
|
|
sally | basketball
|
|
jeff | posthacking
|
|
(4 rows)
|
|
|
|
--
|
|
-- the next two queries demonstrate how functions generate bogus duplicates.
|
|
-- this is a "feature" ..
|
|
--
|
|
SELECT DISTINCT hobbies_r.name, name(hobbies_r.equipment) FROM hobbies_r
|
|
ORDER BY 1,2;
|
|
name | name
|
|
-------------+---------------
|
|
basketball | hightops
|
|
posthacking | advil
|
|
posthacking | peet's coffee
|
|
skywalking | guts
|
|
(4 rows)
|
|
|
|
SELECT hobbies_r.name, (hobbies_r.equipment).name FROM hobbies_r;
|
|
name | name
|
|
-------------+---------------
|
|
posthacking | advil
|
|
posthacking | peet's coffee
|
|
posthacking | advil
|
|
posthacking | peet's coffee
|
|
basketball | hightops
|
|
basketball | hightops
|
|
skywalking | guts
|
|
(7 rows)
|
|
|
|
--
|
|
-- mike needs advil and peet's coffee,
|
|
-- joe and sally need hightops, and
|
|
-- everyone else is fine.
|
|
--
|
|
SELECT p.name, name(p.hobbies), name(equipment(p.hobbies)) FROM ONLY person p;
|
|
name | name | name
|
|
-------+-------------+---------------
|
|
mike | posthacking | advil
|
|
mike | posthacking | peet's coffee
|
|
joe | basketball | hightops
|
|
sally | basketball | hightops
|
|
(4 rows)
|
|
|
|
--
|
|
-- as above, but jeff needs advil and peet's coffee as well.
|
|
--
|
|
SELECT p.name, name(p.hobbies), name(equipment(p.hobbies)) FROM person* p;
|
|
name | name | name
|
|
-------+-------------+---------------
|
|
mike | posthacking | advil
|
|
mike | posthacking | peet's coffee
|
|
joe | basketball | hightops
|
|
sally | basketball | hightops
|
|
jeff | posthacking | advil
|
|
jeff | posthacking | peet's coffee
|
|
(6 rows)
|
|
|
|
--
|
|
-- just like the last two, but make sure that the target list fixup and
|
|
-- unflattening is being done correctly.
|
|
--
|
|
SELECT name(equipment(p.hobbies)), p.name, name(p.hobbies) FROM ONLY person p;
|
|
name | name | name
|
|
---------------+-------+-------------
|
|
advil | mike | posthacking
|
|
peet's coffee | mike | posthacking
|
|
hightops | joe | basketball
|
|
hightops | sally | basketball
|
|
(4 rows)
|
|
|
|
SELECT (p.hobbies).equipment.name, p.name, name(p.hobbies) FROM person* p;
|
|
name | name | name
|
|
---------------+-------+-------------
|
|
advil | mike | posthacking
|
|
peet's coffee | mike | posthacking
|
|
hightops | joe | basketball
|
|
hightops | sally | basketball
|
|
advil | jeff | posthacking
|
|
peet's coffee | jeff | posthacking
|
|
(6 rows)
|
|
|
|
SELECT (p.hobbies).equipment.name, name(p.hobbies), p.name FROM ONLY person p;
|
|
name | name | name
|
|
---------------+-------------+-------
|
|
advil | posthacking | mike
|
|
peet's coffee | posthacking | mike
|
|
hightops | basketball | joe
|
|
hightops | basketball | sally
|
|
(4 rows)
|
|
|
|
SELECT name(equipment(p.hobbies)), name(p.hobbies), p.name FROM person* p;
|
|
name | name | name
|
|
---------------+-------------+-------
|
|
advil | posthacking | mike
|
|
peet's coffee | posthacking | mike
|
|
hightops | basketball | joe
|
|
hightops | basketball | sally
|
|
advil | posthacking | jeff
|
|
peet's coffee | posthacking | jeff
|
|
(6 rows)
|
|
|
|
SELECT user_relns() AS user_relns
|
|
ORDER BY user_relns;
|
|
user_relns
|
|
---------------------
|
|
a
|
|
a_star
|
|
abstime_tbl
|
|
aggtest
|
|
aggtype
|
|
array_index_op_test
|
|
array_op_test
|
|
arrtest
|
|
b
|
|
b_star
|
|
bb
|
|
box_tbl
|
|
bprime
|
|
brinopers
|
|
brintest
|
|
bt_f8_heap
|
|
bt_i4_heap
|
|
bt_name_heap
|
|
bt_txt_heap
|
|
btree_tall_tbl
|
|
c
|
|
c_star
|
|
char_tbl
|
|
check2_tbl
|
|
check_seq
|
|
check_tbl
|
|
circle_tbl
|
|
city
|
|
copy_tbl
|
|
d
|
|
d_star
|
|
date_tbl
|
|
default_seq
|
|
default_tbl
|
|
defaultexpr_tbl
|
|
dept
|
|
dupindexcols
|
|
e_star
|
|
emp
|
|
equipment_r
|
|
f_star
|
|
fast_emp4000
|
|
float4_tbl
|
|
float8_tbl
|
|
func_index_heap
|
|
gin_test_tbl
|
|
gist_point_tbl
|
|
hash_f8_heap
|
|
hash_i4_heap
|
|
hash_name_heap
|
|
hash_txt_heap
|
|
hobbies_r
|
|
iexit
|
|
ihighway
|
|
inet_tbl
|
|
inhf
|
|
inhx
|
|
insert_seq
|
|
insert_tbl
|
|
int2_tbl
|
|
int4_tbl
|
|
int8_tbl
|
|
interval_tbl
|
|
iportaltest
|
|
kd_point_tbl
|
|
line_tbl
|
|
log_table
|
|
lseg_tbl
|
|
main_table
|
|
money_data
|
|
num_data
|
|
num_exp_add
|
|
num_exp_div
|
|
num_exp_ln
|
|
num_exp_log10
|
|
num_exp_mul
|
|
num_exp_power_10_ln
|
|
num_exp_sqrt
|
|
num_exp_sub
|
|
num_input_test
|
|
num_result
|
|
onek
|
|
onek2
|
|
path_tbl
|
|
person
|
|
point_tbl
|
|
polygon_tbl
|
|
quad_point_tbl
|
|
radix_text_tbl
|
|
ramp
|
|
random_tbl
|
|
real_city
|
|
reltime_tbl
|
|
road
|
|
shighway
|
|
slow_emp4000
|
|
spgist_point_tbl
|
|
spgist_text_tbl
|
|
street
|
|
stud_emp
|
|
student
|
|
subselect_tbl
|
|
t
|
|
tenk1
|
|
tenk2
|
|
test_range_excl
|
|
test_range_gist
|
|
test_range_spgist
|
|
test_tablesample
|
|
test_tablesample_v1
|
|
test_tablesample_v2
|
|
test_tsvector
|
|
testjsonb
|
|
text_tbl
|
|
time_tbl
|
|
timestamp_tbl
|
|
timestamptz_tbl
|
|
timetz_tbl
|
|
tinterval_tbl
|
|
tm
|
|
tmm
|
|
toyemp
|
|
tv
|
|
tvm
|
|
tvmm
|
|
tvv
|
|
tvvm
|
|
tvvmv
|
|
varchar_tbl
|
|
xacttest
|
|
(130 rows)
|
|
|
|
SELECT name(equipment(hobby_construct(text 'skywalking', text 'mer')));
|
|
name
|
|
------
|
|
guts
|
|
(1 row)
|
|
|
|
SELECT name(equipment(hobby_construct_named(text 'skywalking', text 'mer')));
|
|
name
|
|
------
|
|
guts
|
|
(1 row)
|
|
|
|
SELECT name(equipment_named(hobby_construct_named(text 'skywalking', text 'mer')));
|
|
name
|
|
------
|
|
guts
|
|
(1 row)
|
|
|
|
SELECT name(equipment_named_ambiguous_1a(hobby_construct_named(text 'skywalking', text 'mer')));
|
|
name
|
|
------
|
|
guts
|
|
(1 row)
|
|
|
|
SELECT name(equipment_named_ambiguous_1b(hobby_construct_named(text 'skywalking', text 'mer')));
|
|
name
|
|
------
|
|
guts
|
|
(1 row)
|
|
|
|
SELECT name(equipment_named_ambiguous_1c(hobby_construct_named(text 'skywalking', text 'mer')));
|
|
name
|
|
------
|
|
guts
|
|
(1 row)
|
|
|
|
SELECT name(equipment_named_ambiguous_2a(text 'skywalking'));
|
|
name
|
|
------
|
|
guts
|
|
(1 row)
|
|
|
|
SELECT name(equipment_named_ambiguous_2b(text 'skywalking'));
|
|
name
|
|
---------------
|
|
advil
|
|
peet's coffee
|
|
hightops
|
|
guts
|
|
(4 rows)
|
|
|
|
SELECT hobbies_by_name('basketball');
|
|
hobbies_by_name
|
|
-----------------
|
|
joe
|
|
(1 row)
|
|
|
|
SELECT name, overpaid(emp.*) FROM emp;
|
|
name | overpaid
|
|
--------+----------
|
|
sharon | t
|
|
sam | t
|
|
bill | t
|
|
jeff | f
|
|
cim | f
|
|
linda | f
|
|
(6 rows)
|
|
|
|
--
|
|
-- Try a few cases with SQL-spec row constructor expressions
|
|
--
|
|
SELECT * FROM equipment(ROW('skywalking', 'mer'));
|
|
name | hobby
|
|
------+------------
|
|
guts | skywalking
|
|
(1 row)
|
|
|
|
SELECT name(equipment(ROW('skywalking', 'mer')));
|
|
name
|
|
------
|
|
guts
|
|
(1 row)
|
|
|
|
SELECT *, name(equipment(h.*)) FROM hobbies_r h;
|
|
name | person | name
|
|
-------------+--------+---------------
|
|
posthacking | mike | advil
|
|
posthacking | mike | peet's coffee
|
|
posthacking | jeff | advil
|
|
posthacking | jeff | peet's coffee
|
|
basketball | joe | hightops
|
|
basketball | sally | hightops
|
|
skywalking | | guts
|
|
(7 rows)
|
|
|
|
SELECT *, (equipment(CAST((h.*) AS hobbies_r))).name FROM hobbies_r h;
|
|
name | person | name
|
|
-------------+--------+---------------
|
|
posthacking | mike | advil
|
|
posthacking | mike | peet's coffee
|
|
posthacking | jeff | advil
|
|
posthacking | jeff | peet's coffee
|
|
basketball | joe | hightops
|
|
basketball | sally | hightops
|
|
skywalking | | guts
|
|
(7 rows)
|
|
|
|
--
|
|
-- check that old-style C functions work properly with TOASTed values
|
|
--
|
|
create table oldstyle_test(i int4, t text);
|
|
insert into oldstyle_test values(null,null);
|
|
insert into oldstyle_test values(0,'12');
|
|
insert into oldstyle_test values(1000,'12');
|
|
insert into oldstyle_test values(0, repeat('x', 50000));
|
|
select i, length(t), octet_length(t), oldstyle_length(i,t) from oldstyle_test;
|
|
i | length | octet_length | oldstyle_length
|
|
------+--------+--------------+-----------------
|
|
| | |
|
|
0 | 2 | 2 | 2
|
|
1000 | 2 | 2 | 1002
|
|
0 | 50000 | 50000 | 50000
|
|
(4 rows)
|
|
|
|
drop table oldstyle_test;
|
|
--
|
|
-- functional joins
|
|
--
|
|
--
|
|
-- instance rules
|
|
--
|
|
--
|
|
-- rewrite rules
|
|
--
|