=======================================================================================
New Features in the Oracle JDBC and UCP Release 23.4.0.24.05
=======================================================================================
** Mission Critical Features ** 

  - AI Vector Search: Datatype support in JDBC
  Starting with Oracle Database Release 23ai, a new Vector datatype is supported. VECTOR can be 
  declared as a table's column. The new OracleType.VECTOR, OracleType.VECTOR_INT8, 
  OracleType.VECTORFLOAT32, and OracleType.VECTORFLOAT64 can be used to represent Vector datatypes. 
  
  - New connection property sendBooleanAsNativeBoolean to restore the old behavior:
  JDBC 23.4 provides a compatibility property "oracle.jdbc.sendBooleanAsNativeBoolean", 
  when set to false (the default is true), will restore the old behavior of sending 
  integer values (0/1) for boolean data type. 
  
  - JDBC support for ARRAY ENQUEUE DEQUEUE with JSON payload type:
  Two new utility methods getJsonSchema() and isDualityView() are added in JDBC Thin driver
  for supporting JSON Duality Views. JSON payload with enqueue/dequeue calls will work correctly. 
  
** Java Performance and Scalability ** 

  - Improve sub-optimal response time with executeBatch:
  Batch DML operation (executeBatch and executeLargeBatch) were making multiple database calls to 
  execute resulting in  a sub-optimal performance.  With this change, these batch operations are 
  executed with a single database call eliminating the need for multiple calls thus reducing the 
  amount of time spent waiting for network I/O thus improving the performance. 
  
  - UCP - Add connection borrow fairness while creating new connections:
  UCP will look if there are any connections released and use those connections instead of creating a 
  brand new connetion thus improving the performance. 
  
** Security ** 
  
  - Add Thumbprint based cert selection in JDBC Thin driver:
  This feature adds a support for selecting certificate using thumbprint of the certificate 
  when multiple certificates are present in the keystore or  when wallet has multiple certificates. 
  The selected certificate is used for authenticating the client while TLS handshake.

  - EZConnect support for LDAPS/LADP:
  EZConnectPlus supported TCP and TCPS before. Now, EZConnect supports LDAPS/LADP protocol and its parameters. 
  This makes it easy to use LDAP/LDAPS.
  
=======================================================================================
New Features in the Oracle JDBC and UCP Release 23.3.0.23.09
=======================================================================================

** Mission Critical Features ** 

  - Self-Driven Diagnosability:
		This feature diagnoses the first occurrence of a failure in your Java app. It 
	records the critical execution state in memory and then dumps the recording on error. 

  - Sharding Enhancements:
		UCP support for split partition set, UCP support for XA transactions, 
	 and directory-based Sharding.

- Transparent Application Continuity (TAC) Enhancements:
		Server-side templates, Draining with batches, Session-State-Stable cursor support,
	and Auto-enabling on all Oracle JDBC data sources.

** Security ** 

  - Radius Challenge-Response Authentication (2FA):
 		The RADIUS challenge-response authentication is an interactive authentication, 
	where the RADIUS server asks for a valid response to a displayed challenge. 
		
  - Support for longer passwords:
	JDBC supports long passwords up to 1024 bytes, transparently without any API change.
	
  - Kerberos Authentication Enhancements: 
  		Kerberos authentication does not need instantiating the KerberosLoginModule or the 
	availability of Ticket Granting Ticket (TGT) in the CredentialCache.
	
** Java Performance and Scalability ** 

  - Support for Oracle True Cache Datasource: 
  		A True Cache instance is an in-memory, mostly diskless, fully functional, read-only
	replica of the primary Oracle Database. It resides in the middle-tier, co-located 
	with the application and is enabled at the JDBC level by setting the new 
	'oracle.jdbc.useTrueCacheDriverConnection' property to true.
		
  - DRCP (Multi-Pool & Tagging support):
		The new multi-pool feature allows sub-partitioning of the DRCP between several 
	applications by naming the sub-partitions using (POOL_NAME= <pool_name>) in the 
	connect string.
	
  - Reactive Extensions for UCP:
  		UCP asynchronous extension is a set of methods that extend the UCP standard to 
	offer asynchronous database access.
  
  - JDBC Support for Database Pipeline (using Reactive Programming):
		Pipelining is a form of network communication in which an application can send 
	multiple requests to a database server, without having to wait for a response. 
	The database sends a response when the results of each query are ready. 
	
  - Support for Data Load Mode in Reactive Streams Ingest (RSI):
  		The RSI allows fast data ingest into the Oracle database, using the direct path
	load and Reactive Streams mechanisms. To enable the DataLoad mode, you must use the 
	'useDataLoadMode' method.

** Ease of Development **

  - Built-in JDBC Config Providers (FileSystem, HTTPS):
 		Oracle JDBC supports centralized App config and resource providers through a new 
	extensibility or plugin mechanism based on the standard Service Provider Interface. 
	You can load three types of providers: Centralized Configuration Providers, 
	Resource Providers, and Trace Event Listener Providers.
  
  - JSON-Relational Duality Views:
  		JSON-relational duality views combine the advantages of using JSON documents with 
	the advantages of the relational model while avoiding the limitations of each. A 
	JSON-relational duality view exposes data stored in relational tables as JSON documents. 
  
  - Support for BEQ in JDBC-Thin:
		Bequeath protocol allows the database client (e.g., Java/JDBC application) and the 
	database server process residing on the same Linux host, to communicate directly 
	without the network layer and the network listener.
	
  - Native Boolean datatype:
  		Oracle JDBC Thin driver supports the oracle.jdbc.OracleType.BOOLEAN data type in 
	compliance with the ISO SQL standard. 

=======================================================================================
Important behavior changes in Oracle JDBC 23c 
=======================================================================================
  - setBoolean(int parameterIndex, boolean x): 
  		Starting from Oracle Database 23c, the JDBC-thin driver supports the BOOLEAN 
	SQL data type newly introduced in 23c Oracle database. When you call setBoolean() 
	method, the driver will send the value as a native BOOLEAN value as opposed to a 
	VARNUM(1/0) like in the previous releases. This might cause some incompatibility 
	issues in your current code. You can handle this by changing your code to either 
	a) change the parameter datatype of setBoolean() to a oracle.jdbc.OracleType.BOOLEAN 
	or b) call setInt instead of setBoolean. 
  
  - JDBC Logging:
  		Starting from Oracle Database 23c, diagnose-on-first-failure is ON by default. 
	This means that it records the critical execution state in memory, and then dumps 
	the recording on error. When you have the JDBC logging enabled, you may notice 
	an increased number of logs because of this feature. You can disable this feature 
	via -Doracle.jdbc.diagnostic.enableDiagnoseFirstFailure=false or using the 
	DiagnosticMBeans interface. 
	
  - ojdbcx_g.jar, ojdcxdms_g.jar, and dms.jar files are no longer required: 
  		Starting with Oracle JDBC 23c, the diagnosability is simplified and eliminates 
	the need to switch to debug jar files. The enhanced diagnosability works with 
	ojdbc8.jar or ojdbc11.jar in the class path for all usecases 
	(production, debug, metrics) and it does not require any of the additional debug 
	jars ojdbc8_g.jar, ojdbc8dms.jar, ojdbc8dms_g.jar, ojdbc11_g.jar, ojdbc11dms.jar, 
	ojdbc11dms_g.jar, and dms.jar. Therefore, we do not ship these debug jars from 23c. 
	
  - osdt_cert.jar and osdt_core.jar are not required:
    	Starting with Oracle Database 23c, oraclepki.jar has been redesigned and 
  	no longer requires the extra osdt_core.jar and osdt_cert.jar.
	
=======================================================================================
Deprecation or De-support notices in Oracle JDBC 23c 
=======================================================================================
  - Deprecation of Oracle JDBC-OCI driver or Type 2 Client Driver: 
		Most of the Java applications (99%) use Oracle JDBC Thin driver. Since, JDBC-OCI 
 	driver aka thick JDBC driver is no longer used by customers, we will be 
	de-supporting JDBC-OCI or Type 2 client driver starting from Oracle DB 24c release. 

  - De-support of oracle.jdbc.rowset: 
  		Starting with Oracle JDBC 23c, the oracle.jdbc.rowset package will no longer 
	be supported (the code has been removed). 
  
=======================================================================================
References and Resources 
=======================================================================================

JDBC and UCP Landing Page - www.oracle.com/jdbc 
Changes in this release for Oracle JDBC dev guide - https://docs.oracle.com/en/database/oracle/oracle-database/23/jjdbc/changes-this-release-oracle-database-jdbc-developers-guide.html#GUID-7800B599-D924-4284-ADEC-10E468842BD0
What’s in Oracle Database 23c for Java Developers? (technical brief)-
https://www.oracle.com/a/tech/docs/database/whats-in-oracledb23c-for-java-developers.pdf


JDBC and UCP Downloads Page - https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html
JDBC, UCP, OJVM, and Open Source Projects Timeline -https://www.oracle.com/a/tech/docs/database/jdbc-ucp-ojvm-timeline.pdf
Github location for Oracle Extensions - https://github.com/oracle-samples/ojdbc-extensions
Oracle R2DBC - https://github.com/oracle/oracle-r2dbc

=======================================================================================
Known Problems Fixed in the Patch Release 23.6.0.24.10
=======================================================================================
Bug 36719752 - CHANGE THE DEFAULT VALUE OF RETRY_DELAY AND TRANSPORT_CONNECTION_TIMEOUT
Bug 36407520 - APPLICATION CONTEXT CAN ONLY BE SET THROUGH SETCLIENTINFO AFTER CONNECTION HAS BEEN CREATED
Bug 36540636 - MUST USE CHAR TYPE WHEN QUERYING COLLATION,EBCDIC AS VARCHAR2 INCOMPATIBLE WITH DB2 VARCHAR
Bug 36680191 - CLOUD CREDENTIALS STORED IN WALLET
Bug 36113002 - TLS SSLCONTEXT CACHE FOR PERFORMANCE AND SESSION RESUMPTION
Bug 36691142 - SUPPORT FOR BINARY VECTOR
Bug 36098532 - JDBC SUPPORT FOR SESSIONLESS TRANSACTIONS
Bug 35596025 - TRUE_CACHE SUPPORT AC AND LOAD BALANCING
BUG-36695211 - MAKE JDBC (OJDBC17) AND UCP (UCP17) COMPATIBLE WITH JAKARTA
Bug 37102712 - MODE OF THE OJDBC AND UCP JARS SHOULD BE 644 NOT 640
Bug 37098502 - [SHARDING DRIVER] SINGLE SHARD TRANSACTION SUPPORT DOES NOT WORK WITH HIKARI POOL
Bug 37077452 - [SHARDING DRIVER] CONNECTION LEAK WHEN USING SHARDING DRIVER WITH HIKARI POOL
Bug 37046473 - UNABLE TO CONNECT TO DATABASE USING DB TOKEN GENERATED BY SERVICE PRINCIPAL
Bug 37003377 - INTERMITTENT JAVA.NET.SOCKETEXCEPTION: NETWORK IS UNREACHABLE WITH ENABLED TFO
Bug 36967743 - JDBC DRIVER 23.5.0.24.07 - DOUBLE PRECISION ISSUE IN JDBC DRIVER
Bug 36956128 - [SHARDING DRIVER]: MEMORY LEAKS OF T4CCONNECTION
Bug 36939716 - JSON DV & PERF : MEMORY LEAK IN UPDATE OPERATION ON DUALITY VIEW WITH RETURNING CLAUSE
Bug 36835939 - J2EE13_COMPLIANT SHOULD BE TRUE WHEN THE DMS JAR IS IN THE CLASSPATH
Bug 36784906 - BROKEN BATCHED INSERT AFTER UPGRADE FROM JDBC 21.13 TO 23.4
Bug 36744346 - TRACEEVENTLISTENER.TRACECONTEXT JAVADOC FOR GETDATABASEOPERATION METHOD IS WRONG
Bug 36476584 - CLIENT CONTEXT VALUES ARE RETURNED IN WRONG ORDER
Bug 36476156 - [CMAN-TDM] DISABLE LOB PREFETCH FOR JSON IS THROWING ORA-03106: FATAL TWO-TASK COMMUNICATION PROTOCOL


Bug 36591486 - UCP COMMITS AT CHECK-IN. NEED A KNOB TO CONTROL THIS BEHAVIOR: ROLLBACK/COMMIT
Bug 36962333 - UCP ConnectionLabelingCallback contract broken for shared pool

Note: The following bug exists but, is NOT fixed in 23.6 
Bug 36934985 - USING CALLABLE STATEMENTS WITH CLIENT CACHE RETURNS WRONG RESULTS.

=======================================================================================
Known Problems Fixed in the Patch Release 23.5.0.24.07
=======================================================================================
Bug 36449099 - TFO LIB INSTALLER
Bug 36708258 - DISABLE ANO NEGOTIATION SKIP OPTIMIZATION 
Bug 36692537 - INSTALLTFOLIB CANNOT GET RESOURCE FROM JAR FILE 
Bug 36588265 - ORA-17089 OR NULLPOINTEREXCEPTION FROM EXECUTEASYNCORACLE AND CLOSEASYNCORACLE METHODS 
Bug 36574135 - ADD A SERVICE PROVIDER FOR OSON
Bug 36569471 - [JUNIT] ORACLEJSONPARSER CREATEJSONBINARYPARSER INTERPRETS POSITIVE NUMBERS AS NEGATIVE 
Bug 36550135 - SETOBJECT AND SETORACLEOBJECT DOES NOT SUPPORT ORACLE.SQL.BOOLEAN DATUM 
Bug 36545854 - OPEN() AND CLOSE() METHODS OF ORACLEBLOB AND ORACLECLOB SHOULD BE DEPRECATED FOR REMOVAL 
Bug 36538499 - HOSTNAME SHOULD BE RESOLVED REMOTELY WHEN PROXY IS CONFIGURED 
Bug 36520733 - DEPRIORITIZE DESCRIPTIONS WHICH ALL ADDRESSES ARE MARKED DOWN 
Bug 36509180 - ORA-18706 FOR JSON LARGER THAN 32MB 
Bug 36477926 - EASY CONNECT URL AND LOAD BALANCING 
Bug 36277977 - RESULT SET CACHE CONFIGURE CACHE SIZE ON THE CLIENT 
Bug 36401045 - ASSERTIONERROR ON RESULT.GETSTRING() WHEN QUERYING VECTOR FROM RESULTSET CACHE 
Bug 36367926 - BOOLEAN ARRAY ARE NOT INSERTED CORRECTLY. 
Bug 36010937 - ORA-01017 FROM AZURE TOKEN WITHOUT A UPN CLAIM 
Bug 35483714 - Out Of Memory by too much T4CStatements 
Bug 35001121 - VBL JSON_SERIALIZE_LONGVARBINARY AND LONGVARCHAR FAILS WITH PROTOCOL VIOLATION 
Bug 36086468 - ORA-01461 DURING INSERT/UPDATE WITH BIND THAT INCLUDES SPECIAL CHARACTER 

Bug 35863011 - UCP: Get rid of "synchronized" on pool's startup - virtual threads are pinned to kernel thread.
Bug 36612980 - UCP: For connections creation failure in the background executor - no error cause gets attached  
Bug 36596110 - In shared-pool-config.xml, fast-connection-failover-enabled=false is not working 
Bug 36582076 - 23AI REGRESSION: SHARDING DRIVER(DATASOURCE) CREATES MULTIPLE INTERNAL UCP CONNECTION POOLS 
Bug 36516062 - Provide per-PoolDataSource connection creation modes switch 
Bug 36252580 - Support minimumIdle knob in UCP 

=======================================================================================
Known Problems Fixed in the Patch Release 23.4.0.24.05
=======================================================================================
Bug 36279736 - CONNECTION TO A PROXY USER FAILS WITH INVALID USERNAME/PASSWORD WHEN WALLET IS PROVIDED 
Bug 36187019 - LOB PROCESSING FAIL WHEN DB SET WITH EL8ISO8859P7 CHARACTER SET 
Bug 36152805 - GET CONNECTION AGAINST NORMAL PDB WITH TFO=ON SHOULD FAIL WITH ORA-18739 

=======================================================================================
Known Problems Fixed in the Patch Release 23.3.0.23.09
=======================================================================================
Bug 35641252 - TEST BUG: CREATING TABLE CONTAINS XMLTYPE/BFILE FAILED WITH ORA-43853
Bug 35627364 - [OPENLDAP] NPE WHEN OPENLDAP+TLS IS USED
Bug 35588441 - TEQ: INTERMITTENTLY NOT ABLE TO RECEIVE NOTIFICATION FOR NULL XMLTYPE PAYLOAD 
Bug 35475639 - JAVADOC: INCORRECT PREFIX FOR DIAGNOSTIC PROPERTIES IN JAVADOC IN ORACLEDRIVER.JAVA 
Bug 35403229 - PREPAREDSTATEMENT.GETPARAMETERMETADATA() FAILED WITH ORA-18734 
Bug 35365030 - JDK11: KPRB: PARSING XML TYPE FAILED WITH ORA-31011 
Bug 35360651 - DRCP: OPEN CURSORS SHOULD BE CLEANED UP AFTER IMPLICIT RELEASE
Bug 34605867 - PUBLISHER.SUBSCRIBE() REPORTS NOSUCHELEMENTEXCEPTION AND TIMEOUTEXCEPTION 
Bug 34396647 - ADDING SUBSCRIBER TO A PUBLISHED CONNECTION OBJECT FAILS WITH ORA-01017 
Bug 34124974 - AYSNC TEST RUNS FOR MORE THAN AN HOUR UNTIL 'NO SPACE LEFT ON DEVICE' WHEN LOGGING ENABLED 
Bug 34120266 - COMPLETABLEFUTURE.THENACCEPT() HANDS WHEN CONNECTION TO SHARED MODE DATABASE 
Bug 33627888 - ORACLECALLABLESTATEMENT.EXECUTEASYNCORACLE FAILING IN MULTITHREADED ENVIRONIMENT 
Bug 33586838 - WHEN MULTIPLE THREADS EXECUTINGRSET.PUBLISHERORACLE, INTERNALLY FORK JOIN POOL THREADS TAKING TIME TO READ DATA FROM BLOB 
Bug 33570676 - DEADLOCK WHEN MULTIPLE THREADS READING BFILE 
Bug 35043233 - JDBC-STRESS: BOOLEAN DATATYPE SUPPORT FOR SETOBJECT API 
Bug 34242298 - CALLING PROCEDURE CONTAINS BOOLEAN TYPE FAILS WITH ORA-01460 

Bug 34877464 - 23cBETA: Oracle Sharding DB: In WebLogic, UCP XA connection are reporting "UCP-45064: All connections in the Universal Connection Pool are in use"