mirror of
https://github.com/postgres/postgres.git
synced 2025-09-09 13:09:39 +03:00
pg_input_error_info() is now a SQL function able to return a row with more than just the error message generated for incorrect data type inputs when these are able to handle soft failures, returning more contents of ErrorData, as of: - The error message (same as before). - The error detail, if set. - The error hint, if set. - SQL error code. All the regression tests that relied on pg_input_error_message() are updated to reflect the effects of the rename. Per discussion with Tom Lane and Andrew Dunstan. Author: Nathan Bossart Discussion: https://postgr.es/m/139a68e1-bd1f-a9a7-b5fe-0be9845c6311@dunslane.net
50 lines
2.1 KiB
SQL
50 lines
2.1 KiB
SQL
--
|
|
-- macaddr
|
|
--
|
|
|
|
CREATE TABLE macaddr_data (a int, b macaddr);
|
|
|
|
INSERT INTO macaddr_data VALUES (1, '08:00:2b:01:02:03');
|
|
INSERT INTO macaddr_data VALUES (2, '08-00-2b-01-02-03');
|
|
INSERT INTO macaddr_data VALUES (3, '08002b:010203');
|
|
INSERT INTO macaddr_data VALUES (4, '08002b-010203');
|
|
INSERT INTO macaddr_data VALUES (5, '0800.2b01.0203');
|
|
INSERT INTO macaddr_data VALUES (6, '0800-2b01-0203');
|
|
INSERT INTO macaddr_data VALUES (7, '08002b010203');
|
|
INSERT INTO macaddr_data VALUES (8, '0800:2b01:0203'); -- invalid
|
|
INSERT INTO macaddr_data VALUES (9, 'not even close'); -- invalid
|
|
|
|
INSERT INTO macaddr_data VALUES (10, '08:00:2b:01:02:04');
|
|
INSERT INTO macaddr_data VALUES (11, '08:00:2b:01:02:02');
|
|
INSERT INTO macaddr_data VALUES (12, '08:00:2a:01:02:03');
|
|
INSERT INTO macaddr_data VALUES (13, '08:00:2c:01:02:03');
|
|
INSERT INTO macaddr_data VALUES (14, '08:00:2a:01:02:04');
|
|
|
|
SELECT * FROM macaddr_data;
|
|
|
|
CREATE INDEX macaddr_data_btree ON macaddr_data USING btree (b);
|
|
CREATE INDEX macaddr_data_hash ON macaddr_data USING hash (b);
|
|
|
|
SELECT a, b, trunc(b) FROM macaddr_data ORDER BY 2, 1;
|
|
|
|
SELECT b < '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- true
|
|
SELECT b > '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- false
|
|
SELECT b > '08:00:2b:01:02:03' FROM macaddr_data WHERE a = 1; -- false
|
|
SELECT b <= '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- true
|
|
SELECT b >= '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- false
|
|
SELECT b = '08:00:2b:01:02:03' FROM macaddr_data WHERE a = 1; -- true
|
|
SELECT b <> '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- true
|
|
SELECT b <> '08:00:2b:01:02:03' FROM macaddr_data WHERE a = 1; -- false
|
|
|
|
SELECT ~b FROM macaddr_data;
|
|
SELECT b & '00:00:00:ff:ff:ff' FROM macaddr_data;
|
|
SELECT b | '01:02:03:04:05:06' FROM macaddr_data;
|
|
|
|
DROP TABLE macaddr_data;
|
|
|
|
-- test non-error-throwing API for some core types
|
|
SELECT pg_input_is_valid('08:00:2b:01:02:ZZ', 'macaddr');
|
|
SELECT * FROM pg_input_error_info('08:00:2b:01:02:ZZ', 'macaddr');
|
|
SELECT pg_input_is_valid('08:00:2b:01:02:', 'macaddr');
|
|
SELECT * FROM pg_input_error_info('08:00:2b:01:02:', 'macaddr');
|