2016-08-08 9 views
2

아파치 피닉스는 모든 함수 메타 데이터를 SYSTEM.FUNCTION에 저장 하겠지만 쿼리를 사용하면 다음 문을 사용하면 예외가 발생합니다.Phoenix sqlline은 시스템 테이블 SYSTEM.FUNCTION을 질의 할 수 없습니다.

0: jdbc:phoenix:10.1.226.15:2181> select * from SYSTEM.FUNCTION; 
Error: ERROR 604 (42P00): Syntax error. Mismatched input. Expecting "NAME", got "FUNCTION" at line 1, column 22. (state=42P00,code=604) 
org.apache.phoenix.exception.PhoenixParserException: ERROR 604 (42P00): Syntax error. Mismatched input. Expecting "NAME", got "FUNCTION" at line 1, column 22. 
    at org.apache.phoenix.exception.PhoenixParserException.newException(PhoenixParserException.java:33) 

또는

0: jdbc:phoenix:10.1.226.15:2181> select * from FUNCTION; 
Error: ERROR 601 (42P00): Syntax error. Encountered "FUNCTION" at line 1, column 15. (state=42P00,code=601) 
org.apache.phoenix.exception.PhoenixParserException: ERROR 601 (42P00): Syntax error. Encountered "FUNCTION" at line 1, column 15. 

테이블 함수는 SYSTEM 스키마에 존재하지만, 다른 한편으로, 나는 문을 SYSTEM 스키마의 테이블 카탈로그를 수행 할 수있는 쿼리 할 수 ​​없습니다 및 올바른 데이터를 검색합니다.

0: jdbc:phoenix:10.1.226.15:2181> !tables 
+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------+ 
|    TABLE_CAT     |    TABLE_SCHEM    |    TABLE_NAME    |    TABLE_TYPE    |     REMARKS   | 
+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------+ 
|           | SYSTEM         | CATALOG         | SYSTEM TABLE        |         | 
|           | SYSTEM         | FUNCTION         | SYSTEM TABLE        |         | 
|           | SYSTEM         | SEQUENCE         | SYSTEM TABLE        |         | 
|           | SYSTEM         | STATS         | SYSTEM TABLE        |         | 
+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------+ 



0: jdbc:phoenix:10.1.226.15:2181> select * from system.catalog; 
+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------+ 
|    TENANT_ID     |    TABLE_SCHEM    |    TABLE_NAME    |    COLUMN_NAME    |    COLUMN_FAMILY   | 
+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------+ 
|           | SYSTEM         | CATALOG         |           |         | 
|           | SYSTEM         | CATALOG         | ARRAY_SIZE        | 0         | 
|           | SYSTEM         | CATALOG         | BUFFER_LENGTH       | 0         | 
.... 

왜 누군가가 설명 할 수 있습니까?

답변

2

functionselect과 같이 예약어입니다. 표를 참조하려면 인용 부호로 묶으십시오 (또한 대소 문자가 구분됩니다).