@ -579,6 +579,13 @@ SELECT text 'text' || varchar ' and varchar' AS "Concat text to varchar";
CREATE TABLE toasttest(f1 text);
insert into toasttest values(repeat('1234567890',10000));
insert into toasttest values(repeat('1234567890',10000));
--
-- Ensure that some values are uncompressed, to test the faster substring
-- operation used in that case
--
alter table toasttest alter column f1 set storage external;
insert into toasttest values(repeat('1234567890',10000));
insert into toasttest values(repeat('1234567890',10000));
-- If the starting position is zero or less, then return from the start of the string
-- adjusting the length to be consistent with the "negative start" per SQL92.
SELECT substr(f1, -1, 5) from toasttest;
@ -586,7 +593,9 @@ SELECT substr(f1, -1, 5) from toasttest;
--------
123
123
(2 rows)
123
123
(4 rows)
-- If the length is less than zero, an ERROR is thrown.
SELECT substr(f1, 5, -1) from toasttest;
@ -598,7 +607,9 @@ SELECT substr(f1, 99995) from toasttest;
--------
567890
567890
(2 rows)
567890
567890
(4 rows)
-- If start plus length is > string length, the result is truncated to
-- string length
@ -607,7 +618,9 @@ SELECT substr(f1, 99995, 10) from toasttest;
--------
567890
567890
(2 rows)
567890
567890
(4 rows)
DROP TABLE toasttest;
--
@ -616,6 +629,13 @@ DROP TABLE toasttest;
CREATE TABLE toasttest(f1 bytea);
insert into toasttest values(decode(repeat('1234567890',10000),'escape'));
insert into toasttest values(decode(repeat('1234567890',10000),'escape'));
--
-- Ensure that some values are uncompressed, to test the faster substring
-- operation used in that case
--
alter table toasttest alter column f1 set storage external;
insert into toasttest values(decode(repeat('1234567890',10000),'escape'));
insert into toasttest values(decode(repeat('1234567890',10000),'escape'));
-- If the starting position is zero or less, then return from the start of the string
-- adjusting the length to be consistent with the "negative start" per SQL92.
SELECT substr(f1, -1, 5) from toasttest;
@ -623,7 +643,9 @@ SELECT substr(f1, -1, 5) from toasttest;
--------
123
123
(2 rows)
123
123
(4 rows)
-- If the length is less than zero, an ERROR is thrown.
SELECT substr(f1, 5, -1) from toasttest;
@ -635,7 +657,9 @@ SELECT substr(f1, 99995) from toasttest;
--------
567890
567890
(2 rows)
567890
567890
(4 rows)
-- If start plus length is > string length, the result is truncated to
-- string length
@ -644,7 +668,9 @@ SELECT substr(f1, 99995, 10) from toasttest;
--------
567890
567890
(2 rows)
567890
567890
(4 rows)
DROP TABLE toasttest;
--