2016-08-08 6 views
2

私はApache Phoenixがすべての機能メタデータを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

functionは、selectのように、予約済みのキーワードです。表を参照する場合は、引用符で囲んでください(大文字と小文字も区別されます)。

関連する問題