misleading comments in pgbench
From contrib/pgbench/pgbench.c starting in revision 1.77
* Note: TPC-B requires at least 100 bytes per row, and the "filler"
* fields in these table declarations were intended to comply with that.
* But because they default to NULLs, they don't actually take any
* space. We could fix that by giving them non-null default values.
* However, that would completely break comparability of pgbench
* results with prior versions. Since pgbench has never pretended
* to be fully TPC-B compliant anyway, we stick with the historical
* behavior.
The statement about NULLs applies to the other 3 tables, but
pgbench_accounts.filler is loaded (via COPY) as empty strings, not as
NULLs. When stored into char(84), the empty string takes the full
specified storage. So on my system, rows in pgbench_accounts take up
about 130 bytes, rather than than the about 40 they would with a NULL.
The behavior probably won't be changed, but the code comment probably
should be. Sorry if this seems like picayune thing, but it led to a
bit of head scratching until I figured it out.
Cheers,
Jeff
* Note: TPC-B requires at least 100 bytes per row, and the "filler"
* fields in these table declarations were intended to comply with that.
* But because they default to NULLs, they don't actually take any
* space. We could fix that by giving them non-null default values.
* However, that would completely break comparability of pgbench
* results with prior versions. Since pgbench has never pretended
* to be fully TPC-B compliant anyway, we stick with the historical
* behavior.The statement about NULLs applies to the other 3 tables, but
pgbench_accounts.filler is loaded (via COPY) as empty strings, not as
NULLs. When stored into char(84), the empty string takes the full
specified storage. So on my system, rows in pgbench_accounts take up
about 130 bytes, rather than than the about 40 they would with a NULL.
Ok, what about this?
* Note: TPC-B requires at least 100 bytes per row, and the
* "filler" fields in these table declarations were intended to
* comply with that. But because they default to NULLs, they
* don't actually take any space(except pgbench_accounts
* table. It's filled with spaces by pgbench -i command). We
* could fix that by giving them non-null default values.
* However, that would completely break comparability of pgbench
* results with prior versions. Since pgbench has never pretended
* to be fully TPC-B compliant anyway, we stick with the
* historical behavior.
--
Tatsuo Ishii
SRA OSS, Inc. Japan