mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-12 18:34:36 +08:00
Again, add more tests
This commit is contained in:
parent
7956e606d6
commit
04688df668
45
src/test/regress/sql/char16.sql
Normal file
45
src/test/regress/sql/char16.sql
Normal file
@ -0,0 +1,45 @@
|
||||
--**************** testing built-in type char16 **************
|
||||
--
|
||||
-- all inputs are silently truncated at 16 characters
|
||||
--
|
||||
|
||||
CREATE TABLE CHAR16_TBL(f1 char16);
|
||||
|
||||
INSERT INTO CHAR16_TBL(f1) VALUES ('ABCDEFGHIJKLMNOP');
|
||||
|
||||
INSERT INTO CHAR16_TBL(f1) VALUES ('abcdefghijklmnop');
|
||||
|
||||
INSERT INTO CHAR16_TBL(f1) VALUES ('asdfghjkl;');
|
||||
|
||||
INSERT INTO CHAR16_TBL(f1) VALUES ('343f%2a');
|
||||
|
||||
INSERT INTO CHAR16_TBL(f1) VALUES ('d34aaasdf');
|
||||
|
||||
INSERT INTO CHAR16_TBL(f1) VALUES ('');
|
||||
|
||||
INSERT INTO CHAR16_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUV');
|
||||
|
||||
|
||||
SELECT '' AS seven, CHAR16_TBL.*;
|
||||
|
||||
SELECT '' AS six, c.f1 FROM CHAR16_TBL c WHERE c.f1 <> 'ABCDEFGHIJKLMNOP';
|
||||
|
||||
SELECT '' AS one, c.f1 FROM CHAR16_TBL c WHERE c.f1 = 'ABCDEFGHIJKLMNOP';
|
||||
|
||||
SELECT '' AS three, c.f1 FROM CHAR16_TBL c WHERE c.f1 < 'ABCDEFGHIJKLMNOP';
|
||||
|
||||
SELECT '' AS four, c.f1 FROM CHAR16_TBL c WHERE c.f1 <= 'ABCDEFGHIJKLMNOP';
|
||||
|
||||
SELECT '' AS three, c.f1 FROM CHAR16_TBL c WHERE c.f1 > 'ABCDEFGHIJKLMNOP';
|
||||
|
||||
SELECT '' AS four, c.f1 FROM CHAR16_TBL c WHERE c.f1 >= 'ABCDEFGHIJKLMNOP';
|
||||
|
||||
SELECT '' AS seven, c.f1 FROM CHAR16_TBL c WHERE c.f1 ~ '.*';
|
||||
|
||||
SELECT '' AS zero, c.f1 FROM CHAR16_TBL c WHERE c.f1 !~ '.*';
|
||||
|
||||
SELECT '' AS three, c.f1 FROM CHAR16_TBL c WHERE c.f1 ~ '[0-9]';
|
||||
|
||||
SELECT '' AS two, c.f1 FROM CHAR16_TBL c WHERE c.f1 ~ '.*asdf.*';
|
||||
|
||||
|
46
src/test/regress/sql/char8.sql
Normal file
46
src/test/regress/sql/char8.sql
Normal file
@ -0,0 +1,46 @@
|
||||
-- **************** testing built-in type char8 **************
|
||||
--
|
||||
-- all inputs are silently truncated at 8 characters
|
||||
--
|
||||
|
||||
CREATE TABLE CHAR8_TBL(f1 char8);
|
||||
|
||||
INSERT INTO CHAR8_TBL(f1) VALUES ('ABCDEFGH');
|
||||
|
||||
INSERT INTO CHAR8_TBL(f1) VALUES ('abcdefgh');
|
||||
|
||||
INSERT INTO CHAR8_TBL(f1) VALUES ('ZYWZ410-');
|
||||
|
||||
INSERT INTO CHAR8_TBL(f1) VALUES ('343f%2a');
|
||||
|
||||
INSERT INTO CHAR8_TBL(f1) VALUES ('d34aas');
|
||||
|
||||
INSERT INTO CHAR8_TBL(f1) VALUES ('');
|
||||
|
||||
INSERT INTO CHAR8_TBL(f1) VALUES ('1234567890');
|
||||
|
||||
|
||||
SELECT '' AS seven, CHAR8_TBL.*;
|
||||
|
||||
SELECT '' AS six, c.f1 FROM CHAR8_TBL c WHERE c.f1 <> 'ABCDEFGH';
|
||||
|
||||
SELECT '' AS one, c.f1 FROM CHAR8_TBL c WHERE c.f1 = 'ABCDEFGH';
|
||||
|
||||
SELECT '' AS three, c.f1 FROM CHAR8_TBL c WHERE c.f1 < 'ABCDEFGH';
|
||||
|
||||
SELECT '' AS four, c.f1 FROM CHAR8_TBL c WHERE c.f1 <= 'ABCDEFGH';
|
||||
|
||||
SELECT '' AS three, c.f1 FROM CHAR8_TBL c WHERE c.f1 > 'ABCDEFGH';
|
||||
|
||||
SELECT '' AS four, c.f1 FROM CHAR8_TBL c WHERE c.f1 >= 'ABCDEFGH';
|
||||
|
||||
SELECT '' AS seven, c.f1 FROM CHAR8_TBL c WHERE c.f1 ~ '.*';
|
||||
|
||||
SELECT '' AS zero, c.f1 FROM CHAR8_TBL c WHERE c.f1 !~ '.*';
|
||||
|
||||
SELECT '' AS four, c.f1 FROM CHAR8_TBL c WHERE c.f1 ~ '[0-9]';
|
||||
|
||||
SELECT '' AS three, c.f1 FROM CHAR8_TBL c WHERE c.f1 ~ '.*34.*';
|
||||
|
||||
|
||||
|
65
src/test/regress/sql/float4.sql
Normal file
65
src/test/regress/sql/float4.sql
Normal file
@ -0,0 +1,65 @@
|
||||
-- *************testing built-in type float4 ****************
|
||||
|
||||
CREATE TABLE FLOAT4_TBL (f1 float4);
|
||||
|
||||
INSERT INTO FLOAT4_TBL(f1) VALUES ('0.0');
|
||||
|
||||
INSERT INTO FLOAT4_TBL(f1) VALUES ('1004.30');
|
||||
|
||||
INSERT INTO FLOAT4_TBL(f1) VALUES ('-34.84');
|
||||
|
||||
INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e+20');
|
||||
|
||||
INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e-20');
|
||||
|
||||
-- test for over and under flow
|
||||
INSERT INTO FLOAT4_TBL(f1) VALUES ('10e40');
|
||||
|
||||
INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e40');
|
||||
|
||||
INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-40');
|
||||
|
||||
INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-40');
|
||||
|
||||
|
||||
SELECT '' AS five, FLOAT4_TBL.*;
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3';
|
||||
|
||||
SELECT '' AS one, f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3';
|
||||
|
||||
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1;
|
||||
|
||||
SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3';
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1;
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3';
|
||||
|
||||
SELECT '' AS three, f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
|
||||
SELECT '' AS three, f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
|
||||
SELECT '' AS three, f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
|
||||
SELECT '' AS three, f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
|
||||
-- test divide by zero
|
||||
SELECT '' AS bad, f.f1 / '0.0' from FLOAT4_TBL f;
|
||||
|
||||
SELECT '' AS five, FLOAT4_TBL.*;
|
||||
|
||||
-- test the unary float4abs operator
|
||||
SELECT '' AS five, f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f;
|
||||
|
||||
UPDATE FLOAT4_TBL
|
||||
SET f1 = FLOAT4_TBL.f1 * '-1'
|
||||
WHERE FLOAT4_TBL.f1 > '0.0';
|
||||
|
||||
SELECT '' AS five, FLOAT4_TBL.*;
|
||||
|
||||
|
104
src/test/regress/sql/float8.sql
Normal file
104
src/test/regress/sql/float8.sql
Normal file
@ -0,0 +1,104 @@
|
||||
-- *************testing built-in type float8 ****************
|
||||
|
||||
CREATE TABLE FLOAT8_TBL(f1 float8);
|
||||
|
||||
INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0');
|
||||
|
||||
INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30');
|
||||
|
||||
INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
|
||||
|
||||
INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
|
||||
|
||||
INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
|
||||
|
||||
-- test for over and under flow
|
||||
INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
|
||||
|
||||
INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
|
||||
|
||||
INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400');
|
||||
|
||||
INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');
|
||||
|
||||
|
||||
SELECT '' AS five, FLOAT8_TBL.*;
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3';
|
||||
|
||||
SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3';
|
||||
|
||||
SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1;
|
||||
|
||||
SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3';
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1;
|
||||
|
||||
SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3';
|
||||
|
||||
SELECT '' AS three, f.f1, f.f1 * '-10' AS x
|
||||
FROM FLOAT8_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
|
||||
SELECT '' AS three, f.f1, f.f1 + '-10' AS x
|
||||
FROM FLOAT8_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
|
||||
SELECT '' AS three, f.f1, f.f1 / '-10' AS x
|
||||
FROM FLOAT8_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
|
||||
SELECT '' AS three, f.f1, f.f1 - '-10' AS x
|
||||
FROM FLOAT8_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
|
||||
SELECT '' AS one, f.f1 ^ '2.0' AS square_f1
|
||||
FROM FLOAT8_TBL f where f.f1 = '1004.3';
|
||||
|
||||
-- absolute value
|
||||
SELECT '' AS five, f.f1, @f.f1 AS abs_f1
|
||||
FROM FLOAT8_TBL f;
|
||||
|
||||
-- truncate
|
||||
SELECT '' AS five, f.f1, %f.f1 AS trunc_f1
|
||||
FROM FLOAT8_TBL f;
|
||||
|
||||
-- round
|
||||
SELECT '' AS five, f.f1, f.f1 % AS round_f1
|
||||
FROM FLOAT8_TBL f;
|
||||
|
||||
-- square root
|
||||
SELECT '' AS three, f.f1, |/f.f1 AS sqrt_f1
|
||||
FROM FLOAT8_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
|
||||
-- take exp of ln(f.f1)
|
||||
SELECT '' AS three, f.f1, : ( ; f.f1) AS exp_ln_f1
|
||||
FROM FLOAT8_TBL f
|
||||
WHERE f.f1 > '0.0';
|
||||
|
||||
-- cube root
|
||||
SELECT '' AS five, f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f;
|
||||
|
||||
|
||||
SELECT '' AS five, FLOAT8_TBL.*;
|
||||
|
||||
UPDATE FLOAT8_TBL
|
||||
SET f1 = FLOAT8_TBL.f1 * '-1'
|
||||
WHERE FLOAT8_TBL.f1 > '0.0';
|
||||
|
||||
SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f;
|
||||
|
||||
SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f;
|
||||
|
||||
SELECT '' AS bad, (; (f.f1)) from FLOAT8_TBL f where f.f1 = '0.0' ;
|
||||
|
||||
SELECT '' AS bad, (; (f.f1)) from FLOAT8_TBL f where f.f1 < '0.0' ;
|
||||
|
||||
SELECT '' AS bad, : (f.f1) from FLOAT8_TBL f;
|
||||
|
||||
SELECT '' AS bad, f.f1 / '0.0' from FLOAT8_TBL f;
|
||||
|
||||
SELECT '' AS five, FLOAT8_TBL.*;
|
||||
|
||||
|
77
src/test/regress/sql/int2.sql
Normal file
77
src/test/regress/sql/int2.sql
Normal file
@ -0,0 +1,77 @@
|
||||
-- *************testing built-in type int2 ****************
|
||||
--
|
||||
-- NOTE: int2 operators never check for over/underflow!
|
||||
-- Some of these answers are consequently numerically incorrect.
|
||||
--
|
||||
|
||||
CREATE TABLE INT2_TBL(f1 int2);
|
||||
|
||||
INSERT INTO INT2_TBL(f1) VALUES ('0');
|
||||
|
||||
INSERT INTO INT2_TBL(f1) VALUES ('1234');
|
||||
|
||||
INSERT INTO INT2_TBL(f1) VALUES ('-1234');
|
||||
|
||||
INSERT INTO INT2_TBL(f1) VALUES ('34.5');
|
||||
|
||||
-- largest and smallest values
|
||||
INSERT INTO INT2_TBL(f1) VALUES ('32767');
|
||||
|
||||
INSERT INTO INT2_TBL(f1) VALUES ('-32767');
|
||||
|
||||
-- bad input values -- should give warnings
|
||||
INSERT INTO INT2_TBL(f1) VALUES ('100000');
|
||||
|
||||
INSERT INTO INT2_TBL(f1) VALUES ('asdf');
|
||||
|
||||
|
||||
SELECT '' AS five, INT2_TBL.*;
|
||||
|
||||
SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> '0'::int2;
|
||||
|
||||
SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> '0'::int4;
|
||||
|
||||
SELECT '' AS one, i.* FROM INT2_TBL i WHERE i.f1 = '0'::int2;
|
||||
|
||||
SELECT '' AS one, i.* FROM INT2_TBL i WHERE i.f1 = '0'::int4;
|
||||
|
||||
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < '0'::int2;
|
||||
|
||||
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < '0'::int4;
|
||||
|
||||
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= '0'::int2;
|
||||
|
||||
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= '0'::int4;
|
||||
|
||||
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > '0'::int2;
|
||||
|
||||
SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > '0'::int4;
|
||||
|
||||
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= '0'::int2;
|
||||
|
||||
SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= '0'::int4;
|
||||
|
||||
-- positive odds
|
||||
SELECT '' AS one, i.* FROM INT2_TBL i WHERE (i.f1 % '2'::int2) = '1'::int2;
|
||||
|
||||
-- any evens
|
||||
SELECT '' AS three, i.* FROM INT2_TBL i WHERE (i.f1 % '2'::int4) = '0'::int2;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 * '2'::int2 AS x FROM INT2_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 * '2'::int4 AS x FROM INT2_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 + '2'::int2 AS x FROM INT2_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 + '2'::int4 AS x FROM INT2_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 - '2'::int2 AS x FROM INT2_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 - '2'::int4 AS x FROM INT2_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 / '2'::int2 AS x FROM INT2_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 / '2'::int4 AS x FROM INT2_TBL i;
|
||||
|
||||
|
||||
|
105
src/test/regress/sql/int4.sql
Normal file
105
src/test/regress/sql/int4.sql
Normal file
@ -0,0 +1,105 @@
|
||||
-- *************testing built-in type int4 ****************
|
||||
--
|
||||
-- WARNING: int4 operators never check for over/underflow!
|
||||
-- Some of these answers are consequently numerically incorrect.
|
||||
--
|
||||
|
||||
CREATE TABLE INT4_TBL(f1 int4);
|
||||
|
||||
INSERT INTO INT4_TBL(f1) VALUES ('0');
|
||||
|
||||
INSERT INTO INT4_TBL(f1) VALUES ('123456');
|
||||
|
||||
INSERT INTO INT4_TBL(f1) VALUES ('-123456');
|
||||
|
||||
INSERT INTO INT4_TBL(f1) VALUES ('34.5');
|
||||
|
||||
-- largest and smallest values
|
||||
INSERT INTO INT4_TBL(f1) VALUES ('2147483647');
|
||||
|
||||
INSERT INTO INT4_TBL(f1) VALUES ('-2147483647');
|
||||
|
||||
-- bad input values -- should give warnings
|
||||
INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
|
||||
|
||||
INSERT INTO INT4_TBL(f1) VALUES ('asdf');
|
||||
|
||||
|
||||
SELECT '' AS five, INT4_TBL.*;
|
||||
|
||||
SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> '0'::int2;
|
||||
|
||||
SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> '0'::int4;
|
||||
|
||||
SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = '0'::int2;
|
||||
|
||||
SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = '0'::int4;
|
||||
|
||||
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < '0'::int2;
|
||||
|
||||
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < '0'::int4;
|
||||
|
||||
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= '0'::int2;
|
||||
|
||||
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= '0'::int4;
|
||||
|
||||
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > '0'::int2;
|
||||
|
||||
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > '0'::int4;
|
||||
|
||||
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= '0'::int2;
|
||||
|
||||
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= '0'::int4;
|
||||
|
||||
-- positive odds
|
||||
SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % '2'::int2) = '1'::int2;
|
||||
|
||||
-- any evens
|
||||
SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % '2'::int4) = '0'::int2;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 * '2'::int2 AS x FROM INT4_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 * '2'::int4 AS x FROM INT4_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 + '2'::int2 AS x FROM INT4_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 + '2'::int4 AS x FROM INT4_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 - '2'::int2 AS x FROM INT4_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 - '2'::int4 AS x FROM INT4_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 / '2'::int2 AS x FROM INT4_TBL i;
|
||||
|
||||
SELECT '' AS five, i.f1, i.f1 / '2'::int4 AS x FROM INT4_TBL i;
|
||||
|
||||
|
||||
--
|
||||
-- more complex expressions
|
||||
--
|
||||
SELECT '2'::int2 * '2'::int2 = '16'::int2 / '4'::int2 AS true;
|
||||
|
||||
SELECT '2'::int4 * '2'::int2 = '16'::int2 / '4'::int4 AS true;
|
||||
|
||||
SELECT '2'::int2 * '2'::int4 = '16'::int4 / '4'::int2 AS true;
|
||||
|
||||
SELECT '1000'::int4 < '999'::int4 AS false;
|
||||
|
||||
SELECT 4! AS twenty_four;
|
||||
|
||||
SELECT !!3 AS six;
|
||||
|
||||
SELECT 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 AS ten;
|
||||
|
||||
SELECT 2 + 2 / 2 AS three;
|
||||
|
||||
SELECT (2 + 2) / 2 AS two;
|
||||
|
||||
SELECT dsqrt('64'::float8) AS eight;
|
||||
|
||||
SELECT |/'64'::float8 AS eight;
|
||||
|
||||
SELECT ||/'27'::float8 AS three;
|
||||
|
||||
|
||||
|
1212
src/test/regress/sql/misc.sql
Normal file
1212
src/test/regress/sql/misc.sql
Normal file
File diff suppressed because it is too large
Load Diff
32
src/test/regress/sql/oid.sql
Normal file
32
src/test/regress/sql/oid.sql
Normal file
@ -0,0 +1,32 @@
|
||||
-- *************testing built-in type oid ****************
|
||||
CREATE TABLE OID_TBL(f1 oid);
|
||||
|
||||
INSERT INTO OID_TBL(f1) VALUES ('1234');
|
||||
|
||||
INSERT INTO OID_TBL(f1) VALUES ('1235');
|
||||
|
||||
INSERT INTO OID_TBL(f1) VALUES ('987');
|
||||
|
||||
INSERT INTO OID_TBL(f1) VALUES ('-1040');
|
||||
|
||||
INSERT INTO OID_TBL(f1) VALUES ('');
|
||||
|
||||
-- bad inputs
|
||||
INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
|
||||
|
||||
SELECT '' AS five, OID_TBL.*;
|
||||
|
||||
|
||||
SELECT '' AS one, o.* FROM OID_TBL o WHERE o.f1 = '1234'::oid;
|
||||
|
||||
SELECT '' AS four, o.* FROM OID_TBL o WHERE o.f1 <> '1234';
|
||||
|
||||
SELECT '' AS four, o.* FROM OID_TBL o WHERE o.f1 <= '1234';
|
||||
|
||||
SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 < '1234';
|
||||
|
||||
SELECT '' AS two, o.* FROM OID_TBL o WHERE o.f1 >= '1234';
|
||||
|
||||
SELECT '' AS one, o.* FROM OID_TBL o WHERE o.f1 > '1234';
|
||||
|
||||
|
47
src/test/regress/sql/oidint2.sql
Normal file
47
src/test/regress/sql/oidint2.sql
Normal file
@ -0,0 +1,47 @@
|
||||
-- *************testing built-in type oidint2 ****************
|
||||
-- oidint2 is a an adt for multiple key indices involving oid and int2
|
||||
-- probably will not be used directly by most users
|
||||
|
||||
CREATE TABLE OIDINT2_TBL(f1 oidint2);
|
||||
|
||||
INSERT INTO OIDINT2_TBL(f1) VALUES ('1234/9873');
|
||||
|
||||
INSERT INTO OIDINT2_TBL(f1) VALUES ('1235/9873');
|
||||
|
||||
INSERT INTO OIDINT2_TBL(f1) VALUES ('987/-1234');
|
||||
|
||||
-- no int2 component
|
||||
--
|
||||
-- this is defined as good in the code -- I don't know what will break
|
||||
-- if we disallow it.
|
||||
--
|
||||
INSERT INTO OIDINT2_TBL(f1) VALUES ('123456');
|
||||
|
||||
-- int2 component too large
|
||||
INSERT INTO OIDINT2_TBL(f1) VALUES ('123456/123456');
|
||||
|
||||
--
|
||||
-- this is defined as good in the code -- I don't know what will break
|
||||
-- if we disallow it.
|
||||
--
|
||||
INSERT INTO OIDINT2_TBL(f1) VALUES ('');
|
||||
|
||||
-- bad inputs
|
||||
INSERT INTO OIDINT2_TBL(f1) VALUES ('asdfasd');
|
||||
|
||||
|
||||
SELECT '' AS five, OIDINT2_TBL.*;
|
||||
|
||||
SELECT '' AS one, o.* FROM OIDINT2_TBL o WHERE o.f1 = '1235/9873';
|
||||
|
||||
SELECT '' AS four, o.* FROM OIDINT2_TBL o WHERE o.f1 <> '1235/9873';
|
||||
|
||||
SELECT '' AS four, o.* FROM OIDINT2_TBL o WHERE o.f1 <= '1235/9873';
|
||||
|
||||
SELECT '' AS three, o.* FROM OIDINT2_TBL o WHERE o.f1 < '1235/9873';
|
||||
|
||||
SELECT '' AS two, o.* FROM OIDINT2_TBL o WHERE o.f1 >= '1235/9873';
|
||||
|
||||
SELECT '' AS one, o.* FROM OIDINT2_TBL o WHERE o.f1 > '1235/9873';
|
||||
|
||||
|
46
src/test/regress/sql/oidint4.sql
Normal file
46
src/test/regress/sql/oidint4.sql
Normal file
@ -0,0 +1,46 @@
|
||||
--*************testing built-in type oidint4 ****************
|
||||
-- oidint4 is a an adt for multiple key indices involving oid and int4
|
||||
-- probably will not be used directly by most users
|
||||
|
||||
CREATE TABLE OIDINT4_TBL(f1 oidint4);
|
||||
|
||||
INSERT INTO OIDINT4_TBL(f1) VALUES ('1234/9873');
|
||||
|
||||
INSERT INTO OIDINT4_TBL(f1) VALUES ('1235/9873');
|
||||
|
||||
INSERT INTO OIDINT4_TBL(f1) VALUES ('987/-1234');
|
||||
|
||||
-- no int4 component
|
||||
--
|
||||
-- this is defined as good in the code -- I don't know what will break
|
||||
-- if we disallow it.
|
||||
--
|
||||
INSERT INTO OIDINT4_TBL(f1) VALUES ('123456');
|
||||
|
||||
-- int4 component too large
|
||||
INSERT INTO OIDINT4_TBL(f1) VALUES ('123456/1234568901234567890');
|
||||
|
||||
--
|
||||
-- this is defined as good in the code -- I don't know what will break
|
||||
-- if we disallow it.
|
||||
--
|
||||
INSERT INTO OIDINT4_TBL(f1) VALUES ('');
|
||||
|
||||
-- bad inputs
|
||||
INSERT INTO OIDINT4_TBL(f1) VALUES ('asdfasd');
|
||||
|
||||
SELECT '' AS five, OIDINT4_TBL.*;
|
||||
|
||||
SELECT '' AS one, o.* FROM OIDINT4_TBL o WHERE o.f1 = '1235/9873';
|
||||
|
||||
SELECT '' AS four, o.* FROM OIDINT4_TBL o WHERE o.f1 <> '1235/9873';
|
||||
|
||||
SELECT '' AS four, o.* FROM OIDINT4_TBL o WHERE o.f1 <= '1235/9873';
|
||||
|
||||
SELECT '' AS three, o.* FROM OIDINT4_TBL o WHERE o.f1 < '1235/9873';
|
||||
|
||||
SELECT '' AS two, o.* FROM OIDINT4_TBL o WHERE o.f1 >= '1235/9873';
|
||||
|
||||
SELECT '' AS one, o.* FROM OIDINT4_TBL o WHERE o.f1 > '1235/9873';
|
||||
|
||||
|
39
src/test/regress/sql/oidname.sql
Normal file
39
src/test/regress/sql/oidname.sql
Normal file
@ -0,0 +1,39 @@
|
||||
-- *************testing built-in type oidname ****************
|
||||
-- oidname is a an adt for multiple key indices involving oid and name
|
||||
-- probably will not be used directly by most users
|
||||
|
||||
CREATE TABLE OIDNAME_TBL(f1 oidname);
|
||||
|
||||
INSERT INTO OIDNAME_TBL(f1) VALUES ('1234,abcd');
|
||||
|
||||
INSERT INTO OIDNAME_TBL(f1) VALUES ('1235,efgh');
|
||||
|
||||
INSERT INTO OIDNAME_TBL(f1) VALUES ('987,XXXX');
|
||||
|
||||
-- no char16 component
|
||||
INSERT INTO OIDNAME_TBL(f1) VALUES ('123456');
|
||||
|
||||
-- char16 component too long
|
||||
INSERT INTO OIDNAME_TBL(f1) VALUES ('123456,abcdefghijklmnopqrsutvwyz');
|
||||
|
||||
-- bad inputs
|
||||
INSERT INTO OIDNAME_TBL(f1) VALUES ('');
|
||||
|
||||
INSERT INTO OIDNAME_TBL(f1) VALUES ('asdfasd');
|
||||
|
||||
|
||||
SELECT '' AS four, OIDNAME_TBL.*;
|
||||
|
||||
SELECT '' AS one, o.* FROM OIDNAME_TBL o WHERE o.f1 = '1234,abcd';
|
||||
|
||||
SELECT '' AS three, o.* FROM OIDNAME_TBL o WHERE o.f1 <> '1234,abcd';
|
||||
|
||||
SELECT '' AS two, o.* FROM OIDNAME_TBL o WHERE o.f1 <= '1234,abcd';
|
||||
|
||||
SELECT '' AS one, o.* FROM OIDNAME_TBL o WHERE o.f1 < '1234,abcd';
|
||||
|
||||
SELECT '' AS three, o.* FROM OIDNAME_TBL o WHERE o.f1 >= '1234,abcd';
|
||||
|
||||
SELECT '' AS two, o.* FROM OIDNAME_TBL o WHERE o.f1 > '1234,abcd';
|
||||
|
||||
|
72
src/test/regress/sql/point.sql
Normal file
72
src/test/regress/sql/point.sql
Normal file
@ -0,0 +1,72 @@
|
||||
-- ************testing built-in type point ****************
|
||||
|
||||
CREATE TABLE POINT_TBL(f1 point);
|
||||
|
||||
INSERT INTO POINT_TBL(f1) VALUES ('(0.0,0.0)');
|
||||
|
||||
INSERT INTO POINT_TBL(f1) VALUES ('(-10.0,0.0)');
|
||||
|
||||
INSERT INTO POINT_TBL(f1) VALUES ('(-3.0,4.0)');
|
||||
|
||||
INSERT INTO POINT_TBL(f1) VALUES ('(5.1, 34.5)');
|
||||
|
||||
INSERT INTO POINT_TBL(f1) VALUES ('(-5.0,-12.0)');
|
||||
|
||||
-- bad format points
|
||||
INSERT INTO POINT_TBL(f1) VALUES ('asdfasdf');
|
||||
|
||||
INSERT INTO POINT_TBL(f1) VALUES ('10.0,10.0');
|
||||
|
||||
INSERT INTO POINT_TBL(f1) VALUES ('(10.0 10.0)');
|
||||
|
||||
INSERT INTO POINT_TBL(f1) VALUES ('(10.0,10.0');
|
||||
|
||||
|
||||
SELECT '' AS five, POINT_TBL.*;
|
||||
|
||||
-- left of
|
||||
SELECT '' AS three, p.* FROM POINT_TBL p WHERE p.f1 !< '(0.0, 0.0)';
|
||||
|
||||
-- right of
|
||||
SELECT '' AS three, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' !> p.f1;
|
||||
|
||||
-- above
|
||||
SELECT '' AS one, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' !^ p.f1;
|
||||
|
||||
-- below
|
||||
SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 !| '(0.0, 0.0)';
|
||||
|
||||
-- equal
|
||||
SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 =|= '(5.1, 34.5)';
|
||||
|
||||
-- point in box
|
||||
SELECT '' AS two, p.* FROM POINT_TBL p
|
||||
WHERE p.f1 ===> '(0,0,100,100)';
|
||||
|
||||
SELECT '' AS three, p.* FROM POINT_TBL p
|
||||
WHERE not on_pb(p.f1,'(0,0,100,100)'::box);
|
||||
|
||||
SELECT '' AS two, p.* FROM POINT_TBL p
|
||||
WHERE on_ppath(p.f1,'(0,3,0,0,-10,0,-10,10)'::path);
|
||||
|
||||
SELECT '' AS five, p.f1, p.f1 <===> '(0,0)' AS dist FROM POINT_TBL p;
|
||||
|
||||
SELECT '' AS twentyfive, p1.f1, p2.f1, p1.f1 <===> p2.f1 AS dist
|
||||
FROM POINT_TBL p1, POINT_TBL p2;
|
||||
|
||||
SELECT '' AS twenty, p1.f1, p2.f1
|
||||
FROM POINT_TBL p1, POINT_TBL p2
|
||||
WHERE (p1.f1 <===> p2.f1) > 3;
|
||||
|
||||
SELECT '' AS ten, p1.f1, p2.f1
|
||||
FROM POINT_TBL p1, POINT_TBL p2
|
||||
WHERE (p1.f1 <===> p2.f1) > 3 and
|
||||
p1.f1 !< p2.f1;
|
||||
|
||||
SELECT '' AS two, p1.f1, p2.f1
|
||||
FROM POINT_TBL p1, POINT_TBL p2
|
||||
WHERE (p1.f1 <===> p2.f1) > 3 and
|
||||
p1.f1 !< p2.f1 and
|
||||
p1.f1 !^ p2.f1;
|
||||
|
||||
|
117
src/test/regress/sql/polygon.sql
Normal file
117
src/test/regress/sql/polygon.sql
Normal file
@ -0,0 +1,117 @@
|
||||
-- *************testing built-in type polygon ****************
|
||||
--
|
||||
-- polygon logic
|
||||
--
|
||||
-- 3 o
|
||||
-- |
|
||||
-- 2 + |
|
||||
-- / |
|
||||
-- 1 # o +
|
||||
-- / |
|
||||
-- 0 #-----o-+
|
||||
--
|
||||
-- 0 1 2 3 4
|
||||
--
|
||||
|
||||
CREATE TABLE POLYGON_TBL(f1 polygon);
|
||||
|
||||
|
||||
INSERT INTO POLYGON_TBL(f1) VALUES ('(2.0,2.0,0.0,0.0,4.0,0.0)');
|
||||
|
||||
INSERT INTO POLYGON_TBL(f1) VALUES ('(3.0,3.0,1.0,1.0,3.0,0.0)');
|
||||
|
||||
-- degenerate polygons
|
||||
INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0,0.0)');
|
||||
|
||||
INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0,0.0,1.0,1.0)');
|
||||
-- bad polygon input strings
|
||||
INSERT INTO POLYGON_TBL(f1) VALUES ('0.0');
|
||||
|
||||
INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0 0.0');
|
||||
|
||||
INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2)');
|
||||
|
||||
INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2,3');
|
||||
|
||||
INSERT INTO POLYGON_TBL(f1) VALUES ('asdf');
|
||||
|
||||
|
||||
SELECT '' AS four, POLYGON_TBL.*;
|
||||
|
||||
-- overlap
|
||||
SELECT '' AS three, p.*
|
||||
FROM POLYGON_TBL p
|
||||
WHERE p.f1 && '(3.0,3.0,1.0,1.0,3.0,0.0)';
|
||||
|
||||
-- left overlap
|
||||
SELECT '' AS four, p.*
|
||||
FROM POLYGON_TBL p
|
||||
WHERE p.f1 &< '(3.0,3.0,1.0,1.0,3.0,0.0)';
|
||||
|
||||
-- right overlap
|
||||
SELECT '' AS two, p.*
|
||||
FROM POLYGON_TBL p
|
||||
WHERE p.f1 &> '(3.0,3.0,1.0,1.0,3.0,0.0)';
|
||||
|
||||
-- left of
|
||||
SELECT '' AS one, p.*
|
||||
FROM POLYGON_TBL p
|
||||
WHERE p.f1 << '(3.0,3.0,1.0,1.0,3.0,0.0)';
|
||||
|
||||
-- right of
|
||||
SELECT '' AS zero, p.*
|
||||
FROM POLYGON_TBL p
|
||||
WHERE p.f1 >> '(3.0,3.0,1.0,1.0,3.0,0.0)';
|
||||
|
||||
-- contained
|
||||
SELECT '' AS one, p.*
|
||||
FROM POLYGON_TBL p
|
||||
WHERE p.f1 @ '(3.0,3.0,1.0,1.0,3.0,0.0)';
|
||||
|
||||
-- same
|
||||
SELECT '' AS one, p.*
|
||||
FROM POLYGON_TBL p
|
||||
WHERE p.f1 ~= '(3.0,3.0,1.0,1.0,3.0,0.0)';
|
||||
|
||||
-- contains
|
||||
SELECT '' AS one, p.*
|
||||
FROM POLYGON_TBL p
|
||||
WHERE p.f1 ~ '(3.0,3.0,1.0,1.0,3.0,0.0)';
|
||||
|
||||
--
|
||||
-- polygon logic
|
||||
--
|
||||
-- 3 o
|
||||
-- |
|
||||
-- 2 + |
|
||||
-- / |
|
||||
-- 1 / o +
|
||||
-- / |
|
||||
-- 0 +-----o-+
|
||||
--
|
||||
-- 0 1 2 3 4
|
||||
--
|
||||
-- left of
|
||||
SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon << '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS false;
|
||||
|
||||
-- left overlap
|
||||
SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon &< '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS true;
|
||||
|
||||
-- right overlap
|
||||
SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon &> '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS true;
|
||||
|
||||
-- right of
|
||||
SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon >> '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS false;
|
||||
|
||||
-- contained in
|
||||
SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon @ '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS false;
|
||||
|
||||
-- contains
|
||||
SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon ~ '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS false;
|
||||
|
||||
-- same
|
||||
SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon ~= '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS false;
|
||||
|
||||
-- overlap
|
||||
SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon && '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS true;
|
||||
|
@ -1,8 +1,22 @@
|
||||
boolean
|
||||
reltime
|
||||
abstime
|
||||
tinterval
|
||||
boolean
|
||||
box
|
||||
char
|
||||
char16
|
||||
char2
|
||||
char4
|
||||
char8
|
||||
float4
|
||||
float8
|
||||
int2
|
||||
int4
|
||||
misc
|
||||
oid
|
||||
oidint2
|
||||
oidint4
|
||||
oidname
|
||||
point
|
||||
polygon
|
||||
text
|
||||
tinterval
|
||||
|
17
src/test/regress/sql/text.sql
Normal file
17
src/test/regress/sql/text.sql
Normal file
@ -0,0 +1,17 @@
|
||||
-- *************testing built-in type text ****************
|
||||
|
||||
--
|
||||
-- adt operators in the target list
|
||||
--
|
||||
-- fixed-length by reference
|
||||
SELECT 'char 16 string'::char16 = 'char 16 string '::char16 AS false;
|
||||
|
||||
-- fixed-length by value
|
||||
SELECT 'c'::char = 'c'::char AS true;
|
||||
|
||||
-- variable-length
|
||||
SELECT 'this is a text string'::text = 'this is a text string'::text AS true;
|
||||
|
||||
SELECT 'this is a text string'::text = 'this is a text strin'::text AS false;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user