Snowflake Stored Procedure 中的最大 JavaScript 字符串大小



Snowflake文档说VARCHAR列限制为未压缩的16 MB https://docs.snowflake.net/manuals/sql-reference/data-types-text.html#data-types-for-text-strings

VARCHAR holds unicode characters.  The maximum length is 16 MB (uncompressed). The maximum number of Unicode characters that can be stored in a VARCHAR column depends on whether the characters are singlebyte or multibyte:
Singlebyte
16,777,216
Multibyte
Between 8,388,608 (2 bytes per character) and 4,194,304 (4 bytes per character)
If a length is not specified, the default is the maximum length.

Snowflake文档说VARCHAR数据会自动转换为JavaScript字符串数据类型。
https://docs.snowflake.net/manuals/sql-reference/stored-procedures-usage.html#sql-and-javascript-data-type-mapping

问:如果我调用 Snowflake 过程(或 JavaScript UDF(并从表中传入 VARCHAR 数据,Snowflake 过程是否有大小限制,或者它会处理 16MB 的字符串变量吗?

JavaScript 将处理多达 16MB:

CREATE OR REPLACE FUNCTION MaxParam("STRING" VARCHAR)
RETURNS STRING LANGUAGE JAVASCRIPT STRICT IMMUTABLE AS
'return STRING;';
CREATE TABLE T AS SELECT LPAD('111', 16777216, '0') STR;
SELECT MaxParam(STR) FROM T;
=> 0000000000000000000000000000000000000...
SELECT MaxParam(LPAD('111', 16777217, '0'));
=> String '(padded string)' is too long and would be truncated
(Error message is from LPAD, not JS)

最新更新