
Release Notes - Phoenix - Version 3.3

** New Feature
    * [PHOENIX-1399] - Support cross joins and comma-separated table list
    * [PHOENIX-1454] - Map Reduce over Phoenix tables
    * [PHOENIX-1552] - Add sandbox environment for trying out Phoenix
    * [PHOENIX-1559] - Allow specifying auto-commit mode in the connection URL or connection properties

** Improvement
    * [PHOENIX-1127] - Cannot load Timestamp(6) in CSV bulk loader
    * [PHOENIX-1300] - Allow sub-queries to choose different execution path other than hash-join
    * [PHOENIX-1467] - Upgrade to 4.12 Junit and update tests by removing @Category annotation
    * [PHOENIX-1582] - Support TimeOut in JDBC

** Task
    * [PHOENIX-1167] - Improve join capabilities
    * [PHOENIX-1393] - Add test cases for sub-queries in UPSERT and DELETE statement

** Sub-task
    * [PHOENIX-1179] - Support many-to-many joins
    * [PHOENIX-1445] - Add unit test for stats not being maintained correctly through splits
    * [PHOENIX-1496] - Further reduce work in StatsCollector
    * [PHOENIX-1554] - Update join documentation based on many-to-many support
    * [PHOENIX-1557] - Add hint to force sort merge join
    * [PHOENIX-1558] - Document map-reduce integration

** Bug
    * [PHOENIX-1346] - Base exception gets wrapped as incompatible jar exception
    * [PHOENIX-1362] - Min/max aggregate query on CHAR and BINARY types always return null
    * [PHOENIX-1373] - Ctrl-C out of sqlline causes terminal to be useless
    * [PHOENIX-1380] - Potential null dereference in PerformanceLog#getFileOutputStream()
    * [PHOENIX-1394] - getColumnDisplaySize() method returns incorrect value for varchar columns
    * [PHOENIX-1395] - ResultSpooler spill files are left behind in /tmp folder
    * [PHOENIX-1396] - Avoid unnecessary ResultSpooler.bin files creation/deletion every time SpoolingResultIterator is used 
    * [PHOENIX-1397] - RVC combined with OR on first row key column results in NPE
    * [PHOENIX-1401] - SYSTEM.SEQUENCE table is not pre-split as expected
    * [PHOENIX-1402] - Don't recalculate stats on split
    * [PHOENIX-1403] - Race condition can cause ConnectionQueryServicesImpl to be re-initialized
    * [PHOENIX-1404] - PhoenixResultSet.setFetchSize throws SQLFeatureNotSupportedException
    * [PHOENIX-1405] - Problem referencing lower-case column names with Phoenix / Pig / Spark
    * [PHOENIX-1406] - Use preCompact hook instead of preCompactScannerOpen for stats collection
    * [PHOENIX-1407] - PhoenixStatement.getFetchSize() appears to never be used
    * [PHOENIX-1408] - Don't disable table before modifying HTable metadata
    * [PHOENIX-1413] - Add Phoenix coprocessors with configurable priority
    * [PHOENIX-1418] - Optionally display number of parallel chunks in explain plan
    * [PHOENIX-1420] - DatabaseMetaData.getschemas returns incorrect column order
    * [PHOENIX-1427] - Reduce work in StatsCollector
    * [PHOENIX-1429] - Cancel queued threads when limit reached
    * [PHOENIX-1431] - DELETE using Subqueries
    * [PHOENIX-1432] - Run limit query that has only leading PK column filter serially
    * [PHOENIX-1434] - Stats are not maintained correctly through splits
    * [PHOENIX-1436] - the choice of index by phoneix is not correct where do querying
    * [PHOENIX-1442] - Alter Index double normalize Index Table Name
    * [PHOENIX-1446] - Add/fix logging for LIMIT optimization
    * [PHOENIX-1447] - Increase guidepost width default to take into account FAST_DIFF compression
    * [PHOENIX-1448] - Fix resource leak when work rejected by thread executor
    * [PHOENIX-1449] - Fix potential NPE in delete
    * [PHOENIX-1451] - Queries with limit against tenant views is broken
    * [PHOENIX-1456] - Incorrect query results caused by reusing buffers in SpoolingResultIterator
    * [PHOENIX-1463] - phoenix.query.timeoutMs doesn't work as expected
    * [PHOENIX-1466] - Prevent multiple scans when query run serially
    * [PHOENIX-1469] - Binary columns do not work correctly for indexing
    * [PHOENIX-1472] - SaltingUtil calculates wrong salt key for Integer.MIN_VALUE hash code
    * [PHOENIX-1474] - NPE when RVC between combined with key part comparison
    * [PHOENIX-1476] - Immediately open scanner for parallel queries
    * [PHOENIX-1480] - Incorrect query results may occur when VIEW uses indexes from physical table
    * [PHOENIX-1484] - Index creation failed due to specifying DEFAULT_COLUMN_FAMILY option
    * [PHOENIX-1485] - Date columns should be displayed without timezone offset
    * [PHOENIX-1500] - Disallow mutations and queries using PhoenixPreparedStatement.executeQuery() and executeUpdate() respectively.
    * [PHOENIX-1503] - Compilation on Mac OS fails on maven-assembly-plugin
    * [PHOENIX-1511] - Invalidate stats row even if not running stats due to phoenix.stats.minUpdateFrequency
    * [PHOENIX-1533] - Last key part not taken into child/parent optimization
    * [PHOENIX-1560] - Join between global index and data table if INDEX hint used
    * [PHOENIX-1575] - Identical sql type values for UNSIGNED_TIMESTAMP and UNSIGNED_DATE
    * [PHOENIX-1581] - Client cache not updated after issuing ALTER TABLE statements for setting phoenix table properties
    * [PHOENIX-1587] - Error deserializing empty array (which represents null)
    * [PHOENIX-1591] - Return all rows instead of no rows if IN clause subquery gets optimized out from semi-join and returns empty result
    * [PHOENIX-1600] - Scanner is left unclosed in MetaDataEndpointImpl#doDropTable()
    * [PHOENIX-1606] - Update JDBC version to match release version


Release Notes - Phoenix - Version 3.2

** New Features and Sub-task
    * [PHOENIX-167] - Support semi/anti-joins
    * [PHOENIX-180] - Use stats to guide query parallelization
    * [PHOENIX-943] - Handle pushed down post-filters for subquery in joins with limit and non-groupby aggregation
    * [PHOENIX-945] - Support correlated subqueries in comparison without ANY/SOME/ALL
    * [PHOENIX-1085] - Commonize logic for adding salt byte and adding region start key in ParallelIterators
    * [PHOENIX-1168] - Support non-correlated sub-queries in where clause having a comparison operator with no modifier or a comparison operator modified by ANY, SOME or ALL
    * [PHOENIX-1259] - Perform partial scan for ANALYZE when table salted or local index
    * [PHOENIX-1263] - Only cache guideposts on physical PTable
    * [PHOENIX-1264] - Add StatisticsCollector to existing tables on first connection to cluster
    * [PHOENIX-1296] - Scan entire region when tenant-specific table is analyzed
    * [PHOENIX-1309] - Ensure Phoenix table is created for Local index and view index tables to store guideposts against them
    * [PHOENIX-1320] - Update stats atomically
    * [PHOENIX-1321] - Cleanup setting of timestamps when collecting and using stats
    * [PHOENIX-1322] - Add documentation for UPDATE STATISTICS command
    * [PHOENIX-1328] - Update ANALYZE syntax to collect stats on index tables and all tables
    * [PHOENIX-1332] - Support correlated subqueries in comparison with ANY/SOME/ALL
    * [PHOENIX-1333] - Store statistics guideposts as VARBINARY
    * [PHOENIX-1254] - Add REGEXP_SPLIT function

** Bug
    * [PHOENIX-105] - Remove org.apache.commons.csv source once available in Maven repo
    * [PHOENIX-897] - psql command doesn't allow using certain characters in invocation
    * [PHOENIX-941] - Parallelize within regions to prevent rpc timeout
    * [PHOENIX-944] - Support derived tables in FROM clause that needs extra steps of client-side aggregation or other processing
    * [PHOENIX-954] - View index sequences of a non multi tenant table are not getting deleted after main table drop
    * [PHOENIX-973] - Lexer skips unexpected characters
    * [PHOENIX-1044] - Phoenix-Pig: No results returned unless all used columns are selected
    * [PHOENIX-1050] - Can't load pig bytearray into a phoenix VARBINARY column
    * [PHOENIX-1095] - Cannot add column to SYSTEM.CATALOG using Alter Table 
    * [PHOENIX-1098] - Support CASCADE option on DROP TABLE that drops all VIEWs
    * [PHOENIX-1163] - Intersect min/max range with scan range during compilation when salted
    * [PHOENIX-1203] - Uable to work for count (distinct col) queries via phoenix table with secondary indexes
    * [PHOENIX-1206] - Decimal serialization broken for negative numbers with more than 19 digits of precision
    * [PHOENIX-1208] - Check for existence of views doesn't take into account the fact that SYSTEM.CATALOG could be split across regions
    * [PHOENIX-1209] - DROP of system table doesn't correctly look for the right kind of table
    * [PHOENIX-1211] - Use skip scan when row value constructor uses leading row key columns 
    * [PHOENIX-1214] - SYSTEM.CATALOG cannot be created when first connection to cluster is tenant-specific
    * [PHOENIX-1219] - Salt the SYSTEM.SEQUENCE table
    * [PHOENIX-1225] - Evaluation of OR between columns in PK and not in PK incorrect
    * [PHOENIX-1228] - NPE in "select max(c1)" when c1 is a CHAR field
    * [PHOENIX-1237] - COALESCE Function - type of second parameter
    * [PHOENIX-1239] - IN clause (and some others) cannot get moved from HAVING clause to WHERE clause when qualified
    * [PHOENIX-1242] - ArrayoutofBoundException Phoenix mapping to exisiting Hbase
    * [PHOENIX-1246] - Region server gets aborted with Phoenix exception
    * [PHOENIX-1250] - guava dependency out-dated causing NoSuchMethod error
    * [PHOENIX-1251] - Salted queries with range scan become full table scans
    * [PHOENIX-1252] - Potential lock leak for ungrouped aggregation
    * [PHOENIX-1253] - Invalid PreparedStatement.setXXX call should throw SQLException
    * [PHOENIX-1257] - Upserted data seen by SELECT in UPSERT SELECT execution
    * [PHOENIX-1258] - RegexpSubstrFunction is not useable with group by query 
    * [PHOENIX-1266] - Disallow setting NOT NULL constraint on non PK columns
    * [PHOENIX-1268] - Misleading exception when attempting to drop system table
    * [PHOENIX-1271] - Column metadata doesn't hide tenant column on tenant-specific connections.
    * [PHOENIX-1272] - Avoid pulling in unintended HBase dependencies in phoenix-core
    * [PHOENIX-1273] - Phoenix should provide ILIKE keyword
    * [PHOENIX-1275] - SYSTEM.STATS table is not created when SYSTEM.CATALOG is already present
    * [PHOENIX-1280] - ColumnProjectionFilter creates too many ImmutableBytesPtrs
    * [PHOENIX-1281] - Each MultiKeyValueTuple.setKeyValues creates a new immutable list object
    * [PHOENIX-1284] - Override config properties for unit tests not making it to server
    * [PHOENIX-1285] - Override default for histogram depth in QueryServicesTestImpl
    * [PHOENIX-1288] - Selecting more than 2 array elements via index fails with ArrayIndexOutOfBoundsException
    * [PHOENIX-1298] - Queries on fixed width type columns that have an index declared on them don't use that index
    * [PHOENIX-1303] - Possible NPE in StatisticCollector#stop
    * [PHOENIX-1314] - Assertion tripped for skip scan with two unit tests
    * [PHOENIX-1315] - Optimize query for Pig loader
    * [PHOENIX-1316] - Improve test coverage of stats framework
    * [PHOENIX-1324] - Consolidate code that initializes Scan
    * [PHOENIX-1325] - Pass in instead of calculate if we've crossed a region boundary in ScanRanges intersect methods
    * [PHOENIX-1327] - Disallow creating arrays of fixed width base type without the max length being specified
    * [PHOENIX-1330] - Flag VARBINARY VARBINARY ARRAY declaration in DDL as an error
    * [PHOENIX-1337] - Unpadded fixed length tenant ID causes erroneous results
    * [PHOENIX-1338] - Logic to group together parallel scans is incorrect
    * [PHOENIX-1341] - PhoenixRuntime returns zero exit status on failure
    * [PHOENIX-1344] - NTH_VALUE function skips duplicit values in order by
    * [PHOENIX-1349] - VIEWs do not inherit indexes from their parent
    * [PHOENIX-1353] - CsvBulkLoad doesn't work in secure env
    * [PHOENIX-1355] - sqlline.py or psql.py may hang if they're not invoked from bin folder
    * [PHOENIX-1357] - Salt sequence table to prevent same RS from getting all sequence calls
    * [PHOENIX-1358] - OOB in SchemaUtil.getTableNameFromFullName
    * [PHOENIX-1359] - Backward compatibility fails with 4.1 client and current 4.0 branch on server
    * [PHOENIX-1360] - NPE in SpoolingResultIterator 
    * [PHOENIX-1361] - Sequence value goes backwards if sequence validated before reserved
    * [PHOENIX-1365] - Make sequence salt buckets configurable
    * [PHOENIX-1366] - ORDINAL_POSITION incorrect for multi-tenant table over tenant-specific connection
    * [PHOENIX-1368] - Persist link from VIEW back to its child VIEW
    * [PHOENIX-1369] - Add back encode/decode methods as deprecated
    * [PHOENIX-1370] - Allow query timeout to differ from RPC timeout
    * [PHOENIX-1376] - java.lang.NullPointerException occurs in JDBC driver
    * [PHOENIX-1382] - Phoenix 4.2 RC Issue
    * [PHOENIX-1385] - Adding, dropping and adding columns fails with NPE
    * [PHOENIX-1390] - Stats not updated on client after major compaction
    * [PHOENIX-1391] - Remove obsolete hint

** Improvement
    * [PHOENIX-619] - Support DELETE over table with immutable index when possible
    * [PHOENIX-852] - Optimize child/parent foreign key joins
    * [PHOENIX-1030] - Change Expression.isDeterministic() to return a enum of values ALWAYS, PER_STATEMENT, PER_ROW
    * [PHOENIX-1216] - Making spooling directory location configurable
    * [PHOENIX-1300] - Allow sub-queries to choose different execution path other than hash-join

** Task
    * [PHOENIX-761] - Implement getKeyPart for round/ceil/floor of a DECIMAL value
    * [PHOENIX-960] - Don't spin mini cluster up and down between tests
    * [PHOENIX-1297] - Adding utility methods to get primary key information from the optimized query plan
    * [PHOENIX-1310] - Spill files filling up /tmp on server

Previous release - Version 3.1

** Improvement
    * [PHOENIX-19] - Enhance JDBC connection of Phoenix to support connecting to a Secure HBase cluster.
    * [PHOENIX-890] - Create dev-support script for generating binary and source release tars with hadoop1 and hadoop2 profiles
    * [PHOENIX-898] - Extend PhoenixHBaseStorage to specify upsert columns
    * [PHOENIX-939] - Generalize SELECT expressions for Pig Loader
    * [PHOENIX-950] - Improve Secondary Index Update Failure Handling
    * [PHOENIX-982] - Avoid spinning up and tearing down mini cluster in tests
    * [PHOENIX-1069] - Improve CsvBulkLoadTool to build indexes when loading data.
    * [PHOENIX-1072] - Fast fail sqlline.py when pass wrong quorum string or hbase cluster hasnt' started yet 
    * [PHOENIX-1101] - Provide a way to create Phoenix Statements on the server side inside a CP
    * [PHOENIX-1103] - Remove hash join special case for ChunkedResultIterator
    * [PHOENIX-1175] - Add setReadOnly and setFetchSize options

** New Feature
    * [PHOENIX-71] - Support sub-joins
    * [PHOENIX-983] - Add a function for getting the GMT offset for a given timezone and time
    * [PHOENIX-984] - Add support for DECODE built-in function
    * [PHOENIX-995] - ADD ENCODE AND LPAD functions 
    * [PHOENIX-1000] - Support FIRST_VALUE, LAST_VALUE, and NTH_VALUE aggregate functions
    * [PHOENIX-1002] - Add support for % operator
    * [PHOENIX-1043] - Add function for convert date between timezones
    * [PHOENIX-1062] - A SQL Trimmer for log sql execute times

** Sub-task
    * [PHOENIX-136] - Support derived tables in from clause
    * [PHOENIX-927] - Support derived tables in joins
    * [PHOENIX-1038] - Dynamically add INDEX_TYPE column to SYSTEM.CATALOG if not already there
    * [PHOENIX-1112] - Atomically rebuild index partially when index update fails  
    * [PHOENIX-1132] - Merge server side phoenix-hadoop2-compat.jar, phoenix-hadoop-compat.jar and phoenix-<version>.jar
    * [PHOENIX-1161] - Prevent necessity of clearing region cache on every access for local indexing

** Bug
    * [PHOENIX-3] - TRUNC method doesn't work on column of datatype timestamp
    * [PHOENIX-11] - Create Pig Loader
    * [PHOENIX-41] - HBase restart ConnectionLoss
    * [PHOENIX-63] - Can't add null value to a secondary indexed table
    * [PHOENIX-831] - First Connection to Phoenix blows up if it is tenant specific
    * [PHOENIX-902] - Allow family qualified names in CSVCommonsLoader
    * [PHOENIX-908] - At MetaDataEndpointImpl createTable, print large of Release unknown lockId: 5
    * [PHOENIX-909] - Handle scan time range for low time resolution OS
    * [PHOENIX-911] - DDL containing only PK cols in the column list doesn't respect HBase specific attributes
    * [PHOENIX-915] - Numeric functions ROUND, CEIL, FLOOR return incorrect results for DOUBLE
    * [PHOENIX-916] - Time clock skew issue when SYSTEM.CATALOG moves between region servers
    * [PHOENIX-920] - SqlLine shows funky characters when running on Windows
    * [PHOENIX-924] - Classify PhoenixHBaseStorageTest as an integration test
    * [PHOENIX-948] - Pig integration tests don't get run via Maven
    * [PHOENIX-951] - Don't push LIMIT as PageFilter for joins
    * [PHOENIX-952] - Support ANY and ALL built-ins for ARRAYs
    * [PHOENIX-954] - View index sequences of a non multi tenant table are not getting deleted after main table drop
    * [PHOENIX-956] - Connection properties ignored
    * [PHOENIX-962] - Basic querying fails if the current thread's context classloader is changed
    * [PHOENIX-965] - Cannot aggregate on index with NULL values
    * [PHOENIX-966] - Phoenix needs to be on the main classpath of SQL tools
    * [PHOENIX-969] - java.util.concurrent.TimeoutException while reading the result set
    * [PHOENIX-979] - DELETE deletes row when WHERE contains PK fields but other than PK conditions are false
    * [PHOENIX-981] - Joins using Phoenix client on v.3.0.0 and server 3.0 head of branch fails on backward compatibility
    * [PHOENIX-985] - performance.py script fails to execute queries
    * [PHOENIX-986] - Improve error message on CSV import if table not found
    * [PHOENIX-987] - Add missing category information to integration tests
    * [PHOENIX-988] - The result is not expected when select case when case
    * [PHOENIX-989] - problem setting column type of Array to null
    * [PHOENIX-990] - OOM caused by order by query returning all rows
    * [PHOENIX-991] - IT tests failed on hadoop2
    * [PHOENIX-993] - Remove/exclude JRuby dependency
    * [PHOENIX-997] - Timestamp date type default format with GMT time zone
    * [PHOENIX-1001] - Using NEXT VALUE FOR 'sequence' as an input to a function cause a NPE
    * [PHOENIX-1005] - upsert data error after drop index
    * [PHOENIX-1008] - Problem initiating and using FLOAT ARRAY Type
    * [PHOENIX-1016] - Support MINVALUE, MAXVALUE, and CYCLE options in CREATE SEQUENCE
    * [PHOENIX-1032] - Don't compile alternate plans if query is a point lookup
    * [PHOENIX-1033] - Update HBase version to 0.94.19 to make connection to secure cluster easier
    * [PHOENIX-1034] - Move validate/reserve of sequences into query compile
    * [PHOENIX-1037] - Implement getResultSetSqlType for UNSIGNED date/time types
    * [PHOENIX-1039] - PhoenixHBaseLoaderIT fails on hadoop-2 profile
    * [PHOENIX-1047] - Auto cast - add/sub decimal constant and integer
    * [PHOENIX-1048] - tables and sequences should be deleted at different times when scn set at BaseConnectedQueryIT#deletePriorTables
    * [PHOENIX-1049] - Secondary indices can cause "ERROR 203 (22005): Type mismatch" in queries involving joins
    * [PHOENIX-1052] - Secondary indices can cause "ERROR 504 (42703): Undefined column" in queries involving joins
    * [PHOENIX-1053] - UngroupedAggregateRegionObserver make lock unlock
    * [PHOENIX-1075] - Mathematical order of operations are improperly evaluated.
    * [PHOENIX-1076] - Usage of CAST producing syntax error
    * [PHOENIX-1079] - ConnectionQueryServicesImpl : Close HTable after use
    * [PHOENIX-1080] - Fix PhoenixRuntime.decodepk for salted tables. Add integration tests.
    * [PHOENIX-1083] - IN list of RVC combined with AND doesn't return expected rows
    * [PHOENIX-1089] - Row value constructors performance issue with multi-tenant views
    * [PHOENIX-1090] - Fix HTable leak in ServerCacheClient
    * [PHOENIX-1096] - Duplicate sequence values returned when doing upsert select against a salted table.
    * [PHOENIX-1097] - ChunkedResultIteratorFactory.newIterator is not closing the passed iterator resulting in HTable leak.
    * [PHOENIX-1100] - Upsert Select with Sequence and Order By doesn't result in sequence getting assigned based on requested ordering 
    * [PHOENIX-1102] - Query Finds No Rows When Using Multiple Column Families in where clause
    * [PHOENIX-1104] - Do not shutdown threadpool when initialization fails
    * [PHOENIX-1105] - TableNotFoundException does not get caught if SYSTEM.TABLE is not present for whitelisted upgrade
    * [PHOENIX-1109] - PhoenixTestDriver needs to call shutdown on executor 
    * [PHOENIX-1110] - Fix flappy MultiCfQueryExecIT
    * [PHOENIX-1111] - Fix flapping unit tests by removing inappropriate usage of TestUtil.TEST_PROPERTIES
    * [PHOENIX-1122] - Ensure TEST_PROPERTIES is not updated to prevent test flapping
    * [PHOENIX-1125] - SQLException when connection string is of form jdbc:phoenix:localhost:1234:userName
    * [PHOENIX-1130] - SkipScanFilter gets IndexOutOfBoundsException when intersecting salted tables
    * [PHOENIX-1131] - PhoenixRuntime.encodePk needs to pad row key values to max column length
    * [PHOENIX-1133] - Skip scan intersect method not reseting state correctly
    * [PHOENIX-1137] - SkipScanFilter.intersect not called for aggregate queries
    * [PHOENIX-1140] - Incorrect padding for row key columns
    * [PHOENIX-1141] - Fix HTable resource leak in ConnectionQueryServicesImpl.metaDataCoprocessorExec
    * [PHOENIX-1143] - Prevent race condition between creating phoenix connection and closing phoenix driver/connection query services.
    * [PHOENIX-1146] - Detect stale client region cache on server and retry scans in split regions
    * [PHOENIX-1147] - Ensure data table is sent to client if index table changes states
    * [PHOENIX-1154] - Fix hanging tests because metadata is not cleared up
    * [PHOENIX-1156] - Don't throw TableNotFoundException when table not found in cache
    * [PHOENIX-1157] - Improve abstraction for meta data cache
    * [PHOENIX-1162] - Use physical name instead of logical name when recovering from stale region cache
    * [PHOENIX-1171] - Dropping the index is not verifying the associated table
    * [PHOENIX-1172] - Prevent lock contention in ConnectionQueryServicesImpl. Fix exception handling. 
    * [PHOENIX-1180] - Rename test classes so they are properly picked up by the test runner
    * [PHOENIX-1181] - client cache fails to update itself after a table was altered from a diff client
    * [PHOENIX-1183] - phoenix-pig does not work with CDH 5.1
    * [PHOENIX-1188] - Performance regression for non-aggregate queries

** Task
    * [PHOENIX-539] - Implement parallel scanner that does not spool to disk
    * [PHOENIX-674] - Run unit tests in parallel
    * [PHOENIX-681] - Enhance JDBC connection of Phoenix to support connecting to a Secure HBase cluster.
    * [PHOENIX-788] - Support cast from/to DATE/TIME/TIMESTAMP to/from LONG/UNSIGNED_LONG
    * [PHOENIX-828] - Detect if split occurs while ORDER BY query is in progress
    * [PHOENIX-1056] - A ImportTsv tool for phoenix to build table data and all index data.

** Test
    * [PHOENIX-1136] - Add Integration Tests to verify the fix for PHOENIX-1133

Version 3.0.0-incubating

** New Feature
    * [PHOENIX-21] - Support indexes on VIEWs including tenant-specific views
    * [PHOENIX-92] - Hive StorageHandler
    * [PHOENIX-149] - Support SEQUENCE creation and usage
    * [PHOENIX-427] - Allow creating VIEWs on the same physical HBase table
    * [PHOENIX-632] - Support equi-joins through broadcast hash join
    * [PHOENIX-749] - Support JDBC ARRAY type

** Improvement
    * [PHOENIX-10] - Push projection of a single ARRAY element to the server
    * [PHOENIX-13] - Provide a "nocache" hint to a query
    * [PHOENIX-15] - Allow forcing a memstore flush for a table
    * [PHOENIX-16] - Where clause optimization in join queries
    * [PHOENIX-17] - Support to make use of partial covered indexes in scan
    * [PHOENIX-19] - Enhance JDBC connection of Phoenix to support connecting to a Secure HBase cluster.
    * [PHOENIX-31] - Add encode/decode methods for PK values
    * [PHOENIX-33] - Support table-wildcard select in join queries
    * [PHOENIX-40] - Add support for batching
    * [PHOENIX-42] - Provide end2end test command line utility
    * [PHOENIX-50] - Convert shell scripts under bin to python script so same scripts can run in unix & windows
    * [PHOENIX-68] - Add hint "NO_STAR_JOIN" to indicate if star join optimization should be avoided for multi inner join queries
    * [PHOENIX-85] - Refine error handling in HashJoinPlan execution and add warnings
    * [PHOENIX-129] - Improve MapReduce-based import
    * [PHOENIX-130] - Separate execution of slow (integration) tests from fast unit tests
    * [PHOENIX-853] - Support CAST(x as varchar(length)) syntax
    * [PHOENIX-856] - Allow phoenix driver reuse after being closed

** Bug
    * [PHOENIX-7] - after Connection close, there are still 10 phoenix threads alive
    * [PHOENIX-12] - snappy error on osx 64bit
    * [PHOENIX-18] - Distinct based aggregations not working correctly when query contains ORDER BY
    * [PHOENIX-20] - Single Key(s) not recognized by optimizer when table is salted
    * [PHOENIX-22] - Explicitly declare views as read-only or updatable
    * [PHOENIX-26] - Unit test ArithmeticQueryTest#testDecimalUpsertSelect fails on HBase 0.94.15
    * [PHOENIX-29] - Add custom filter to more efficiently navigate KeyValues in row
    * [PHOENIX-30] - NPE on PTable.getColumn(String) if column with same name used in the PK and non PK
    * [PHOENIX-32] - Replace generic ColumnModifier with specific SortOrder
    * [PHOENIX-34] - Insufficient memory exception on join when RHS rows count > 250K 
    * [PHOENIX-35] - Perf test memory usage for indexes
    * [PHOENIX-37] - Prevent deserialize and re-serialize all array elements in construction of array
    * [PHOENIX-38] - Data load time with mutable index is 5X slower than Phoenix 2.2.2, 2.2.3
    * [PHOENIX-44] - Cannot create index on tables with case-sensitive schema names
    * [PHOENIX-49] - ArrayIndexOutOfBoundsException when creating index
    * [PHOENIX-53] - Replace CSV loader with Apache Commons CSV loader
    * [PHOENIX-54] - PhoenixSink references jboss channel exception
    * [PHOENIX-57] - ClientKeyValue doesn't work in debug mode
    * [PHOENIX-58] - Client jars are missing phoenix code
    * [PHOENIX-60] - UPSERT SELECT does not increment sequences
    * [PHOENIX-61] - Indexing on columns of Date/Timestamp type would lead to ArgumentTypeMismatchException in optimize()
    * [PHOENIX-62] - Precision loss for decimal type (no scale specified) when creation of index happens after the record insertion
    * [PHOENIX-65] - Timeout in running E2E tests after PHOENIX-42 commit 
    * [PHOENIX-66] - Support array creation from CSV file
    * [PHOENIX-67] - Lazy initialize QueryServices in PhoenixDriver 
    * [PHOENIX-70] - Add doc for client jar being for a specific Hadoop version
    * [PHOENIX-72] - SkipScanFilter intersect may be incorrect for ranges
    * [PHOENIX-75] - Add documentation on website describing ARRAY support
    * [PHOENIX-76] - Fix perf regression due to PHOENIX-29
    * [PHOENIX-77] - Indexes and salting on views is broken
    * [PHOENIX-78] - MetaDataUtil must respect ClientKeyValue usage
    * [PHOENIX-80] - Improve handing of TableNotFoundException in ConnectionQueryServicesImpl#getTable
    * [PHOENIX-82] - Allow ARRAY to be compared and used at end of PK
    * [PHOENIX-83] - select with left join when the where condition has right tables, the result is not expected
    * [PHOENIX-84] - explain the query plan is not the actually order 
    * [PHOENIX-89] - Statements are not closed using PhoenixConnection.executeStatements()
    * [PHOENIX-90] - MemoryChunk objects might be orphaned when creating new caches in TenantCacheImpl
    * [PHOENIX-93] - Add shutdown hook to free any straggling resources
    * [PHOENIX-94] - Memory leak in running unit tests on Mac perhaps mini-cluster related
    * [PHOENIX-95] - Use catalog argument for tenant in JDBC metadata APIs
    * [PHOENIX-96] - Enable use of ClientKeyValueBuilder to reduce memory footprint
    * [PHOENIX-97] - Sort columns by COLUMN_NAME for metaData.getPrimaryKey() as dictated by spec
    * [PHOENIX-99] - Automatic white list based upgrade from 2.2 to 3.0
    * [PHOENIX-100] - Relax compatibility check to only check that the major version matches between the client and server jars
    * [PHOENIX-106] - NPE when adding dynamic columns to a salted table
    * [PHOENIX-107] - Pass through already normalized strings to CSVLoader
    * [PHOENIX-108] - Add testing around multi-tenancy
    * [PHOENIX-110] - Indexes with tenant-specific views appear to be broken
    * [PHOENIX-113] - Enable usage of ClientKeyValue on for indexing on server
    * [PHOENIX-114] - Add Hints so that user can select whether to use "avoid seek optimization" or not
    * [PHOENIX-116] - Phoenix array integer types overlap with existing java.sql.Types
    * [PHOENIX-118] - Type mismatch error on upsert for unsigned_date and date
    * [PHOENIX-119] - Removed unnecessary Expression.getByteSize() method
    * [PHOENIX-121] - Metadata query on 2.X fails after upgrade to Phoenix 3.0
    * [PHOENIX-122] - SELECT * FROM TABLE ORDER BY NONPK COLUMN doesn't return values for all the columns
    * [PHOENIX-123] - Fixed with array should not write any footer
    * [PHOENIX-124] - Add one page documentation in markdown for ARRAY support
    * [PHOENIX-126] - Use of BOOLEAN in index and/or group by causes exception
    * [PHOENIX-127] - Query with pk IS NULL OR pk IN (1,2) return incorrect results
    * [PHOENIX-128] - Support coercion and descending sort order for ARRAY
    * [PHOENIX-131] - Incorrect determination of total available memory
    * [PHOENIX-829] - Uppercase file name if none supplied for CSV import
    * [PHOENIX-830] - Add DISCLAIMER file along side NOTICE file
    * [PHOENIX-832] - Drop the ".txt" extension on the NOTICE, LICENSE, CHANGES, and README files
    * [PHOENIX-834] - Unit tests fail if default locale is not en_US
    * [PHOENIX-835] - Datatype statements in CAST operations are case-sensitive
    * [PHOENIX-841] - Upserting into tenant-specific view with no where clause fails with an NPE
    * [PHOENIX-842] - Use better namespace for maven artifacts
    * [PHOENIX-843] - Incorrect java.sql.Types value returned for array types in result set
    * [PHOENIX-845] - log4j setting is wrong
    * [PHOENIX-846] - Select DISTINCT with LIMIT does full scans
    * [PHOENIX-847] - Tenant metadata isolation broken in Connection.getMetaData()
    * [PHOENIX-849] - Test StatsManagerIT#testStatsManager is flaky 
    * [PHOENIX-850] - Optimize ORDER BY and GROUP BY for tenant specific indexes
    * [PHOENIX-857] - Duplicate dependency on phoenix-core in phoenix-flume
    * [PHOENIX-858] - Disallow null primary key
    * [PHOENIX-861] - MapReduce import doesn't use a default array separator
    * [PHOENIX-863] - Relax delete check for immutable secondary indexes
    * [PHOENIX-865] - Bump utility logging level from INFO to WARN because of too much logging info
    * [PHOENIX-871] - Mutable Secondary Indexing can cause a deadlock on exception
    * [PHOENIX-872] - getConnection() sometimes fails with a ConcurrentModificationException
    * [PHOENIX-875] - NPE when running end2end tests against a live cluster
    * [PHOENIX-876] - Remove unnecessary phoenix-*-mapreduce.jar
    * [PHOENIX-881] - end2end test fails to run against a live cluster using end2endtest.py
    * [PHOENIX-882] - Updatable view should check view condition upon upsert
    * [PHOENIX-885] - Metadata ORDINAL_POSITION is off by one if table is salted
    * [PHOENIX-887] - Fix upgrade when wildcard used to upgrade everything
    * [PHOENIX-891] - Multi-tenant - Upserting values without specifying columns names upserts values in wrong columns
    * [PHOENIX-892] - Multi-tenant - Creating index throws NoSuchColumnFamilyException when CF is specified in base table
    * [PHOENIX-901] - Ensure ConnectionQueryServices only initialized once
    * [PHOENIX-904] - Connection leak during running of upgrade


** Task
    * [PHOENIX-25] - Remove @author tags
    * [PHOENIX-45] - Insure all source files include the ASF preamble
    * [PHOENIX-46] - Use Apache Rat for release compliance checking
    * [PHOENIX-622] - Support multi-tenant tables as views
    * [PHOENIX-873] - Add missing license headers as discovered by Apache Rat
    * [PHOENIX-874] - Update NOTICE file based on http://apache.org/legal/src-headers.html#notice
