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

Jan Fernando commented on PHOENIX-2310:
---------------------------------------

Committed to 4.5 and 4.x branches as well.

> PhoenixConfigurationUtil.getUpsertColumnMetadataList() in Phoenix Mapreduce 
> integration generates incorrect upsert statement for view immediately after 
> issue view DDL
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-2310
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2310
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.5.2
>            Reporter: Jan Fernando
>            Assignee: Jan Fernando
>         Attachments: PHOENIX-2310-4.5.patch, PHOENIX-2310-v1.patch, 
> PHOENIX-2310_v2.patch
>
>
> We ran into what I believe is a corner case that was causing a M/R job using 
> the Phoenix / Pig integration to fail by virtue of a incorrect UPSERT 
> statement being generated. 
> The issue was intermittent. The bug is that the UPSERT statement generated by 
> PhoenixConfigurationUtil.getUpsertColumnMetadataList() when invoked from 
> PhoenixRecordWriter would, instead of the cf.column_name, would contain for 
> certain columns the result class name + hashcode as generated by Java's 
> Object.toString(). Since this was not a valid column name the Pig Script 
> would blow-up.
> This only occurs if we are attempting to insert data into a Phoenix View and 
> the DDL for the Phoenix View was issued recently such that the MetadataClient 
> cache was for this view was populated by MetaDataClient.createTable(). 
> What is occurring is in this case we wrap the PColumn in a Delegate at lines 
> 1898 and 1909. The DelegateColumn class used to wrap PColumn doesn't 
> implement toString() and so the default Object toString() is used. If you 
> restart the JVM and force Phoenix to re-read the metadata from SYSTEM.CATALOG 
> this doesn't occur as in this case we don't wrap the PColumn instance.
> I have a test to repro and a possible patch I'll attach shortly.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to