[ 
https://issues.apache.org/jira/browse/PHOENIX-3944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16062777#comment-16062777
 ] 

ASF GitHub Bot commented on PHOENIX-3944:
-----------------------------------------

Github user brfrn169 commented on a diff in the pull request:

    https://github.com/apache/phoenix/pull/261#discussion_r123954850
  
    --- Diff: 
phoenix-core/src/main/java/org/apache/phoenix/util/SchemaUtil.java ---
    @@ -983,14 +983,21 @@ public static boolean hasRowTimestampColumn(PTable 
table) {
             return SchemaUtil.getTableKey(null, schemaName, 
MetaDataClient.EMPTY_TABLE);
         }
     
    -    public static PName getPhysicalHBaseTableName(PName pName, boolean 
isNamespaceMapped, PTableType type) {
    -        return getPhysicalHBaseTableName(pName.toString(), 
isNamespaceMapped, type);
    +    public static PName getPhysicalHBaseTableName(PName schemaName, PName 
tableName, boolean isNamespaceMapped) {
    --- End diff --
    
    I added "schemaName" as an argument to this method.
    I think we need both schemaName and tableName to handle a table like 
"AAA.BBB" in default schema correctly, because if we have only the table name 
"AAA.BBB", we can't distinguish between "AAA.BBB" in the default schema and 
"BBB" in "AAA" schema.
    
    Also we don't need the "type" argument, so I deleted it.



> ReadOnlyTableException occurs when we map Phoenix view to an existing HBase 
> table with Namespace Mapping enabled
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-3944
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3944
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Toshihiro Suzuki
>
> Firstly, I created a namespace and a table in hbase shell:
> {code}
> hbase> create_namespace "NS"
> hbase> create "NS:TBL", "CF"
> {code}
> After that, I tried to create a phoenix view for this existing hbase table in 
> phoenix-sqlline:
> {code}
> phoenix> CREATE VIEW ns.tbl (pk VARCHAR PRIMARY KEY, cf.col VARCHAR);
> {code}
> However, I encountered the following error and I was not able to create the 
> view:
> {code}
> org.apache.phoenix.schema.ReadOnlyTableException: ERROR 505 (42000): Table is 
> read only.
>       at 
> org.apache.phoenix.query.ConnectionQueryServicesImpl.ensureTableCreated(ConnectionQueryServicesImpl.java:1072)
>       at 
> org.apache.phoenix.query.ConnectionQueryServicesImpl.createTable(ConnectionQueryServicesImpl.java:1434)
>       at 
> org.apache.phoenix.schema.MetaDataClient.createTableInternal(MetaDataClient.java:2624)
>       at 
> org.apache.phoenix.schema.MetaDataClient.createTable(MetaDataClient.java:1040)
>       at 
> org.apache.phoenix.compile.CreateTableCompiler$2.execute(CreateTableCompiler.java:212)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:393)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:376)
>       at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:375)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:363)
>       at 
> org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1707)
>       at org.apache.PhoenixTest.main(PhoenixTest.java:55)
>       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:498)
>       at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to