为什么当我在 vertica 中的视图上执行 select 查询时,我得到 "Length for type varchar cannot exceed 65000"?

why when I execute a select query on a view in vertica, do I get "Length for type varchar cannot exceed 65000"?

我在 vertica 中有一个 flextable,我正在尝试基于它创建一个视图。

创建视图语句如下:

CREATE VIEW testview AS
    SELECT
            COALESCE (
                "USER_ID",
                "userId",
                "SM.actor.id",
                "SM.participant.userId",
                "SM.userId",
                "SM.uid",
                "SM_C.userId",
                "SM.id" )::varchar AS userid
    FROM
        flex_table_test
    WHERE "SM.verb" is not null

我可以成功创建视图,但是当我执行类似这样的操作时:

SELECT * FROM testview LIMIT 10;

我得到:

ERROR 3852: Length for type varchar cannot exceed 65000

如果我单独执行视图的 select 部分,它工作正常。我尝试转换输出字段,但似乎没有太大区别。

默认情况下,Flex 表中的数据存储为 LONG VARBINARY,其默认原始大小为 130000。由于此数据长于 VARCHAR (65000) 的最大长度,因此您需要截断 COALESCE 的结果或尝试将其转换为 ::long varchar。如果后者有效,请注意 Vertica 不支持对此内容类型的操作。