You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by el...@apache.org on 2014/04/09 01:59:47 UTC

git commit: Revert "Commit PHOENIX-898 patch to 4.0"

Repository: incubator-phoenix
Updated Branches:
  refs/heads/4.0 1207882b6 -> 953c9a960


Revert "Commit PHOENIX-898 patch to 4.0"

This reverts commit 1207882b6d5bc3000c148b8f892e7df4b5be391f.


Project: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/commit/953c9a96
Tree: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/tree/953c9a96
Diff: http://git-wip-us.apache.org/repos/asf/incubator-phoenix/diff/953c9a96

Branch: refs/heads/4.0
Commit: 953c9a960f2c8a76a0f4363669817267892e57bb
Parents: 1207882
Author: Eli Levine <el...@apache.org>
Authored: Tue Apr 8 16:57:56 2014 -0700
Committer: Eli Levine <el...@apache.org>
Committed: Tue Apr 8 16:57:56 2014 -0700

----------------------------------------------------------------------
 .../apache/phoenix/query/QueryConstants.java    |   1 -
 .../org/apache/phoenix/util/PhoenixRuntime.java | 111 +------------------
 .../apache/phoenix/util/PhoenixRuntimeTest.java |  36 +-----
 .../apache/phoenix/pig/PhoenixHBaseStorage.java |  37 ++-----
 .../phoenix/pig/PhoenixPigConfiguration.java    |  79 +++++--------
 .../phoenix/pig/hadoop/PhoenixRecord.java       |  24 ++--
 .../phoenix/pig/hadoop/PhoenixRecordWriter.java |   1 +
 7 files changed, 47 insertions(+), 242 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/953c9a96/phoenix-core/src/main/java/org/apache/phoenix/query/QueryConstants.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryConstants.java b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryConstants.java
index fe348e8..06bccce 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryConstants.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryConstants.java
@@ -96,7 +96,6 @@ import org.apache.phoenix.util.ByteUtil;
  */
 public interface QueryConstants {
     public static final String NAME_SEPARATOR = ".";
-    public static final String NAME_SEPARATOR_REGEX = "\\.";
     public final static byte[] NAME_SEPARATOR_BYTES = Bytes.toBytes(NAME_SEPARATOR);
     public static final byte NAME_SEPARATOR_BYTE = NAME_SEPARATOR_BYTES[0];
     public static final String NULL_SCHEMA_NAME = "";

http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/953c9a96/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixRuntime.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixRuntime.java b/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixRuntime.java
index a679762..27c0c2a 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixRuntime.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixRuntime.java
@@ -29,9 +29,7 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
-import java.util.Set;
 import java.util.StringTokenizer;
-import java.util.TreeSet;
 
 import org.apache.hadoop.hbase.Cell;
 import org.apache.hadoop.hbase.KeyValue;
@@ -42,10 +40,8 @@ import org.apache.phoenix.coprocessor.MetaDataProtocol.MetaDataMutationResult;
 import org.apache.phoenix.coprocessor.MetaDataProtocol.MutationCode;
 import org.apache.phoenix.jdbc.PhoenixConnection;
 import org.apache.phoenix.query.QueryConstants;
-import org.apache.phoenix.schema.ColumnNotFoundException;
 import org.apache.phoenix.schema.MetaDataClient;
 import org.apache.phoenix.schema.PColumn;
-import org.apache.phoenix.schema.PColumnFamily;
 import org.apache.phoenix.schema.PDataType;
 import org.apache.phoenix.schema.PTable;
 import org.apache.phoenix.schema.PTableKey;
@@ -329,7 +325,7 @@ public class PhoenixRuntime {
         };
     }
     
-    public static PTable getTable(Connection conn, String name) throws SQLException {
+    private static PTable getTable(Connection conn, String name) throws SQLException {
         PTable table = null;
         PhoenixConnection pconn = conn.unwrap(PhoenixConnection.class);
         try {
@@ -347,111 +343,6 @@ public class PhoenixRuntime {
     }
     
     /**
-     * Get list of ColumnInfos that contain Column Name and its associated
-     * PDataType for an import. The supplied list of columns can be null -- if it is non-null,
-     * it represents a user-supplied list of columns to be imported.
-     *
-     * @param conn Phoenix connection from which metadata will be read
-     * @param tableName Phoenix table name whose columns are to be checked. Can include a schema
-     *                  name
-     * @param columns user-supplied list of import columns, can be null
-     */
-    public static List<ColumnInfo> generateColumnInfo(Connection conn,
-            String tableName, List<String> columns)
-            throws SQLException {
-
-		PTable table = PhoenixRuntime.getTable(conn, tableName);
-        List<ColumnInfo> columnInfoList = Lists.newArrayList();
-        Set<String> unresolvedColumnNames = new TreeSet<String>();
-        if (columns == null) {
-        	// use all columns in the table
-        	for(PColumn pColumn : table.getColumns()) {
-      	       int sqlType = pColumn.getDataType().getResultSetSqlType();        
-               columnInfoList.add(new ColumnInfo(pColumn.toString(), sqlType));
-        	}
-        } else {
-            // Leave "null" as indication to skip b/c it doesn't exist
-            for (int i = 0; i < columns.size(); i++) {
-                String columnName = columns.get(i);
-                try {
-                    ColumnInfo columnInfo = PhoenixRuntime.getColumnInfo(table, columnName);
-                    columnInfoList.add(columnInfo);
-                } catch (ColumnNotFoundException cnfe) {
-                	unresolvedColumnNames.add(columnName.trim());
-                }
-            }
-                
-            if (unresolvedColumnNames.size()>0) {
-            	StringBuilder exceptionMessage = new StringBuilder();
-            	boolean first = true;
-            	exceptionMessage.append("Unable to resolve these column names:\n");
-            	for (String col : unresolvedColumnNames) {
-            		if (first) first = false;
-            		else exceptionMessage.append(",");
-            		exceptionMessage.append(col);
-            	}
-            	exceptionMessage.append("\nAvailable columns with column families:\n");
-            	first = true;
-            	for (PColumn pColumn : table.getColumns()) {
-            		if (first) first = false;
-            		else exceptionMessage.append(",");
-            		exceptionMessage.append(pColumn.toString());
-            	}
-                throw new SQLException(exceptionMessage.toString()); 
-            }
-                
-        }
-        return columnInfoList;
-    }
-
-    /**
-     * Returns the column info for the given column for the given table.
-     * 
-     * @param table
-     * @param columnName User-specified column name. May be family-qualified or bare.
-     * @return columnInfo associated with the column in the table
-     * @throws SQLException if parameters are null, or if column is not found.
-     */
-    public static ColumnInfo getColumnInfo(PTable table, String columnName) throws SQLException {
-    	if (table==null) {
-    		throw new SQLException("Table must not be null.");
-    	}
-    	if (columnName==null) {
-    		throw new SQLException("columnName must not be null.");
-    	}
-    	columnName = columnName.trim();
-    	PColumn pColumn = null;
-    	if (columnName.contains(QueryConstants.NAME_SEPARATOR)) {
-    		String[] tokens = columnName.split(QueryConstants.NAME_SEPARATOR_REGEX);
-    		if (tokens.length!=2) {
-    			throw new SQLException(String.format("Unable to process column %s, expected family-qualified name.",columnName));
-    		}
-    		String familyName = tokens[0];
-    		String familyColumn = tokens[1];
-            PColumnFamily family = table.getColumnFamily(familyName);
-            pColumn = family.getColumn(familyColumn);
-    	} else {
-    		pColumn = table.getColumn(columnName);
-    	}
-        return getColumnInfo(pColumn);
-    }
-    
-    /**
-     * Constructs a column info for the supplied pColumn
-     * @param pColumn
-     * @return columnInfo
-     * @throws SQLException if the parameter is null.
-     */
-    public static ColumnInfo getColumnInfo(PColumn pColumn) throws SQLException {
-    	if (pColumn==null) {
-    		throw new SQLException("pColumn must not be null.");
-    	}
-    	int sqlType = pColumn.getDataType().getResultSetSqlType();
-        ColumnInfo columnInfo = new ColumnInfo(pColumn.toString(),sqlType);
-        return columnInfo;
-    }
-    
-    /**
      * Encode the primary key values from the table as a byte array. The values must
      * be in the same order as the primary key constraint. If the connection and
      * table are both tenant-specific, the tenant ID column must not be present in

http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/953c9a96/phoenix-core/src/test/java/org/apache/phoenix/util/PhoenixRuntimeTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/util/PhoenixRuntimeTest.java b/phoenix-core/src/test/java/org/apache/phoenix/util/PhoenixRuntimeTest.java
index 6d12d95..abb2b7a 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/util/PhoenixRuntimeTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/util/PhoenixRuntimeTest.java
@@ -18,21 +18,14 @@
 
 package org.apache.phoenix.util;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 
 import java.sql.Connection;
 import java.sql.Date;
 import java.sql.DriverManager;
-import java.sql.SQLException;
 import java.util.Arrays;
-import java.util.List;
-
-import junit.framework.Assert;
 
 import org.apache.phoenix.query.BaseConnectionlessQueryTest;
-import org.apache.phoenix.query.QueryConstants;
-import org.apache.phoenix.schema.PColumn;
-import org.apache.phoenix.schema.PTable;
 import org.junit.Test;
 
 public class PhoenixRuntimeTest extends BaseConnectionlessQueryTest {
@@ -48,31 +41,4 @@ public class PhoenixRuntimeTest extends BaseConnectionlessQueryTest {
         Object[] actualValues = PhoenixRuntime.decodePK(conn, "T", value);
         assertEquals(Arrays.asList(expectedValues), Arrays.asList(actualValues));
     }
-    
-    @Test
-    public void testColumnFamilyParsing() {
-    	String columnName = "F.C";
-    	assertTrue(columnName.contains(QueryConstants.NAME_SEPARATOR));
-		String[] tokens = columnName.split(QueryConstants.NAME_SEPARATOR_REGEX);
-    	assertTrue(tokens.length==2);
-    	
-		String familyName = tokens[0];
-		String familyColumn = tokens[1];
-		assertEquals("F",familyName);
-		assertEquals("C",familyColumn);
-		
-    }
-    
-    
-    //TODO add tests for the following:
-    /*
-     * 
-       public static List<ColumnInfo> generateColumnInfo(Connection conn,
-            String tableName, List<String> columns)
-            throws SQLException {...}
-            
-        public static ColumnInfo getColumnInfo(PTable table, String columnName) throws SQLException {...}
-        
-        public static ColumnInfo getColumnInfo(PColumn pColumn) throws SQLException {...}
-     */
 }

http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/953c9a96/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixHBaseStorage.java
----------------------------------------------------------------------
diff --git a/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixHBaseStorage.java b/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixHBaseStorage.java
index 3ef64b9..9e237f1 100644
--- a/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixHBaseStorage.java
+++ b/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixHBaseStorage.java
@@ -18,8 +18,6 @@
 package org.apache.phoenix.pig;
 
 import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.Properties;
 
 import org.apache.commons.cli.CommandLine;
@@ -33,8 +31,6 @@ import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.mapreduce.Job;
 import org.apache.hadoop.mapreduce.OutputFormat;
 import org.apache.hadoop.mapreduce.RecordWriter;
-import org.apache.phoenix.pig.hadoop.PhoenixOutputFormat;
-import org.apache.phoenix.pig.hadoop.PhoenixRecord;
 import org.apache.pig.ResourceSchema;
 import org.apache.pig.ResourceSchema.ResourceFieldSchema;
 import org.apache.pig.StoreFuncInterface;
@@ -42,6 +38,9 @@ import org.apache.pig.data.Tuple;
 import org.apache.pig.impl.util.ObjectSerializer;
 import org.apache.pig.impl.util.UDFContext;
 
+import org.apache.phoenix.pig.hadoop.PhoenixOutputFormat;
+import org.apache.phoenix.pig.hadoop.PhoenixRecord;
+
 /**
  * StoreFunc that uses Phoenix to store data into HBase.
  * 
@@ -53,16 +52,6 @@ import org.apache.pig.impl.util.UDFContext;
  * argument to this StoreFunc is the server, the 2nd argument is the batch size
  * for upserts via Phoenix.
  * 
- * Alternative usage: A = load 'testdata' as (a:chararray, b:chararray, 
- *  e: datetime); STORE A into 'hbase://CORE.ENTITY_HISTORY/ID,F.B,F.E' using
- * org.apache.bdaas.PhoenixHBaseStorage('localhost','-batchSize 5000');
- * 
- * The above reads a file 'testdata' and writes the elements ID, F.B, and F.E to HBase. 
- * In this example, ID is the row key, and F is the column family for the data elements.  
- * First argument to this StoreFunc is the server, the 2nd argument is the batch size
- * for upserts via Phoenix. In this case, less than the full table row is required.
- * For configuration message, look in the info log file.
- * 
  * Note that Pig types must be in sync with the target Phoenix data types. This
  * StoreFunc tries best to cast based on input Pig types and target Phoenix data
  * types, but it is recommended to supply appropriate schema.
@@ -76,6 +65,7 @@ import org.apache.pig.impl.util.UDFContext;
 public class PhoenixHBaseStorage implements StoreFuncInterface {
 
 	private PhoenixPigConfiguration config;
+	private String tableName;
 	private RecordWriter<NullWritable, PhoenixRecord> writer;
 	private String contextSignature = null;
 	private ResourceSchema schema;	
@@ -128,21 +118,12 @@ public class PhoenixHBaseStorage implements StoreFuncInterface {
 	 */
 	@Override
 	public void setStoreLocation(String location, Job job) throws IOException {
-		
-		URI locationURI;
-		try {
-			locationURI = new URI(location);
-			if (!"hbase".equals(locationURI.getScheme())) {
-				throw new IOException(String.format("Location must use the hbase protocol, hbase://tableName[/columnList]. Supplied location=%s",location));
-			}
-			String tableName = locationURI.getAuthority();
-			// strip off the leading path token '/'
-			String columns = locationURI.getPath().substring(1);
-			config = new PhoenixPigConfiguration(job.getConfiguration());
-			config.configure(server, tableName, batchSize, columns);
-		} catch (URISyntaxException e) {
-			throw new IOException(String.format("Location must use the hbase protocol, hbase://tableName[/columnList]. Supplied location=%s",location),e);
+		String prefix = "hbase://";
+		if (location.startsWith(prefix)) {
+			tableName = location.substring(prefix.length());
 		}
+		config = new PhoenixPigConfiguration(job.getConfiguration());
+		config.configure(server, tableName, batchSize);
 
 		String serializedSchema = getUDFProperties().getProperty(contextSignature + SCHEMA);
 		if (serializedSchema != null) {

http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/953c9a96/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixPigConfiguration.java
----------------------------------------------------------------------
diff --git a/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixPigConfiguration.java b/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixPigConfiguration.java
index 9a09e3a..3b0551f 100644
--- a/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixPigConfiguration.java
+++ b/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixPigConfiguration.java
@@ -20,21 +20,20 @@ package org.apache.phoenix.pig;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
+import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
 
-import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
+
 import org.apache.phoenix.jdbc.PhoenixConnection;
 import org.apache.phoenix.util.ColumnInfo;
-import org.apache.phoenix.util.PhoenixRuntime;
 import org.apache.phoenix.util.QueryUtil;
 
-import com.google.common.collect.Lists;
-
 /**
  * A container for configuration to be used with {@link PhoenixHBaseStorage}
  * 
@@ -59,8 +58,6 @@ public class PhoenixPigConfiguration {
 	
 	public static final String TABLE_NAME = "phoenix.hbase.table.name";
 	
-	public static final String UPSERT_COLUMNS = "phoenix.hbase.upsert.columns";
-	
 	public static final String UPSERT_STATEMENT = "phoenix.upsert.stmt";
 	
 	public static final String UPSERT_BATCH_SIZE = "phoenix.upsert.batch.size";
@@ -77,17 +74,9 @@ public class PhoenixPigConfiguration {
 	}
 	
 	public void configure(String server, String tableName, long batchSize) {
-		configure(server,tableName,batchSize,null);
-	}
-	
-	public void configure(String server, String tableName, long batchSize, String columns) {
 		conf.set(SERVER_NAME, server);
 		conf.set(TABLE_NAME, tableName);
 		conf.setLong(UPSERT_BATCH_SIZE, batchSize);
-		if (columns!=null) {
-			conf.set(UPSERT_COLUMNS, columns);
-		}
-
 		conf.setBoolean(MAP_SPECULATIVE_EXEC, false);
 		conf.setBoolean(REDUCE_SPECULATIVE_EXEC, false);
 	}
@@ -118,49 +107,23 @@ public class PhoenixPigConfiguration {
 		// Reset batch size
 		long batchSize = getBatchSize() <= 0 ? ((PhoenixConnection) conn).getMutateBatchSize() : getBatchSize();
 		conf.setLong(UPSERT_BATCH_SIZE, batchSize);
-		boolean useUpsertColumns = false;
 		
 		if (columnMetadataList == null) {
-			String upsertColumns = getUpsertColumns();
-			List<String> upsertColumnList = Lists.newArrayList();
-			if (StringUtils.isNotEmpty(upsertColumns)) {
-				useUpsertColumns = true;
-				String[] upsertColumnTokens = upsertColumns.split(",");
-				for (String token : upsertColumnTokens) {
-					upsertColumnList.add(token.trim());
-				}
+			columnMetadataList = new ArrayList<ColumnInfo>();
+			String[] tableMetadata = getTableMetadata(getTableName());
+			ResultSet rs = conn.getMetaData().getColumns(null, tableMetadata[0], tableMetadata[1], null);
+			while (rs.next()) {
+				columnMetadataList.add(new ColumnInfo(rs.getString(QueryUtil.COLUMN_NAME_POSITION), rs.getInt(QueryUtil.DATA_TYPE_POSITION)));
 			}
-
-			StringBuilder parsedColumns = new StringBuilder();
-			boolean first = true;
-			for (String key : upsertColumnList) {
-				if (first) first=false;
-				else parsedColumns.append(",");
-				parsedColumns.append(key);
-			}
-			LOG.info(String.format("UseUpsertColumns=%s, upsertColumns=%s, upsertColumnSet.size()=%s, parsedColumns=%s "
-					,useUpsertColumns,upsertColumns, upsertColumnList.size(), parsedColumns.toString()
-					));
-
-			columnMetadataList = PhoenixRuntime.generateColumnInfo(conn, getTableName(), upsertColumnList);
-			
 		}
 		
-		if (useUpsertColumns) {
-			// Generating UPSERT statement without column name information.
-			String upsertStmt = QueryUtil.constructUpsertStatement(getTableName(), columnMetadataList);
-			LOG.info("Phoenix Custom Upsert Statement: " + upsertStmt);
-			conf.set(UPSERT_STATEMENT, upsertStmt);
-			
-		} else {
-			// Generating UPSERT statement without column name information.
-			String upsertStmt = QueryUtil.constructGenericUpsertStatement(getTableName(), columnMetadataList.size());
-			LOG.info("Phoenix Generic Upsert Statement: " + upsertStmt);
-			conf.set(UPSERT_STATEMENT, upsertStmt);
-		}
+		// Generating UPSERT statement without column name information.
+		String upsertStmt = QueryUtil.constructGenericUpsertStatement(getTableName(), columnMetadataList.size());
+		LOG.info("Phoenix Upsert Statement: " + upsertStmt);
+		conf.set(UPSERT_STATEMENT, upsertStmt);
 	}
 	
-    public String getUpsertStatement() {
+	public String getUpsertStatement() {
 		return conf.get(UPSERT_STATEMENT);
 	}
 
@@ -177,14 +140,22 @@ public class PhoenixPigConfiguration {
 		return columnMetadataList;
 	}
 	
-	public String getUpsertColumns() {
-		return conf.get(UPSERT_COLUMNS);
-	}
-	
 	public String getTableName() {
 		return conf.get(TABLE_NAME);
 	}
 
+	private String[] getTableMetadata(String table) {
+		String[] schemaAndTable = table.split("\\.");
+		assert schemaAndTable.length >= 1;
+
+		if (schemaAndTable.length == 1) {
+			return new String[] { "", schemaAndTable[0] };
+		}
+
+		return new String[] { schemaAndTable[0], schemaAndTable[1] };
+	}
+
+	
 	public Configuration getConfiguration() {
 		return this.conf;
 	}

http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/953c9a96/phoenix-pig/src/main/java/org/apache/phoenix/pig/hadoop/PhoenixRecord.java
----------------------------------------------------------------------
diff --git a/phoenix-pig/src/main/java/org/apache/phoenix/pig/hadoop/PhoenixRecord.java b/phoenix-pig/src/main/java/org/apache/phoenix/pig/hadoop/PhoenixRecord.java
index 92035eb..b9d03de 100644
--- a/phoenix-pig/src/main/java/org/apache/phoenix/pig/hadoop/PhoenixRecord.java
+++ b/phoenix-pig/src/main/java/org/apache/phoenix/pig/hadoop/PhoenixRecord.java
@@ -27,11 +27,12 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.hadoop.io.Writable;
+import org.apache.pig.ResourceSchema.ResourceFieldSchema;
+import org.apache.pig.data.DataType;
+
 import org.apache.phoenix.pig.TypeUtil;
 import org.apache.phoenix.schema.PDataType;
 import org.apache.phoenix.util.ColumnInfo;
-import org.apache.pig.ResourceSchema.ResourceFieldSchema;
-import org.apache.pig.data.DataType;
 
 /**
  * A {@link Writable} representing a Phoenix record. This class
@@ -62,22 +63,17 @@ public class PhoenixRecord implements Writable {
 	public void write(PreparedStatement statement, List<ColumnInfo> columnMetadataList) throws SQLException {
 		for (int i = 0; i < columnMetadataList.size(); i++) {
 			Object o = values.get(i);
-			ColumnInfo columnInfo = columnMetadataList.get(i);
 			
 			byte type = (fieldSchemas == null) ? DataType.findType(o) : fieldSchemas[i].getType();
-			try {
-				Object upsertValue = convertTypeSpecificValue(o, type, columnInfo.getSqlType());
-				if (upsertValue != null) {
-					statement.setObject(i + 1, upsertValue, columnInfo.getSqlType());
-				} else {
-					statement.setNull(i + 1, columnInfo.getSqlType());
-				}
-			} catch (RuntimeException re) {
-				throw new RuntimeException(String.format("Unable to process column %s, innerMessage=%s"
-						,columnInfo.toString(),re.getMessage()),re);
-				
+			Object upsertValue = convertTypeSpecificValue(o, type, columnMetadataList.get(i).getSqlType());
+
+			if (upsertValue != null) {
+				statement.setObject(i + 1, upsertValue, columnMetadataList.get(i).getSqlType());
+			} else {
+				statement.setNull(i + 1, columnMetadataList.get(i).getSqlType());
 			}
 		}
+		
 		statement.execute();
 	}
 	

http://git-wip-us.apache.org/repos/asf/incubator-phoenix/blob/953c9a96/phoenix-pig/src/main/java/org/apache/phoenix/pig/hadoop/PhoenixRecordWriter.java
----------------------------------------------------------------------
diff --git a/phoenix-pig/src/main/java/org/apache/phoenix/pig/hadoop/PhoenixRecordWriter.java b/phoenix-pig/src/main/java/org/apache/phoenix/pig/hadoop/PhoenixRecordWriter.java
index fbee4ca..c980a38 100644
--- a/phoenix-pig/src/main/java/org/apache/phoenix/pig/hadoop/PhoenixRecordWriter.java
+++ b/phoenix-pig/src/main/java/org/apache/phoenix/pig/hadoop/PhoenixRecordWriter.java
@@ -28,6 +28,7 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.mapreduce.RecordWriter;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
+
 import org.apache.phoenix.pig.PhoenixPigConfiguration;
 
 /**