- Extended support for HTTP proxy in driver options by @jkaflik in ClickHouse#1424
- Default implementation of column.IterableOrderedMap by @earwin in ClickHouse#1417
- Fix serialization for slices of OrderedMap/IterableOrderedMap (#1365) by @earwin in ClickHouse#1418
- Retry on broken pipe in batch by @jkaflik in ClickHouse#1423
- Add 'clickhouse-go-rows-utils' to third-party libraries by @EpicStep in ClickHouse#1413
- @earwin made their first contribution in ClickHouse#1418
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.29.0...v2.30.0
- Add ability to handle context cancellations for TCP protocol by @tinybit in ClickHouse#1389
- Add Examples for batch.Column(n).AppendRow in columnar_insert.go by @achmad-dev in ClickHouse#1410
- @achmad-dev made their first contribution in ClickHouse#1410
- @tinybit made their first contribution in ClickHouse#1389
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.28.3...v2.29.0
- Revert the minimum required Go version to 1.21 by @jkaflik in ClickHouse#1405
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.28.2...v2.28.3
- Validate connection in bad state before query execution in the stdlib database/sql driver by @jkaflik in ClickHouse#1396
- Update README with newer Go versions by @jkaflik in ClickHouse#1393
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.28.1...v2.28.2
- Recognize empty strings as a valid enum key by @genzgd in ClickHouse#1387
- ClickHouse 24.8 by @jkaflik in ClickHouse#1385
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.28.0...v2.28.1
- Fix Enum column definition parse logic to match ClickHouse spec by @jkaflik in ClickHouse#1380
- Fix support custom serialization in Nested type by @jkaflik in ClickHouse#1381
- Fix panic on nil map append by @jkaflik in ClickHouse#1383
- Remove test coverage for deprecated Object('JSON') type by @jkaflik in ClickHouse#1377
- Remove JSON type use from a context use example by @jkaflik in ClickHouse#1379
- Make sure non-secure port is used during readiness check by @jkaflik in ClickHouse#1382
- Deprecate Go 1.21 ended support and require Go 1.22 by @jkaflik in ClickHouse#1378
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.27.2...v2.28.0
- Optimize Date/Date32 scan by @ShoshinNikita in ClickHouse#1374
- Fix column list parsing for multiline INSERT statements by @Fiery-Fenix in ClickHouse#1373
- @Fiery-Fenix made their first contribution in ClickHouse#1373
- @ShoshinNikita made their first contribution in ClickHouse#1374
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.27.1...v2.27.2
- Fix INSERT statement normalization match backtick table name by @jkaflik in ClickHouse#1366
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.27.0...v2.27.1
v2.25.0 was released with a breaking change in ClickHouse#1306. Please review your implementation.
- Unpack value of indirect types in array column to support nested structures in interfaced slices/arrays by @jmaicher in ClickHouse#1350
- Common HTTP insert query normalization by @jkaflik in ClickHouse#1341
- Update examples std json by @xjeway in ClickHouse#1240
- ClickHouse 24.6 by @jkaflik in ClickHouse#1352
- ClickHouse 24.7 release by @jkaflik in ClickHouse#1363
- Update CHANGELOG with a breaking change note by @jkaflik in ClickHouse#1364
- @xjeway made their first contribution in ClickHouse#1240
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.26.0...v2.27.0
- Reintroduce the random connection strategy by @larry-cdn77 in ClickHouse#1313
- Make custom debug log function on-par with the built-in one by @vespian in ClickHouse#1317
- Remove date overflow check as it's normalised by ClickHouse server by @gogingersnap777 in ClickHouse#1315
- Batch: impl
Columns() []column.Interface
method by @egsam98 in ClickHouse#1277
- Fix rows.Close do not return too early by @yujiarista in ClickHouse#1314
- Setting
X-Clickhouse-SSL-Certificate-Auth
header correctly givenX-ClickHouse-Key
by @gogingersnap777 in ClickHouse#1316 - Retry on network errors and fix retries on async inserts with
database/sql
interface by @tommyzli in ClickHouse#1330 - BatchInsert parentheses issue fix by @ramzes642 in ClickHouse#1327
- ClickHouse 24.5 by @jkaflik in ClickHouse#1319
- Align
allow_suspicious_low_cardinality_types
andallow_suspicious_low_cardinality_types
settings in tests due to ClickHouse Cloud incompatibility by @jkaflik in ClickHouse#1331 - Use HTTPs scheme in std connection failover tests by @jkaflik in ClickHouse#1332
- @larry-cdn77 made their first contribution in ClickHouse#1313
- @vespian made their first contribution in ClickHouse#1317
- @gogingersnap777 made their first contribution in ClickHouse#1315
- @yujiarista made their first contribution in ClickHouse#1314
- @egsam98 made their first contribution in ClickHouse#1277
- @tommyzli made their first contribution in ClickHouse#1330
- @ramzes642 made their first contribution in ClickHouse#1327
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.25.0...v2.26.0
- Add a compatibility layer for a database/sql driver to work with sql.NullString and ClickHouse nullable column by @jkaflik in ClickHouse#1306
- Use Go 1.22 in head tests by @jkaflik in ClickHouse#1305
- Skip flaky 1127 test by @jkaflik in ClickHouse#1307
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.24.0...v2.25.0
- Always compress responses when the client compression is on by @zhkvia in ClickHouse#1286
- Optional flag to close query with flush by @hongker in ClickHouse#1276
- Fix prepare batch does not break on
values
substring in table name by @Wang in ClickHouse#1290 - Fix nil checks when appending slices of pointers by @markandrus in ClickHouse#1283
- Don't recreate keys from LC columns from direct stream by @genzgd in ClickHouse#1291
- @zhkvia made their first contribution in ClickHouse#1286
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.23.2...v2.24.0
- Fixed panic on concurrent context key map write by @Wang in ClickHouse#1284
- Fix ClickHouse Terraform provider version by @jkaflik in ClickHouse#1285
- @Wang made their first contribution in ClickHouse#1284
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.23.1...v2.23.2
- Zero-value timestamp to be formatted as toDateTime(0) in bind by @jkaflik in ClickHouse#1260
- Update #1127 test case to reproduce a progress handle when exception is thrown by @jkaflik in ClickHouse#1259
- Set max parallel for GH jobs by @jkaflik in ClickHouse#1261
- Ensure test container termination by @jkaflik in ClickHouse#1274
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.23.0...v2.23.1
- Implement
ConnBeginTx
as replacement for deprecatedBegin
by @FelipeLema in ClickHouse#1255
- Align error message assertion to new missing custom setting error formatting by @jkaflik in ClickHouse#1256
- CI chores by @jkaflik in ClickHouse#1258
- @FelipeLema made their first contribution in ClickHouse#1255
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.22.4...v2.23.0
- Fix column name with parantheses handle in prepare batch by @jkaflik in ClickHouse#1252
- Fix TestBatchAppendRows work different on cloud by @jkaflik in ClickHouse#1251
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.22.3...v2.22.4
- Fix panic on tuple scan on []any by @jkaflik in ClickHouse#1249
- Error channel deadlock fix test case by @threadedstream in ClickHouse#1239
- Add a test case for #1127 by @jkaflik in ClickHouse#1242
- Run cloud/head jobs when label by @jkaflik in ClickHouse#1250
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.22.2...v2.22.3
- Fix for Map columns with Enums by @leklund in ClickHouse#1236
- @leklund made their first contribution in ClickHouse#1236
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.22.1...v2.22.2
- Make errors channel buffered inside query() by @threadedstream in ClickHouse#1237
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.22.0...v2.22.1
- Support [n]byte/[]byte type Scan/Append to FixedString column by @rogeryk in ClickHouse#1205
- Enable cloud tests by @jkaflik in ClickHouse#1202
- Removed LowCardinality(UInt64) tests that caused allow_suspicious_low_cardinality_types related error by @jkaflik in ClickHouse#1206
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.19.0...v2.20.0
- handle ctx.Done() in acquire by @threadedstream in ClickHouse#1199
- Fix panic on format nil *fmt.Stringer type value by @zaneli in ClickHouse#1200
- Update Go/ClickHouse versions by @jkaflik in ClickHouse#1201
- @threadedstream made their first contribution in ClickHouse#1199
- @zaneli made their first contribution in ClickHouse#1200
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.18.0...v2.19.0
- Add WithAllocBufferColStrProvider string column allocator for batch insert performance boost by @hongker in ClickHouse#1181
- Fix bind for seconds scale DateTime by @jkaflik in ClickHouse#1184
- resolves #1163 debugF function is not respected by @omurbekjk in ClickHouse#1166
- @omurbekjk made their first contribution in ClickHouse#1166
- @hongker made their first contribution in ClickHouse#1181
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.17.1...v2.18.0
- fix panic in contextWatchDog nil pointer check by @nityanandagohain in ClickHouse#1168
- @nityanandagohain made their first contribution in ClickHouse#1168
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.17.0...v2.17.1
- Iterable ordered map alternative with improved performance by @hanjm in ClickHouse#1152
- Support bool alias type by @yogasw in ClickHouse#1156
- Update README - mention HTTP protocol usable only with
database/sql
interface by @jkaflik in ClickHouse#1160 - Fix README example for Debugf by @aramperes in ClickHouse#1153
- @yogasw made their first contribution in ClickHouse#1156
- @aramperes made their first contribution in ClickHouse#1153
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.16.0...v2.17.0
- Add sql.Valuer support for all types by @deankarn in ClickHouse#1144
- Fix DateTime64 range to actual supported range per ClickHouse documentation by @phil-schreiber in ClickHouse#1148
- @phil-schreiber made their first contribution in ClickHouse#1148
- @deankarn made their first contribution in ClickHouse#1144
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.15.0...v2.16.0
- Fix insertion of empty map into JSON column by using _dummy subcolumn by @leodido in ClickHouse#1116
- chore: specify method field on compression in example by @rdaniels6813 in ClickHouse#1111
- chore: remove extra error checks by @rutaka-n in ClickHouse#1095
- @leodido made their first contribution in ClickHouse#1116
- @rdaniels6813 made their first contribution in ClickHouse#1111
- @rutaka-n made their first contribution in ClickHouse#1095
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.14.2...v2.14.3
- Fix: Block stream read process would be terminated by empty block with zero rows by @crisismaple in ClickHouse#1104
- Free compressor's buffer when FreeBufOnConnRelease enabled by @cergxx in ClickHouse#1100
- Fix truncate ` for HTTP adapter by @beck917 in ClickHouse#1103
- docs: update readme.md by @rfyiamcool in ClickHouse#1068
- Remove dependency on github.com/satori/go.uuid by @srikanthccv in ClickHouse#1085
- @rfyiamcool made their first contribution in ClickHouse#1068
- @beck917 made their first contribution in ClickHouse#1103
- @srikanthccv made their first contribution in ClickHouse#1085
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.14.1...v2.14.2
- parseDSN: support connection pool settings (#1082) by @hanjm in ClickHouse#1084
- @hanjm made their first contribution in ClickHouse#1084
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.14.0...v2.14.1
- Add FreeBufOnConnRelease to clickhouse.Options by @cergxx in ClickHouse#1091
- Improving object allocation for (positional) parameter binding by @mdonkers in ClickHouse#1092
- Fix escaping double quote in SQL statement in prepare batch by @jkaflik in ClickHouse#1083
- Update Go & ClickHouse versions by @jkaflik in ClickHouse#1079
- Return status code from any http error by @RoryCrispin in ClickHouse#1090
- tests: fix dropped error by @alrs in ClickHouse#1081
- chore: unnecessary use of fmt.Sprintf by @testwill in ClickHouse#1080
- Run CI on self hosted runner by @jkaflik in ClickHouse#1094
- @cergxx made their first contribution in ClickHouse#1091
- @alrs made their first contribution in ClickHouse#1081
- @testwill made their first contribution in ClickHouse#1080
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.13.4...v2.14
- fix(proto): add TCP protocol version in query packet by @jkaflik in ClickHouse#1077
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.13.3...v2.13.4
- fix(column.json): fix bool type handling by @jkaflik in ClickHouse#1073
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.13.2...v2.13.3
- fix: update ch-go to remove string length limit by @jkaflik in ClickHouse#1071
- Test against latest and head CH by @jkaflik in ClickHouse#1060
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.13.1...v2.13.2
- fix: native format Date32 representation by @jkaflik in ClickHouse#1069
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.13.0...v2.13.1
- Support scan from uint8 to bool by @ValManP in ClickHouse#1051
- Binding arguments for AsyncInsert interface by @mdonkers in ClickHouse#1052
- Batch rows count API by @EpicStep in ClickHouse#1063
- Implement release connection in batch by @EpicStep in ClickHouse#1062
- Restore test against CH 23.7 by @jkaflik in ClickHouse#1059
- @ValManP made their first contribution in ClickHouse#1051
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.12.1...v2.13.0
- Fix InsertAsync typo in docs by @et in ClickHouse#1044
- Fix panic and releasing in batch column by @EpicStep in ClickHouse#1055
- Docs/changelog fixes by @jmaicher in ClickHouse#1046
- Clarify error message re custom serializaion support by @RoryCrispin in ClickHouse#1056
- Fix send query on batch retry by @EpicStep in ClickHouse#1045
- Update ClickHouse versions by @jkaflik in ClickHouse#1054
- @et made their first contribution in ClickHouse#1044
- @EpicStep made their first contribution in ClickHouse#1055
- @jmaicher made their first contribution in ClickHouse#1046
- @RoryCrispin made their first contribution in ClickHouse#1056
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.12.0...v2.12.1
- Implement elapsed time in query progress by @jkaflik in ClickHouse#1039
- Release connection slot on connection acquire timeout by @sentanos in ClickHouse#1042
- @sentanos made their first contribution in ClickHouse#1042
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.11.0...v2.12.0
- Retry for batch API by @djosephsen in ClickHouse#941
- Fix startAutoCloseIdleConnections cause goroutine leak by @YenchangChan in ClickHouse#1011
- Fix netip.Addr pointer panic by @anjmao in ClickHouse#1029
- Git actions terraform by @gingerwizard in ClickHouse#1023
- @YenchangChan made their first contribution in ClickHouse#1011
- @djosephsen made their first contribution in ClickHouse#941
- @anjmao made their first contribution in ClickHouse#1029
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.10.1...v2.11.0
- Update outdated README.md by @kokizzu in ClickHouse#1006
- Remove incorrect usage of KeepAlive in DialContext by @jkaflik in ClickHouse#1009
- @kokizzu made their first contribution in ClickHouse#1006
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.10.0...v2.10.1
- Support [16]byte/[]byte typed scan/append for IPv6 column by @crisismaple in ClickHouse#996
- Add custom dialer option to http protocol by @stephaniehingtgen in ClickHouse#998
- Tuple scan respects both value and pointer variable by @crisismaple in ClickHouse#971
- Auto close idle connections in native protocol in respect of ConnMaxLifetime option by @jkaflik in ClickHouse#999
- @stephaniehingtgen made their first contribution in ClickHouse#998
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.9.3...v2.10.0
- Pass http.ProxyFromEnvironment configuration to http.Transport by @slvrtrn in ClickHouse#987
- Use
any
instead ofinterface{}
by @candiduslynx in ClickHouse#984
- @candiduslynx made their first contribution in ClickHouse#984
- @slvrtrn made their first contribution in ClickHouse#987
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.9.1...v2.9.2
- Do not return hard error on unparsable version in HTTP proto by @hexchain in ClickHouse#975
- Return ErrBadConn in stdDriver Prepare if connection is broken by @czubocha in ClickHouse#977
- @czubocha made their first contribution in ClickHouse#977
- @hexchain made their first contribution in ClickHouse#975
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.9.0...v2.9.1
- External tables support for HTTP protocol by @crisismaple in ClickHouse#942
- Support driver.Valuer in String and FixedString columns by @jkaflik in ClickHouse#946
- Support boolean and pointer type parameter binding by @crisismaple in ClickHouse#963
- Support insert/scan IPv4 using UInt32/*UInt32 types by @crisismaple in ClickHouse#966
- Reset the pointer to the nullable field by @xiaochaoren1 in ClickHouse#964
- Enable to use ternary operator with named arguments by @crisismaple in ClickHouse#965
- chore: explain async insert in docs by @jkaflik in ClickHouse#969
- @xiaochaoren1 made their first contribution in ClickHouse#964
Full Changelog: https://github.com/ClickHouse/clickhouse-go/compare/v2.8.3...v2.9.0
- Revert: Expire idle connections no longer acquired during lifetime #958 by @jkaflik
- Expire idle connections no longer acquired during lifetime #945 by @jkaflik
- Fix idle connection check for TLS connections #951 by @jkaflik & @alekar
- Support customized "url path" in http connection #938 by @crisismaple
- Allow Auth.Database option to be empty #926 by @v4run
- Bump github.com/stretchr/testify from 1.8.1 to 1.8.2 #933
- fix: small typo in the text of an error #936 by @lspgn
- Improved bug template #916 by @mshustov
- fix: fix connect.compression's format verb #924 by @mind1949
- Add extra padding for strings shorter than FixedColumn length #910 by @jkaflik
- Bump github.com/andybalholm/brotli from 1.0.4 to 1.0.5 #911
- Bump github.com/paulmach/orb from 0.8.0 to 0.9.0 #912
- Bump golang.org/x/net from 0.0.0-20220722155237-a158d28d115b to 0.7.0 #928
- Fix array parameter formatting in binding mechanism #921 by @genzgd
- Fixed concurrency issue in stdConnOpener #918 by @jkaflik
- Fixed
lib/binary/string_safe.go
for non 64bit arch #914 by @atoulme
- Fix decimal encoding with non-standard exponential representation #909 by @vogrelord
- Add extra padding for strings shorter than FixedColumn length #910 by @jkaflik
- Remove Yandex ClickHouse image from Makefile #895 by @alexey-milovidov
- Remove duplicate of error handling #898 by @Astemirdum
- Bump github.com/ClickHouse/ch-go from 0.51.2 to 0.52.1 #901
- Do not reuse expired connections (
ConnMaxLifetime
) #892 by @iamluc - Extend default dial timeout value to 30s #893 by @jkaflik
- Compression name fixed in sendQuery log #884 by @fredngr
- Client info specification implementation #876 by @jkaflik
- Better handling for broken connection errors in the std interface #879 by @n-oden
- Document way to provide table or database identifier with query parameters #875 by @jkaflik
- Bump github.com/ClickHouse/ch-go from 0.51.0 to 0.51.2 #881
- Flag connection as closed on broken pipe #871 by @n-oden
- Buffered compression column by column for a native protocol. Introduces the
MaxCompressionBuffer
option - max size (bytes) of compression buffer during column-by-column compression (default 10MiB) #808 by @gingerwizard and @jkaflik - Support custom types that implement
sql.Scanner
interface (e.g.type customString string
) #850 by @DarkDrim - Append query options to the context instead of overwriting #860 by @aaron276h
- Query parameters support #854 by @jkaflik
- Expose
DialStrategy
function to the user for custom connection routing. #855 by @jkaflik
- Close connection on
Cancel
. This is to make sure context timed out/canceled connection is not reused further #764 by @gingerwizard - Fully parse
secure
andskip_verify
in DSN query parameters. #862 by @n-oden
- Added tests covering read-only user queries #837 by @jkaflik
- Agreed on a batch append fail semantics #853 by @jkaflik
- Fix in batch concurrency - batch could panic if used in separate go routines.
The issue was originally detected due to the use of a batch in a go routine and Abort being called after the connection was released on the batch. This would invalidate the connection which had been subsequently reassigned.
This issue could occur as soon as the conn is released (this can happen in a number of places e.g. after Send or an Append error), and it potentially returns to the pool for use in another go routine. Subsequent releases could then occur e.g., the user calls Abort mainly but also Send would do it. The result is the connection being closed in the release function while another batch or query potentially used it.
This release includes a guard to prevent release from being called more than once on a batch. It assumes that batches are not thread-safe - they aren't (only connections are).
- Don't panic on
Send()
on batch after invalidAppend
. #830 - Fix JSON issue with
nil
if column order is inconsisent. #824
- Patch release to fix "Regression - escape character was not considered when comparing column names". #828
- Support for Nullables in Tuples. #821 #817
- Use headers for auth and not url if SSL. #811
- Support additional headers. #811
- Support int64 for DateTime. #807
- Support inserting Enums as int8/int16/int. #802
- Print error if unsupported server. #792
- Allow block buffer size to tuned for performance - see
BlockBufferSize
. #776 - Support custom datetime in Scan. #767
- Support insertion of an orderedmap. #763
- Decompress errors over HTTP. #792
- Use
timezone
vstimeZone
so we work on older versions. #781 - Ensure only columns specified in INSERT are required in batch. #790
- Respect order of columns in insert for batch. #790
- Handle double pointers for Nullable columns when batch inserting. #774
- Use nil for
LowCardinality(Nullable(X))
. #768
- Align timezone handling with spec. #776, specifically:
- If parsing strings for datetime, datetime64 or dates we assume the locale is Local (i.e. the client) if not specified in the string.
- The server (or column tz) is used for datetime and datetime64 rendering. For date/date32, these have no tz info in the server. For now, they will be rendered as UTC - consistent with the clickhouse-client
- Addresses bind when no location is set