test-patch-results.out

application/octet-stream

Filename: test-patch-results.out
Type: application/octet-stream
Part: 2
Message: [PATCH] Improving Visibility of Temporary Table Usage
============================================================
Temp Table Monitoring Patch - Comprehensive Test Suite
============================================================

Expanded display is on.
-[ RECORD 1 ]-+-
pg_stat_reset | 

-[ RECORD 1 ]
pg_sleep | 

--- Test 1: Verify new columns exist in pg_stat_database ---
-[ RECORD 1 ]-------------------
column_name | local_blks_dirtied
data_type   | bigint
-[ RECORD 2 ]-------------------
column_name | local_blks_hit
data_type   | bigint
-[ RECORD 3 ]-------------------
column_name | local_blks_read
data_type   | bigint
-[ RECORD 4 ]-------------------
column_name | local_blks_written
data_type   | bigint
-[ RECORD 5 ]-------------------
column_name | temp_tables
data_type   | bigint


--- Test 2: Baseline - all counters start at zero ---
-[ RECORD 1 ]------+------
datname            | tempt
temp_tables        | 0
local_blks_hit     | 0
local_blks_read    | 0
local_blks_dirtied | 0
local_blks_written | 0


--- Test 3: temp_tables increments on CREATE TEMP TABLE ---
CREATE TABLE
CREATE TABLE
SELECT 100
-[ RECORD 1 ]
pg_sleep | 

-[ RECORD 1 ]------
datname     | tempt
temp_tables | 3


--- Test 4: Regular tables do NOT increment temp_tables ---
CREATE TABLE
CREATE TABLE
-[ RECORD 1 ]
pg_sleep | 

-[ RECORD 1 ]------
datname     | tempt
temp_tables | 3

DROP TABLE
DROP TABLE

--- Test 5: local_blks_written tracks temp table disk writes ---
-[ RECORD 1 ]-+-
pg_stat_reset | 

-[ RECORD 1 ]
pg_sleep | 

SELECT 10000
-[ RECORD 1 ]
pg_sleep | 

-[ RECORD 1 ]------+--------
datname            | tempt
temp_tables        | 1
local_blks_written | 128
written_size       | 1024 kB


--- Test 6: local_blks_hit tracks cache hits ---
-[ RECORD 1 ]
count | 10000

-[ RECORD 1 ]
count | 5000

-[ RECORD 1 ]--------------
avg | 5000.5000000000000000

-[ RECORD 1 ]
pg_sleep | 

-[ RECORD 1 ]------+-------
datname            | tempt
local_blks_hit     | 460
local_blks_read    | 0
temp_hit_ratio_pct | 100.00


--- Test 7: local_blks_dirtied tracks UPDATE operations ---
-[ RECORD 1 ]-+-
pg_stat_reset | 

-[ RECORD 1 ]
pg_sleep | 

CREATE TABLE
INSERT 0 5000
UPDATE 2500
-[ RECORD 1 ]
pg_sleep | 

-[ RECORD 1 ]------+------
datname            | tempt
local_blks_dirtied | 34
local_blks_written | 37


--- Test 8: local_blks_read with small temp_buffers ---
You are now connected to database "tempt" as user "mohamed".
Expanded display is on.
-[ RECORD 1 ]-+-
pg_stat_reset | 

-[ RECORD 1 ]
pg_sleep | 

  Setting temp_buffers = 800kB (minimum allowed) to force disk reads
  when temp table data exceeds the local buffer cache size.
SET
SELECT 20000
-[ RECORD 1 ]
count | 20000

-[ RECORD 1 ]
count | 10000

-[ RECORD 1 ]
pg_sleep | 

-[ RECORD 1 ]------+------
datname            | tempt
temp_cache_hits    | 573
temp_disk_reads    | 1280
temp_disk_writes   | 1818
temp_hit_ratio_pct | 30.92


--- Test 9: pg_stat_reset clears all counters ---
-[ RECORD 1 ]-+-
pg_stat_reset | 

-[ RECORD 1 ]
pg_sleep | 

-[ RECORD 1 ]------+------
datname            | tempt
temp_tables        | 0
local_blks_hit     | 0
local_blks_read    | 0
local_blks_dirtied | 0
local_blks_written | 0


--- Test 10: Temp table with ON COMMIT DROP still counts ---
BEGIN
CREATE TABLE
INSERT 0 3
COMMIT
-[ RECORD 1 ]
pg_sleep | 

-[ RECORD 1 ]------
datname     | tempt
temp_tables | 1


--- Test 11: Multiple temp tables in one transaction ---
BEGIN
CREATE TABLE
CREATE TABLE
CREATE TABLE
COMMIT
-[ RECORD 1 ]
pg_sleep | 

-[ RECORD 1 ]------
datname     | tempt
temp_tables | 4


--- Test 12: Use Case - Detecting Undersized temp_buffers ---

  Scenario A: Small cache (800kB) - same workload
You are now connected to database "tempt" as user "mohamed".
Expanded display is on.
-[ RECORD 1 ]-+-
pg_stat_reset | 

-[ RECORD 1 ]
pg_sleep | 

SET
SELECT 30000
-[ RECORD 1 ]
count | 30000

-[ RECORD 1 ]
count | 15000

-[ RECORD 1 ]-----------
avg | 15000.500000000000

-[ RECORD 1 ]
pg_sleep | 

-[ RECORD 1 ]------+--------------------
scenario           | Small Cache (800kB)
temp_tables        | 1
local_blks_hit     | 531
local_blks_read    | 1728
local_blks_written | 1668
hit_ratio          | 23.51


  Scenario B: Large cache (10MB) - same workload
You are now connected to database "tempt" as user "mohamed".
Expanded display is on.
-[ RECORD 1 ]-+-
pg_stat_reset | 

-[ RECORD 1 ]
pg_sleep | 

SET
SELECT 30000
-[ RECORD 1 ]
count | 30000

-[ RECORD 1 ]
count | 15000

-[ RECORD 1 ]-----------
avg | 15000.500000000000

-[ RECORD 1 ]
pg_sleep | 

-[ RECORD 1 ]------+-------------------
scenario           | Large Cache (10MB)
temp_tables        | 1
local_blks_hit     | 2259
local_blks_read    | 0
local_blks_written | 576
hit_ratio          | 100.00


============================================================
All tests complete!

Summary of what was tested:
  1. New columns exist in pg_stat_database
  2. Counters start at zero after reset
  3. temp_tables increments on CREATE TEMP TABLE
  4. Regular/unlogged tables do NOT increment
  5. local_blks_written tracks disk writes
  6. local_blks_hit tracks cache hits
  7. local_blks_dirtied tracks UPDATE operations
  8. local_blks_read tracks disk reads (small cache)
  9. pg_stat_reset clears all counters
 10. ON COMMIT DROP still counts creation
 11. Multiple temp tables in one transaction
 12. Use Case: Detecting undersized temp_buffers (small vs large)
============================================================
-[ RECORD 1 ]-+-
pg_stat_reset |