Hi James,

We tried taking build #866 
(https://builds.apache.org/view/All/job/Phoenix-4.x-HBase-0.98/866/), and we 
are still getting the same error.

Is it possible we also need the changes at 
https://github.com/apache/phoenix/commit/567218ad2520869e8912b61f687305c81aa919cd?

Mark Tse

From: James Taylor [mailto:[email protected]]
Sent: Thursday, October 15, 2015 3:21 PM
To: user <[email protected]>
Subject: Re: Phoenix 4.4 to 4.6 Client Errors

Good catch, Mark. I filed PHOENIX-2326. We'll get this tweaked before we cut 
the RC.

On Thu, Oct 15, 2015 at 12:15 PM, Mark Tse 
<[email protected]<mailto:[email protected]>> wrote:
Hi everyone,

I currently have Phoenix 4.4 installed on HBase 0.98, and am trying out a 
Phoenix 4.6 build 
(https://builds.apache.org/view/All/job/Phoenix-4.x-HBase-0.98/861/). I took 
the following steps:

- Replace the Phoenix 4.4 server jars in HBase lib folders for HBase master and 
RegionServers
- Restart HBase master and RegionServers

Attempting to connect with the Phoenix 4.6 client jar and sqlline.py causes the 
following error:

15/10/15 18:37:02 WARN query.ConnectionQueryServicesImpl: Add column failed due 
to:org.apache.phoenix.schema.ColumnNotFoundException: ERROR 504 (42703): 
Undefined column. columnName=IS_ROW_TIMESTAMP
Error: ERROR 504 (42703): Undefined column. columnName=IS_ROW_TIMESTAMP 
(state=42703,code=504)
org.apache.phoenix.schema.ColumnNotFoundException: ERROR 504 (42703): Undefined 
column. columnName=IS_ROW_TIMESTAMP
        at org.apache.phoenix.schema.PTableImpl.getColumn(PTableImpl.java:647)
        at 
org.apache.phoenix.compile.FromCompiler$SingleTableColumnResolver.resolveColumn(FromCompiler.java:361)
        at 
org.apache.phoenix.compile.UpsertCompiler.compile(UpsertCompiler.java:386)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:550)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:538)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:318)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:311)
        at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
        at 
org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:309)
        at 
org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:239)
        at 
org.apache.phoenix.jdbc.PhoenixPreparedStatement.execute(PhoenixPreparedStatement.java:172)
        at 
org.apache.phoenix.jdbc.PhoenixPreparedStatement.execute(PhoenixPreparedStatement.java:177)
        at 
org.apache.phoenix.schema.MetaDataClient.addColumnMutation(MetaDataClient.java:685)
        at 
org.apache.phoenix.schema.MetaDataClient.addColumn(MetaDataClient.java:2526)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$ExecutableAddColumnStatement$1.execute(PhoenixStatement.java:1055)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:319)
        at 
org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:311)
        at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
        at 
org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:309)
        at 
org.apache.phoenix.jdbc.PhoenixStatement.executeUpdate(PhoenixStatement.java:1368)
        at 
org.apache.phoenix.query.ConnectionQueryServicesImpl.addColumn(ConnectionQueryServicesImpl.java:1864)
        at 
org.apache.phoenix.query.ConnectionQueryServicesImpl.addColumnsIfNotExists(ConnectionQueryServicesImpl.java:1890)
        at 
org.apache.phoenix.query.ConnectionQueryServicesImpl.access$500(ConnectionQueryServicesImpl.java:179)
        at 
org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:1979)
        at 
org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:1896)
        at 
org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:78)
        at 
org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:1896)
        at 
org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:180)
        at 
org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.connect(PhoenixEmbeddedDriver.java:132)
        at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:151)
        at sqlline.DatabaseConnection.connect(DatabaseConnection.java:157)
        at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:203)
        at sqlline.Commands.connect(Commands.java:1064)
        at sqlline.Commands.connect(Commands.java:996)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at 
sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)
        at sqlline.SqlLine.dispatch(SqlLine.java:804)
        at sqlline.SqlLine.initArgs(SqlLine.java:588)
        at sqlline.SqlLine.begin(SqlLine.java:656)
        at sqlline.SqlLine.start(SqlLine.java:398)
        at sqlline.SqlLine.main(SqlLine.java:292)
sqlline version 1.1.8


However, I was able to connect using the Phoenix 4.5 client jar and sqlline.py. 
Furthermore, after connecting once, I was able to connect using the Phoenix 4.6 
client jar and sqlline.py, but sqlline.py identifies the server and client as 
“Phoenix 4.5”.

Looking at 
https://github.com/apache/phoenix/blob/c2cb510048fb07792d4639f211e98b8a95281f2f/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L1937,
 it looks like we do some checking on the version before creating some metadata.

Is there a reason the client jars from the build were not identified as greater 
than or equal to 4.6? Or is there something else going on?

Thanks,
Mark


Reply via email to