============================================================== storage_engine test suite — PG@5436 ============================================================== [setup] creating test database 'storage_engine_test'… ──────────────────────────────────────────────────────────────  PG@5436: Extension Lifecycle ────────────────────────────────────────────────────────────── [PASS] extension version = 1.3.4 [PASS] schema engine exists [PASS] catalog table engine.col_options exists [PASS] catalog table engine.stripe exists [PASS] catalog table engine.chunk_group exists [PASS] catalog table engine.chunk exists [PASS] access method colcompress registered [PASS] access method rowcompress registered [PASS] aggregate engine.vcount(count) registered [PASS] aggregate engine.vmin(integer) registered [PASS] aggregate engine.vmax(smallint) registered [PASS] aggregate engine.vsum(bigint) registered [PASS] aggregate engine.vavg(bigint) registered [PASS] aggregate engine.vmin(date) registered [PASS] aggregate engine.vsum(double precision) registered [PASS] aggregate engine.vavg(double precision) registered [PASS] aggregate engine.vmin(numeric) registered [PASS] aggregate engine.vavg(numeric) registered [PASS] aggregate engine.vsum(money) registered [PASS] aggregate engine.vmin(money) registered [PASS] aggregate engine.vmax(money) registered [PASS] no engine.vavg(money) — PostgreSQL has no avg(money) ──────────────────────────────────────────────────────────────  PG@5436: colcompress DML ────────────────────────────────────────────────────────────── [PASS] CREATE TABLE + INSERT colcompress [PASS] row count after INSERT = 50000 [PASS] SELECT with WHERE filter [PASS] UPDATE single row [PASS] UPDATE value persisted [PASS] DELETE 10 rows [PASS] count after DELETE = 49990 [PASS] TRUNCATE [PASS] count after TRUNCATE = 0 [PASS] re-INSERT after TRUNCATE ──────────────────────────────────────────────────────────────  PG@5436: rowcompress DML ────────────────────────────────────────────────────────────── [PASS] CREATE TABLE + INSERT rowcompress [PASS] row count = 10000 [PASS] SELECT with WHERE filter (val > N → N/2 rows) [PASS] UPDATE rowcompress [PASS] DELETE rowcompress ──────────────────────────────────────────────────────────────  PG@5436: Compression Options ────────────────────────────────────────────────────────────── [PASS] colcompress: alter_colcompress_table_set compression='zstd' [PASS] row count with zstd = 2000 [PASS] engine.col_options.compression = 'zstd' [PASS] colcompress: alter_colcompress_table_set compression='lz4' [PASS] row count with lz4 = 2000 [PASS] engine.col_options.compression = 'lz4' [PASS] colcompress: alter_colcompress_table_set compression='pglz' [PASS] row count with pglz = 2000 [PASS] engine.col_options.compression = 'pglz' ──────────────────────────────────────────────────────────────  PG@5436: Sort Key (orderby) Option ────────────────────────────────────────────────────────────── [PASS] alter_colcompress_table_set orderby='ts' [PASS] engine.col_options.orderby = 'ts' [PASS] all rows readable after sorted INSERT ──────────────────────────────────────────────────────────────  PG@5436: Vectorized Aggregates — smallint / integer / bigint ────────────────────────────────────────────────────────────── [PASS] count(*) [smallint] [PASS] count(col) [smallint] [PASS] min(smallint) [PASS] max(smallint) [PASS] sum(smallint) [PASS] avg(smallint) [PASS] count(*) [integer] [PASS] count(col) [integer] [PASS] min(integer) [PASS] max(integer) [PASS] sum(integer) [PASS] avg(integer) [PASS] count(*) [bigint] [PASS] count(col) [bigint] [PASS] min(bigint) [PASS] max(bigint) [PASS] sum(bigint) [PASS] avg(bigint) ──────────────────────────────────────────────────────────────  PG@5436: Vectorized Aggregates — float8 (double precision) ────────────────────────────────────────────────────────────── [PASS] count(*) [float8] [PASS] count(col) [float8] [PASS] min(float8) [PASS] max(float8) [PASS] sum(float8) [PASS] avg(float8) ──────────────────────────────────────────────────────────────  PG@5436: Vectorized Aggregates — numeric ────────────────────────────────────────────────────────────── [PASS] count(*) [numeric] [FAIL] count(col) [numeric] OFF='100000' ON='' [PASS] min(numeric) [PASS] max(numeric) [PASS] sum(numeric) [PASS] avg(numeric) ──────────────────────────────────────────────────────────────  PG@5436: Vectorized Aggregates — money ────────────────────────────────────────────────────────────── [PASS] count(*) [money] [PASS] min(money) [PASS] max(money) [PASS] sum(money) ──────────────────────────────────────────────────────────────  PG@5436: Vectorized Aggregates — date ────────────────────────────────────────────────────────────── [PASS] count(*) [date] [PASS] count(col) [date] [PASS] min(date) [PASS] max(date) ──────────────────────────────────────────────────────────────  PG@5436: Multi-column / Multi-type Aggregate Query ────────────────────────────────────────────────────────────── [PASS] multi-type query: count/min/max for all columns [PASS] multi-type query: sum/avg for numeric types ──────────────────────────────────────────────────────────────  PG@5436: NULL Handling ────────────────────────────────────────────────────────────── [PASS] empty table: count(*) = 0 [PASS] empty table: min(i2) VEC==OFF [PASS] empty table: max(i2) VEC==OFF [PASS] empty table: sum(i2) VEC==OFF [PASS] empty table: min(i4) VEC==OFF [PASS] empty table: max(i4) VEC==OFF [PASS] empty table: sum(i4) VEC==OFF [PASS] empty table: min(f8) VEC==OFF [PASS] empty table: max(f8) VEC==OFF [PASS] empty table: min(num) VEC==OFF [PASS] empty table: max(num) VEC==OFF [PASS] empty table: min(d) VEC==OFF [PASS] empty table: max(d) VEC==OFF [PASS] empty table: min(m) VEC==OFF [PASS] empty table: max(m) VEC==OFF [PASS] empty table: sum(i2) IS NULL (VEC default) [PASS] empty table: sum(i4) IS NULL (VEC default) [PASS] empty table: min(i4) IS NULL (VEC default) [PASS] empty table: max(f8) IS NULL (VEC default) [PASS] empty table: sum(m) IS NULL (VEC default) [PASS] all-NULL cols: count(*) = 1000 [PASS] all-NULL col: count(f8) = 0 [PASS] all-NULL col: min(f8) VEC==OFF [PASS] all-NULL col: max(num) VEC==OFF [PASS] all-NULL col: sum(money) VEC==OFF [PASS] all-NULL col: min(f8) IS NULL [PASS] all-NULL col: max(num) IS NULL [PASS] mixed NULLs: count(*) [PASS] mixed NULLs: count(val) [PASS] mixed NULLs: min(integer) [PASS] mixed NULLs: max(integer) [PASS] mixed NULLs: sum(integer) [PASS] mixed NULLs: avg(integer) [PASS] mixed NULLs: sum(float8) [PASS] mixed NULLs: avg(float8) [PASS] single row: min/max/sum/count ──────────────────────────────────────────────────────────────  PG@5436: EXPLAIN Plan Verification ────────────────────────────────────────────────────────────── [PASS] VEC ON: EXPLAIN shows StorageEngineVectorAgg [PASS] VEC ON: EXPLAIN shows 'Engine Vectorized Aggregate: enabled' [PASS] VEC OFF: EXPLAIN has no StorageEngineVectorAgg [PASS] EXPLAIN ANALYZE: no error (VEC ON) [PASS] EXPLAIN ANALYZE: shows StorageEngineVectorAgg [PASS] EXPLAIN SELECT (filter): no crash, returns plan [PASS] mixed numeric+money: EXPLAIN falls back to regular Agg [PASS] mixed numeric+money: VEC ON falls back without changing result [PASS] mixed numeric+money: VEC ON query runs without crash ──────────────────────────────────────────────────────────────  PG@5436: Parallel Safety (AGGSPLIT_SIMPLE guard) ────────────────────────────────────────────────────────────── [PASS] parallel=4: result equals serial [PASS] parallel=4: no crash / error [PASS] parallel=4 float8+numeric+money: result equals serial ──────────────────────────────────────────────────────────────  PG@5436: Upgrade Path Chain ────────────────────────────────────────────────────────────── [PASS] latest available version = 1.3.4 [PASS] upgrade path 1.0 → 1.3.4 exists [PASS] upgrade step 1.0 → 1.1 [PASS] upgrade step 1.1 → 1.2.0 [PASS] upgrade step 1.2.0 → 1.2.1 [PASS] upgrade step 1.2.1 → 1.2.2 [PASS] upgrade step 1.2.2 → 1.2.3 [PASS] upgrade step 1.2.3 → 1.2.4 [PASS] upgrade step 1.2.4 → 1.2.5 [PASS] upgrade step 1.2.5 → 1.2.6 [PASS] upgrade step 1.2.6 → 1.2.7 [PASS] upgrade step 1.2.7 → 1.2.8 [PASS] upgrade step 1.2.8 → 1.2.9 [PASS] upgrade step 1.2.9 → 1.3.0 [PASS] upgrade step 1.3.0 → 1.3.1 [PASS] upgrade step 1.3.1 → 1.3.2 [PASS] upgrade step 1.3.2 → 1.3.3 [PASS] upgrade step 1.3.3 → 1.3.4 ============================================================== PG@5436: 1 FAILED / 155 total Failures: • PG@5436: count(col) [numeric] — OFF='100000' ON='' ==============================================================