Vertica LISTAGG не определено - PullRequest
0 голосов
/ 01 июля 2019

Насколько я могу судить по документам Vertica 8.1.x LISTAGG поддерживается для версий Vertica 8.1.x и выше;Однако, когда я пытаюсь использовать эту функцию, я вижу следующее:

Ошибка SQL [3457] [42883]: [Vertica] VJDBC ОШИБКА: функция LISTAGG (varchar) не существует или разрешениеОтказано в LISTAGG (varchar)

Во время выполнения:

SELECT LISTAGG(myColumn) FROM myTable;

Я видел в другом посте переполнения стека, что LISTAGG был введен в v9.1 (см. здесь).В настоящее время я использую версию v9.0.1-19

Кто-нибудь может подтвердить или дать представление о том, почему LISTAGG может не работать?

1 Ответ

1 голос
/ 01 июля 2019

Я могу подтвердить, что это было добавлено в версии v9.1.1-4. См. На странице новых функций v9.1.4

У меня есть 2 БД Vertica, 1-я с v9.0.1-5 и 2-я с v9.2.0-7. LISTAGG() доступно для 2-го, но не для 1-го:

dbadmin=> select version();
              version               
------------------------------------
 Vertica Analytic Database v9.0.1-5

dbadmin=> SELECT LISTAGG(myColumn) FROM myTable;
ERROR 3457:  Function LISTAGG(varchar) does not exist, or permission is denied for LISTAGG(varchar)
HINT:  No function matches the given name and argument types. You may need to add explicit type casts
              version               
------------------------------------
 Vertica Analytic Database v9.2.0-7

dbadmin=> SELECT LISTAGG(myColumn) FROM myTable;
 LISTAGG 
---------
 aaa,abc

LISTAGG() является частью пакета /opt/vertica/packages/VFunctions, и это единственная функция в схеме v_func в v9.1.1 и выше.


Хорошей альтернативой является GROUP_CONCAT(), который является частью string_packages UDx. Смотрите readme для инструкций по установке и использованию.

...