Fixed Issues in Phoenix

Review the list of Phoenix issues that are resolved in Cloudera Runtime 7.1.9.

PHOENIX-6881 Implement the applicable Date/Time features from JDBC 4.2
Phoenix now supports setting and retrieving java.time.LocalDate, java.time.LocalDateTime, and java.time.LocalTime objects through the ResultSet.getObject() and PreparedStatement.setObject() APIs, as defined by JDBC 4.2.

Apache patch information

Changes in Phoenix:

  • PHOENIX-6959: Server merges are not used for hinted uncovered indexes for wildcard selects on 5.1
  • PHOENIX-6984: Fix fallback to skip-join-merge for hinted global indexes
  • PHOENIX-6966: UngroupedAggregateRegionScanner.insertEmptyKeyValue() writes wrong qualifier for encoded CQ tables
  • PHOENIX-6965: UngroupedAggregateRegionScanner.insertEmptyKeyValue() generates too many cells
  • PHOENIX-6969: While using order in some hinted uncovered queries, a ColumnAlreadyExistsException is thrown
  • PHOENIX-6953: Creating indexes on a table with old indexing leads to inconsistent co-processors
  • PHOENIX-6873: Use cached connection in IndexHalfStoreFileReaderGenerator
  • PHOENIX-6874: Support older HBase versions with broken ShortCircuitConnection
  • PHOENIX-6872: Use ServerUtil.ConnectionFactory.getConnection() in UngroupedAggregateRegionScanner
  • PHOENIX-6395: Reusing connection instance object instead of creating everytime in PhoenixAccessController class
  • PHOENIX-5066: The TimeZone is incorrectly used during writing or reading data
  • PHOENIX-6823: Calling Joda-based round() function on temporal PK field causes division by zero error
  • PHOENIX-6889: Improve extraction of ENCODED_QUALIFIERs
  • PHOENIX-6720: CREATE TABLE can not recreate column encoded tables that had columns dropped
  • PHOENIX-6855: Upgrade from 4.7 to 5+ fails if any of the local indexes exist
  • PHOENIX-6818: Remove dependency on the i18n-util library
  • PHOENIX-6841: Depend on omid-codahale-metrics
  • PHOENIX-6834: Use pooled HConnection for server side upsert select
  • PHOENIX-5894: Table versus Table Full Outer join on Salted tables not working
  • PHOENIX-6800: Remove superfluous semicolon for import statement in UncoveredLocalIndexRegionScanner
  • PHOENIX-6798: Eliminate unnecessary reversed scan for AggregatePlan
  • PHOENIX-6653: Add upgrade tests based on HBase snapshots
  • PHOENIX-6721: CSV bulkload tool fails with FileNotFoundException if --output points to the S3 location
  • PHOENIX-6646: System tables are not upgraded after namespace migration
  • PHOENIX-6611: Fix IndexTool -snap option and set VERIFIED in PhoenixIndexImportDirectReducer
  • PHOENIX-6601: Fix IndexTools bugs with namespace mapping
  • PHOENIX-6480: SchemaExtractionProcessor does not add IMMUTABLE_STORAGE_SCHEME and COLUMN_ENCODED_BYTES to the generated SQL
  • PHOENIX-6509: Forward port PHOENIX-4424 Allow users to create "DEFAULT" and "HBASE" Schema (Uppercase Schema Names)
  • PHOENIX-6427: Create sequence fails in lowercase schema
  • PHOENIX-6451: Update junit and jcodings versions
  • PHOENIX-3067: Phoenix metrics system should not be started in mini-cluster mode
  • PHOENIX-6662: Failed to delete rows when PK has one or more DESC column with IN clause
  • PHOENIX-6659: RVC with AND clauses return incorrect result
  • PHOENIX-6773: PhoenixDatabaseMetadata.getColumns() always returns null COLUMN_DEF
  • PHOENIX-6767: Traversing through all the guideposts to prepare parallel scans is not required for salted tables when the query is point lookup
  • PHOENIX-6751: Force using range scan vs skip scan when using the IN operator and large number of RVC elements
  • PHOENIX-6771: Allow only "squash and merge" from GitHub UI
  • PHOENIX-6766: Fix failure of sqlline due to conflicting jline dependency pulled from Hadoop 3.3
  • PHOENIX-6758: During HBase 2 upgrade Phoenix Self healing task fails to create server side connection before reading SYSTEM.TASK
  • PHOENIX-6753: Update default HBase 2.4 version to 2.4.13
  • PHOENIX-6755: SystemCatalogRegionObserver extends BaseRegionObserver which does not exist in hbase-2.4 branch
  • PHOENIX-6733: Ref count leaked test failures
  • PHOENIX-6725: ConcurrentMutationException when adding column to table view
  • PHOENIX-6530: Fix tenantId generation for Sequential and Uniform load generators
  • PHOENIX-5534: Cursors with request metrics enabled throws exception
  • PHOENIX-6710: Revert PHOENIX-3842 Turn on back default bloomFilter for Phoenix Tables
  • PHOENIX-6705: PagedRegionScanner next throws NPE if pagedFilter is not initialized
  • PHOENIX-6699: Phoenix metrics overwriting DefaultMetricsSystem in RegionServers
  • PHOENIX-6697: log4j-reload4j is missing from phoenix-assembly
  • PHOENIX-6679: PHOENIX-6665 changed column name for CURRENT seqence values
  • PHOENIX-6616: Alter table command can be used to set normalization_enabled=true on salted tables
  • PHOENIX-6665: PreparedStatement#getMetaData() no longer fails on parametrized "select next ? values" sequence operations
  • PHOENIX-6658: Replace HRegion.get() calls
  • PHOENIX-6661: Sqlline does not work on PowerPC linux
  • PHOENIX-6636: Replace bundled log4j libraries with reload4j
  • PHOENIX-6656: Reindent NonAggregateRegionScannerFactory
  • PHOENIX-6645: Remove unneccessary SCN related properties from SYSTEM tables on upgrade
  • PHOENIX-6576: Do not use guava's Files.createTempDir()
  • PHOENIX-6441: Remove TSOMockModule reference from OmidTransactionProvider
  • PHOENIX-6638: Test suite fails with -Dwithout.tephra
  • PHOENIX-6591: Update OWASP plugin to latest
  • PHOENIX-6579: ACL check does not honor the namespace mapping for mapped views
  • PHOENIX-6596: Schema extraction double quotes expressions, resulting in un-executabe create statements
  • PHOENIX-5865: Column that has default value can not be correctly indexed
  • PHOENIX-6615: The Tephra transaction processor cannot be loaded anymore
  • PHOENIX-6618: Yetus docker image cannot be built as openjdk 11.0.11 is no longer available
  • PHOENIX-6604: Allow using indexes for wildcard topN queries on salted tables
  • PHOENIX-6600: Replace deprecated getCall with updated getRpcCall
  • PHOENIX-6594: Clean up vararg warnings flagged as errors by Eclipse
  • PHOENIX-6592: PhoenixStatsCacheLoader uses non-deamon threads
  • PHOENIX-6583: Inserting explicit Null into a (fixed length) binary field is stored as an array of zeroes
  • PHOENIX-6577: phoenix_sandbox.py incompatible with python3
  • PHOENIX-6528: When view index pk has a variable length column, read repair does not work correctly
  • PHOENIX-6507: DistinctAggregatingResultIterator should keep original tuple order of the AggregatingResultIterator
  • PHOENIX-6498: Fix incorrect Correlated Exists Subquery rewrite when Subquery is aggregate
  • PHOENIX-6472: In case of region inconsistency Phoenix should stop gracefully
  • PHOENIX-6344: CASCADE on ALTER should NOOP when there are no secondary indexes
  • PHOENIX-6555: Wait for permissions to sync in permission tests
  • PHOENIX-6578: sqlline.py cannot be started from source tree
  • PHOENIX-6574: Executing "DROP TABLE" drops all sequences
  • PHOENIX-6568: NullPointerException in phoenix-queryserver-client not in phoenix-client-hbase
  • PHOENIX-6548: Race condition when triggering index rebuilds as RegionServer closes
  • PHOENIX-6558: Update SpotBugs
  • PHOENIX-6563: Unable to use 'UPPER'/'LOWER' together with 'IN'
  • PHOENIX-6557: Fix code problems flagged by SpotBugs as high priority
  • PHOENIX-6556: Log INPUT_TABLE_CONDITIONS for MR jobs
  • PHOENIX-6550: Upgrade jetty, jackson and commons-io
  • PHOENIX-6546: BackwardCompatibilityIT testSystemTaskCreationWithIndexAsyncRebuild is flaky
  • PHOENIX-6547: BasePermissionsIT is still a bit flaky
  • PHOENIX-6543: De-flake AuditLoggingIT
  • PHOENIX-5072: Cursor query loops eternally with local index, returns fine without it
  • PHOENIX-6542: WALRecoveryRegionPostOpenIT is flaky
  • PHOENIX-6534: Upgrades from previous 4.10 versions are broken
  • PHOENIX-6486: Phoenix uses inconsistent chronologies internally, breaking pre-Gregorian date handling
  • PHOENIX-6519: Make SchemaTool work with lower case table and column names
  • PHOENIX-6518: Implement SHOW CREATE TABLE SQL command
  • PHOENIX-6506: Tenant Connection is not able to access or validate Global Sequences
  • PHOENIX-6454: Add feature to SchemaTool to get the DDL in specification mode
  • PHOENIX-6450: Checkstyle check is creating warnings for line length which are greater than 80
  • PHOENIX-6413: Having cannot resolve alias
  • PHOENIX-6476: Index tool when verifying from index to data does not correctly split page into tasks
  • PHOENIX-6515: Phoenix uses hbase-testing-util but does not list it as a dependency
  • PHOENIX-6510: Double-checked locking field must be volatile
  • PHOENIX-6514: Exception should be thrown

Changes in phoenix-connectors:

  • PHOENIX-6683: Surround the OR filters with parentheses while converting Spark filters to Phoenix expressions
  • PHOENIX-6694: Avoid unnecessary calls of fetching table meta data to region servers holding the system tables in batch oriented jobs in spark or hive otherwise those RS become hotspot
  • PHOENIX-6590: Handle rollbacks in Phoenix Spark connector and add way to control batch wise or task wise transactions
  • PHOENIX-6566: Shaded Phoenix connectors include restrictive log4j config files
  • PHOENIX-6524: Hive connector returns emtpy AND expression when all children are pushed down
  • PHOENIX-6490: Fix shaded Phoenix Hive connector jar name and reduce the size

Changes in phoenix-omid:

  • OMID-245: Add dependency management for Guava to use 32.1.1
  • OMID-244: Upgrade SnakeYaml version to 2.0
  • OMID-241: Add logging to TSO server crash
  • OMID-242: Bump Google Guice version to 5.1.0 to support JDK 17
  • OMID-239: OMID TLS support
  • OMID-214: Upgrade commons-io to 2.11.0
  • OMID-208: Pass additional options to omid.sh
  • OMID-202: Refactor Omid to use Netty 4
  • OMID-191: Fix missing executable permission because of MASSEMBLY-941
  • OMID-200: Omid client cannot use kerberos cache when using proxyUser
  • OMID-199: Omid client cannot use pre-authenticated UserGroupInformation.getCurrentUser()
  • OMID-194: OmidTableManager cannot create commit and timestamp tables in kerberos cluster
  • OMID-192: Fix missing jcommander dependency

Changes in phoenix-queryserver:

  • PHOENIX-6908: KerberosName$NoMatchingRule exception in QueryServer.PhoenixRemoteUserExtractor
  • PHOENIX-6704: sqlline-thin.py does not work with python3
  • PHOENIX-6762: Phoenix QueryServer cannot run correctly with python 3.8+
  • PHOENIX-6727: get_view_names() returning empty list
  • PHOENIX-6654: queryserver.py sets the umask to 0000 when starting PQS in daemon mode