SUBSTRING: change type of  `startpos` and `FOR-length` arguments to BIGINT
--------------------------------------------------------------------------

                 Key: CORE-4892
                 URL: http://tracker.firebirdsql.org/browse/CORE-4892
             Project: Firebird Core
          Issue Type: Improvement
          Components: Engine
            Reporter: Pavel Zotov


Currently documentation ( 
http://www.firebirdsql.org/refdocs/langrefupd25-intfunc-substring.html ) issues 
that  "this function fully supports binary and text BLOBs of  ___any___  length 
and character set" (note on emphasized "any").

This is false in case when there is text blob of length more than 2 Gb.
I've created such blob by fill GTT tables with result of 

RECREATE SEQUENCE G;
RECREATE GLOBAL TEMPORARY TABLE GTT(BLOB_FLD BLOB) ON COMMIT DELETE ROWS;
SELECT LIST( gen_id( g, 1 ) ) FROM RDB$TYPES,RDB$TYPES,RDB$TYPES,(SELECT 1 k 
FROM RDB$TYPES ROWS 15);

-- and after that blob_fld will have length  2'346'948'497 bytes.

Exception:
===
Statement failed, SQLSTATE = 22003
arithmetic exception, numeric overflow, or string truncation
-numeric value is out of range
==
-- raises when trying to do: 

select substring( bob_field from 2147483649 for 1); // NOTE: exception does NOT 
appear when 2nd arg = 2147483648, i.e. exact power(2, 31) from gtt;
select substring( bob_field from 2147483647 for 2147483648) from gtt;

It will be nice if we'll have new implementation of substring (and all other 
functions for string handling) that will be able to operate with blobs which 
length more than 2Gb.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to