All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- SetLogger accept github.com/go-logr/logr.Logger
- Update to Go 1.15 as minimal required version.
- NumberAsString option
- Queue.PurgeExpired
- By default, return Number for numbers (not string)
- Always run session Init functions
- Fix Queue.Dequeue to work with non-existing MsgID (#201).
- Object{,Collection}.FromJSON
- Object{,Collection}.{AsMap,ToJSON}
- DeqOptions.MsgID changed from string to []byte
- Add github.com/godror/knownpb/timestamppb.Timestamp
- Remove pbTimestamp (behind timestamppb tag), github.com/UNO-SOFT/knownpb/timestamppb implements driver.Valuer and sql.Scanner.
- ODPI-C v4.3.0
- Add NewTempLob to the Conn interface for #189.
- Remove ObjectType.NewData, to get rid of the dependency on *conn in ObjectType, for #172
- Size, ReadAt methods to dpiLobReader
- Instead of Log package-level variable, use SetLog or SetLogger.
- Batch type for batching ExecContext calls.
- Add support for native JSON type support (for DB21.3)
- Fix lobReader buffering which caused short reads.
- Implement use of "google.golang.org/protobuf/types/known/timestamppb".Timestamp, behind the timestamppb tag
- Use dpiConn_setCallTimeout for faster recovers.
- Faster setTraceTag, drv.init.
- Buffer dpiLobReader.Read with chunk-sized reads for
- avoiding io.ReadAll short read and
- performance
- Go 1.14 minimum requirement
- Add stmtCacheSize, poolMaxSessionPerShard, poolPingInterval params
- OnInit use context.Context
- Use ODPI-C v4.2.1
- IsBadConn to check for the several error numbers all indicate connection failure
- noTimezoneCheck flag in connection string to suppress the WARNING printout
- tests use GODROR_TEST_DSN env var
- GetCompileErrors requires context.Context.
- ObjectType became a pointer (uses a mutex, must be a pointer)
- NewDriver() to return a new driver - and drv.Close() method.
- Fix NewPassword handling to allow password change.
- All OCI/ODPI calls encapsulated in runtime.LockOSThread / runtime.UnlockOSThread to force the error retrieving be on the same OS thread - it seems that OCI stores the last error on some kind of thead-local-storage.
- doc/timezone.md for documentation about time zones
- Set DefaultPrefetchCount = DefaultArraySize (=100), from the previous 2.
- Use SESSIONTIMEZONE instead of DBTIMEZONE.
- Use ODPI-C v4.1.0
- Compose/Decompose implementation for Number and num.OCINum.
- Obey context deadlines everyewhere by calling OCIBreak on timeout/cancelation.
- Fix Break (context cancelation/timeout) handling for good.
- GetFileName method to DirectLob.
- DeqOptions.Delay, Expiration and Wait became a time.Duration
- Use ODPI-C v4.0.2
- Allow specifying Enq/DeqOptions in NewQueue.
- Changed the default Enq/Deq Queue options to the Oracle defaults.
- Document that Go 1.13 is required (for sql.NullInt32).
- SELECT ROWID as string (no need for the ''||ROWID workaround).
- Documentation at godror.github.io/godror
- Separate documentation under doc/
- Only allow user/passwd@sid for old-style connection strings.
- New, logfmt-formatted dataSourceName with connectString included as what's the old connection string. As the old format is accepted, this is backward-compatible.
- Rename DSN to ConnectString in ConnectionParams - BACKWARD INCOMPATIBLE CHANGE!
- Password, a new type to hide secrets - BACKWARD INCOMPATIBLE CHANGE!
- Timezone getting logic when TZ is not UTC.
- Better caching of timezone information
- Allow uint16, int8, int16, sql.NullInt32 types for Data.Set.
- Allow specifying OCI lib path and config dir
- Fixed TimeZone caching and lock issues.
- PrefetchCount statement option to set prefetch row count.
- Use ODPI-C v4.0.0
- Deprecate FetchRowCount in favor of FetchArraySize.
- Add Finalizer for conn, statement and rows, prints ugly stack trace on forgotten Close()s.
- Add NullDateAsZeroTime option.
- Add GetPoolStats to Conn to get the pool statistics.
- Make standaloneConnection the default - pools have problems.
- Innards of ConnectionParams has been split to ConnParams and PoolParams,
- NewConnector needs ConnParams and PoolParams instead of the connection URL.
- ConnectionParams.SID has been renamed to DSN.
- Simplified pool usage and coding, just depend on the underlying ODPI-C library's reference counting.
- Support connection sharding (thanks to Anthony Tuininga)
- Implement SessionResetter and Validator, releasing session back to the Oracle session pool ASAP, acquiring a fresh connection in ResetSession, helping failover.
- Make NumberAsString() the default.
- Remove NumberAsString() and MagicConversion() Options.
- Dummy .go files to allow vendoring with "go mod vendor".
- NewSubscription got ...SubscriptionOption optional arguments.
- Fix Data.SetTime
- BoolToString option to convert from bool to string for DML statements.
- INTERVAL YEAR TO MONTHS format changes from %dy%dm to %d-%d, as Oracle uses it.
- Accept time.Duration and insert it as INTERVAL DAY TO SECOND.
- NullTime to handle NULL DATE columns
- Return NullTime instead of time.Time for interface{} destination in column description.
- onInit parameter in the connection url (and OnInit in ConnectionParams)
- export Drv to be able to register new driver wrapping *godror.Drv.
- ContextWithUserPassw requires a connClass argument, too.
- Make Data embed dpiData, not *dpiData