Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
51defbe
Added support for Fetch One and returning dates as date string
Dec 15, 2019
1e8cfd0
Added support for fetching values of a single column as an array
Dec 15, 2019
e8fbbca
Make fetch key pair mode work
Dec 15, 2019
67b0555
update credit
Dec 15, 2019
b76bdaa
Use SeasClickException exception class
Dec 15, 2019
e62cee5
PHP5 compat
iliaal Apr 6, 2020
231c4d3
Merge branch 'master' into master
iliaal Apr 14, 2020
8c0a6da
Permissions
iliaal Apr 15, 2020
a7a068f
Fixed typo in name
iliaal Apr 15, 2020
776ea00
timeouts
iliaal Apr 15, 2020
a1a3ec8
Added support for ping()
iliaal Apr 15, 2020
857b842
Added support for composite arrays
iliaal Apr 28, 2020
bb8756c
Added support for hex values for numbers
iliaal May 8, 2020
88e10f4
Added timezone conversion work-around
iliaal May 16, 2020
67a42c4
date fixes
iliaal May 26, 2020
ccbdb1d
date timezone fix
iliaal Jul 7, 2020
3d02105
Fixed 7.4 compilation
iliaal Oct 14, 2021
1757fc6
Merge upstream/master into PR #4
iliaal Apr 25, 2026
ee63b94
Drop PHP 5 support, simplify wrapper layer
iliaal Apr 25, 2026
3f65ca5
Upgrade vendored clickhouse-cpp to v2.6.1 and expose new column types
iliaal Apr 25, 2026
c3c0038
Add Map(String, String) row I/O and rework tests 006-008 for env config
iliaal Apr 25, 2026
5ce4427
Expose v2 connection knobs and query_id
iliaal Apr 25, 2026
3d6ed97
Add Date32, Time, Time64, Int128, UInt128, Decimal128 column types
iliaal Apr 25, 2026
ae7b02f
Extend Map row I/O to (String,String|Int64|UInt64|Float64) and (Int64…
iliaal Apr 25, 2026
4e8d9cd
Add optional TLS/SSL build via --enable-SeasClick-openssl
iliaal Apr 25, 2026
fb712aa
Add .phpt coverage for v2.x types and v2 connection options
iliaal Apr 25, 2026
1ba2da3
Add explicit <cstdint> in vendored types.h and numeric.h (gcc-15 fix)
iliaal Apr 25, 2026
b4909fe
Rename extension to php_clickhouse, classes to ClickHouse[Exception]
iliaal Apr 25, 2026
183d124
Move benchmarks out of tests/ to top-level bench/
iliaal Apr 25, 2026
a0a943c
Add project meta: README, CHANGELOG, CONTRIBUTING, SECURITY, composer…
iliaal Apr 25, 2026
f074eb3
Add GitHub Actions CI
iliaal Apr 25, 2026
87b5644
Drop .travis.yml; expand CI; add README badges
iliaal Apr 25, 2026
154223c
CI fixes: rename SKIPIF guards, env-driven config in legacy tests, Fi…
iliaal Apr 25, 2026
648687a
Rename CI guard step + skip messages to avoid self-referencing the guard
iliaal Apr 25, 2026
5734493
CI: fix Date32 test TZ flakiness; align ASan flags; mark ASan job as …
iliaal Apr 25, 2026
2d4ffe8
CI: kill bundled extensions on the runner; deterministic ordering in 007
iliaal Apr 25, 2026
5344a04
CI: re-add json extension; deterministic order in test 006
iliaal Apr 25, 2026
6690bb2
Re-baseline 6 skipped tests; fix Date insertColumn TZ + Nullable(Enum…
iliaal Apr 25, 2026
489528e
Add coverage for ping, BC aliases, TLS, writeStart query_id, default …
iliaal Apr 25, 2026
93c34b9
Polish README; drop unmaintained one-ck from benchmark comparison
iliaal Apr 25, 2026
27cc38b
CI: drop the LD_PRELOAD that triggers "incompatible ASan runtimes"
iliaal Apr 25, 2026
2b18dbd
CI: allowlist tests/026.phpt in the SeasClick naming guard
iliaal Apr 25, 2026
6181548
Silence compile warnings on PHP 7.4-8.5 builds
iliaal Apr 25, 2026
00a2e2f
Harden security and lifecycle paths flagged by the parallel review
iliaal Apr 25, 2026
063af05
sanitizeError: hoist length cap to a define and bump to 4096
iliaal Apr 25, 2026
9b56c99
More correctness fixes from the parallel review
iliaal Apr 25, 2026
f34c794
Dead-code sweep: drop unused macros, includes, and scaffolding
iliaal Apr 25, 2026
3747d79
Template-collapse integer and date read paths
iliaal Apr 25, 2026
f536760
Template-collapse Map insert + retire SC_HASHTABLE_FOREACH_START2
iliaal Apr 25, 2026
9dfbf6c
Patch vendored ColumnStringBlock::AppendUnsafe + housekeeping
iliaal Apr 25, 2026
ba179cd
CI: promote ASan job to gating; trim suppressions to what's still needed
iliaal Apr 25, 2026
8d3fa70
CI ASan: switch to -shared-libasan to fix __cxa_throw interception
iliaal Apr 25, 2026
c6952cb
Release 0.6.0
iliaal Apr 25, 2026
dfc62df
0.7.0: settings, typed params, progress, statistics, exception fields
iliaal Apr 26, 2026
a846686
Bootstrap shared release flow (/release-ext)
iliaal Apr 26, 2026
f42bce1
Migrate to stub-driven arginfo
iliaal Apr 26, 2026
508509d
Polyfill stub-driven arginfo for pre-8.4 PHP
iliaal Apr 26, 2026
081ec7b
tests/037: catch Throwable for cross-version callable rejection
iliaal Apr 26, 2026
55d9e6f
Release 0.7.0
iliaal Apr 26, 2026
407aaef
SECURITY.md: bump supported-versions table to 0.7.x
iliaal Apr 26, 2026
0b4bda1
docs: rewrite README with hero image and Performance Toolkit cross-link
iliaal Apr 26, 2026
d22ff42
docs(readme): drop em dashes per voice rules
iliaal Apr 26, 2026
c164322
0.8.0: per-object state, ZTS, Windows, streaming, DDL helpers
iliaal Apr 27, 2026
1999823
ci: switch Windows job to php/php-windows-builder/extension
iliaal Apr 27, 2026
4723f0a
config.w32: define NOMINMAX, add /bigobj
iliaal Apr 27, 2026
e27137d
typesToPhp: fall back to _mkgmtime on MSVC
iliaal Apr 27, 2026
bf819d0
cityhash: gate config.h include behind HAVE_CONFIG_H
iliaal Apr 27, 2026
61df729
ci: run phpt suite on Windows + offline surface smoke
iliaal Apr 27, 2026
9dd37c2
ci: allowlist tests/051 for the SeasClick guard, add Windows release …
iliaal Apr 27, 2026
4619fdb
docs(readme): refresh platform support matrix for 0.8.0
iliaal Apr 27, 2026
4710168
0.8.0: Map matrix expansion + DDL identifier rejection coverage
iliaal Apr 27, 2026
1c06767
docs(readme): expand Map matrix coverage, list geo + LC(Nullable)
iliaal Apr 27, 2026
515f1bc
0.8.0: smi2-style ergonomics — chainable setters + exception getters
iliaal Apr 27, 2026
39ef767
0.8.0: ClickHouseStatement result wrapper via selectStatement()
iliaal Apr 27, 2026
f743da4
ci(php7_wrapper): shim IS_MIXED on PHP 7.4 so mixed parameter types c…
iliaal Apr 27, 2026
063fb64
0.8.0: setVerbose() for protocol-level lifecycle tracing
iliaal Apr 27, 2026
15e5bf8
setVerbose: declare $sink as mixed for PHP 7.4 compatibility
iliaal Apr 27, 2026
15088ca
Modernize string parameters: "s" -> "S" / zend_string * across PHP_ME…
iliaal Apr 28, 2026
0cc94e9
Declare clickhouse-cpp upstream for /release-ext freshness gate
iliaal Apr 28, 2026
6cf8f41
ci: validate composer.json on PR; switch Windows release upload trigg…
iliaal Apr 28, 2026
93a3eec
ci: add PIE install smoke job (PHP 8.4, base build without TLS)
iliaal Apr 28, 2026
af2c125
Bump require.php floor to >=7.4 (drop 7.1-7.3, never tested in CI)
iliaal Apr 28, 2026
9bcebd3
Ship pre-built Linux/macOS binaries via php/pie-ext-binary-builder
iliaal Apr 28, 2026
12bf846
Harden type conversion and connection-option boundaries
iliaal Apr 30, 2026
631d11c
Guard ZEND_ACC_NOT_SERIALIZABLE behind PHP_VERSION_ID >= 80100
iliaal Apr 30, 2026
be355ca
Address code-review findings across conversion and callback paths
iliaal Apr 30, 2026
b942f91
Round 2: harden insert / Map decode / callback / state-recovery paths
iliaal Apr 30, 2026
ef4d02f
Round 3: FAST_ZPP migration + simplification sweep
iliaal Apr 30, 2026
e7c00c5
CR-013: drop call_user_function dispatch on internal helpers
iliaal Apr 30, 2026
7e4169e
Public-API consistency: setSettings key validation, setVerbose(null)
iliaal Apr 30, 2026
38b8b1d
Round 4: insert-side depth guard, locale-safe doubles, streaming leak…
iliaal Apr 30, 2026
1e3dcca
Round 5: Map decoder hoist, shared insert transpose, RAII sweep
iliaal Apr 30, 2026
c1313b0
Declare ext/json dependency in composer.json and build configs
iliaal Apr 30, 2026
125767e
Round 6: Z_PARAM_ARRAY enforcement, Map narrow-int + Int128 bounds
iliaal Apr 30, 2026
62e2032
Round 7: hex-literal NUL-byte rejection, FETCH_KEY_PAIR coercion symm…
iliaal Apr 30, 2026
82275dd
ci: suppress UBSan pointer-overflow false positive in vendored LZ4
iliaal Apr 30, 2026
c840375
Release 0.8.0
iliaal Apr 30, 2026
9a58c4e
Round 8: reentry guard, SQL-comment placeholder, strict numeric / dat…
iliaal Apr 30, 2026
02cc5f6
Round 9: structural placeholder validator, strict numerics across Map…
iliaal Apr 30, 2026
3a3e33e
Ignore .codex/ alongside the other local AI tooling scaffolds
iliaal Apr 30, 2026
5672662
Round 10: single-token placeholders, NULL guard, DateTime64 fractiona…
iliaal Apr 30, 2026
4b3f91a
Round 11: enum strict insert validation, PHP 8.5 reflection deprecati…
iliaal Apr 30, 2026
5316075
Round 12: insert shape check, UInt64 readback, write() recovery
iliaal May 1, 2026
9c927b3
Round 13: write() row-width check, partial-commit rollback, UInt64 st…
iliaal May 1, 2026
61da8a8
Round 14: destructor rollback, drop column-major transpose materializ…
iliaal May 1, 2026
7fefbde
Round 15: server-side EndInsert recovery, drop insertAssoc full-copy
iliaal May 1, 2026
4e7c6e4
Round 16: insertAssoc strict key-set validation, insert() pre-send di…
iliaal May 1, 2026
1a8fa32
Round 17: BeginInsert() recovery, no per-key string copies in insertA…
iliaal May 1, 2026
c91989f
tests/094: isolate BeginInsert recovery probe from stale db state
iliaal May 1, 2026
aa3a673
Release 0.8.1
iliaal May 1, 2026
c3b2417
Replace XtOffsetOf with offsetof for PHP 8.6 compatibility
iliaal May 5, 2026
616b692
tests: add --EXTENSIONS-- fast-path alongside server-probe SKIPIF
iliaal May 5, 2026
7714bb8
docs(readme): add fastchart to PHP Performance Toolkit cross-promo
iliaal May 6, 2026
3b5f658
ci: load test extension via extension_dir + basename
iliaal May 6, 2026
0f8a904
ci: drop macOS Intel (macos-13) from release prebuilt matrix
iliaal May 6, 2026
0973c0d
ci: stage built extension into system extension_dir before tests
iliaal May 6, 2026
404a8f1
feat: selectWithExternalData() for in-memory IN-clause tables
iliaal May 11, 2026
cd150a3
feat: selectToStream() writes TSV/CSV directly to a PHP stream
iliaal May 11, 2026
4bfffef
feat: insertFromStream() streams TSV/CSV files into INSERTs
iliaal May 11, 2026
a14c7c1
fix: TSV escape split across 64 KiB chunk silently corrupts; do_selec…
iliaal May 11, 2026
a9010a1
perf: skip zend_string round-trip for already-IS_STRING cells; pre-si…
iliaal May 11, 2026
7f3211c
refactor: collapse StreamOutFormat / InsertStreamFormat into one Stre…
iliaal May 11, 2026
cfd483d
fix: TSV \N must be the whole cell; reject \N followed by other data
iliaal May 11, 2026
cb9b672
fix: insertFromStream — NULL into non-Nullable, dropped quoted-empty …
iliaal May 11, 2026
3aca205
fix: insertFromStream — read errors must not commit partial data; rej…
iliaal May 11, 2026
9023dd1
tests: suppress PHP 7.4 pre-throw warning on non-resource selectToStr…
iliaal May 11, 2026
be03c0e
tests/070: skip on PHP 8.1+ pending rewrite
iliaal May 11, 2026
135d694
Release 0.8.5
iliaal May 11, 2026
29c02a4
Replace README hero image
iliaal May 12, 2026
8c51320
fix: reject invalid writes and recover stream callbacks
iliaal May 17, 2026
655454f
Fix nulls in nullable array typed params
iliaal May 17, 2026
cb3a6ee
Fix CodeSage review findings
iliaal May 18, 2026
a0d8981
Fix review regressions
iliaal May 18, 2026
54c8f7f
README: note unzip requirement for pie install
iliaal May 21, 2026
3474115
tests/119: convert PHP 7.4 warning to throw for getServerUptime arity
iliaal May 21, 2026
c3a7337
fix in-tree builds
henderkes May 22, 2026
fc0cd9d
docs(readme): correct fastchart cross-promo (26 types, SVG-canonical,…
iliaal Jun 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
62 changes: 62 additions & 0 deletions .github/workflows/release-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Release Linux & macOS binaries

# Triggered when a GitHub Release is published. Builds .so binaries for
# Linux glibc (x86_64 + arm64) and macOS arm64 at PHP 8.4 + 8.5 (NTS
# only, ZTS lives in the Windows lane), uploads each as a release asset
# via php/pie-ext-binary-builder using PIE's pre-packaged-binary naming
# convention. PIE's `pie install iliaal/php_clickhouse` then resolves
# the prebuilt asset matching the host arch/os/libc/PHP-version instead
# of building clickhouse-cpp from source (~3-5 min compile).
#
# Coverage matrix: 3 lanes x 2 PHP = 6 prebuilt assets per release.
#
# macOS Intel (macos-13) is intentionally absent: GitHub's Intel runner
# pool is too contended to ship reliably, and macOS 26 drops Intel
# support anyway. Intel-Mac users get source-build via PIE's
# composer-default fallback.
#
# Linux musl is deferred: shivammathur/setup-php in Alpine containers
# needs more setup; users on musl get source-build via PIE's
# composer-default fallback meanwhile.
#
# This workflow + the existing release-windows.yml together produce
# 6 Linux/macOS + 12 Windows = 18 prebuilt assets per release.

on:
release:
types: [published]

jobs:
build:
name: ${{ matrix.os }} php ${{ matrix.php }}
runs-on: ${{ matrix.os }}
permissions:
contents: write
strategy:
fail-fast: false
matrix:
# ubuntu-latest (24.04 x86_64), ubuntu-24.04-arm (arm64),
# macos-14 (Apple Silicon arm64).
# Pinned over `*-latest` to avoid silent runner shifts.
os:
- ubuntu-latest
- ubuntu-24.04-arm
- macos-14
php:
- '8.4'
- '8.5'
steps:
- uses: actions/checkout@v6

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: none

- name: Build and upload prebuilt binary
uses: php/pie-ext-binary-builder@0.0.3
with:
release-tag: ${{ github.event.release.tag_name }}
github-token: ${{ secrets.GITHUB_TOKEN }}
configure-flags: '--enable-clickhouse'
55 changes: 55 additions & 0 deletions .github/workflows/release-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Release Windows binaries

# Triggered when a GitHub Release is published (manual or from a tag push
# via /release-ext). Builds the extension on every supported PHP version
# x architecture x thread-safety variant on Windows runners, then
# uploads each .dll as a release asset following the PIE-compatible
# naming convention (php_<ext>-<version>-<php_x.y>-<ts|nts>-vs17-<arch>.zip).
#
# Mirrors the Linux test matrix in build_matrix expansion so we ship
# binaries for every PHP version we claim to support. Tests are off in
# this lane -- the test workflow already validated the same arch/ts/php
# combinations on master.

on:
release:
types: [published]

jobs:
matrix:
name: Resolve Windows release matrix
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v6
- id: matrix
uses: php/php-windows-builder/extension-matrix@v1
with:
php-version-list: '8.3, 8.4, 8.5'

build:
name: Build ${{ matrix.php-version }} ${{ matrix.ts }} ${{ matrix.arch }}
needs: matrix
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
steps:
- uses: actions/checkout@v6
- uses: php/php-windows-builder/extension@v1
with:
php-version: ${{ matrix.php-version }}
arch: ${{ matrix.arch }}
ts: ${{ matrix.ts }}
run-tests: 'false'

release:
name: Upload binaries to the release
runs-on: ubuntu-latest
needs: build
steps:
- uses: php/php-windows-builder/release@v1
with:
release: ${{ github.event.release.tag_name }}
token: ${{ secrets.GITHUB_TOKEN }}
Loading