mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-12 18:34:36 +08:00
fedc97cdfd
Up to now, get_const_expr() insisted on prefixing BIT and VARBIT
literals with 'B'. That's not really necessary, because we always
append explicit-cast syntax to identify the constant's type.
Moreover, it's subtly wrong for VARBIT, because the parser will
interpret B'...' as '...'::"bit"; see make_const() which explicitly
assigns type BITOID for a T_BitString literal. So what had been
a simple VARBIT literal is reconstructed as ('...'::"bit")::varbit,
which is not the same thing, at least not before constant folding.
This results in odd differences after dump/restore, as complained
of by the patch submitter, and it could result in actual failures in
partitioning or inheritance DDL operations (see commit
|
||
---|---|---|
.. | ||
data | ||
expected | ||
sql | ||
.gitignore | ||
btree_bit.c | ||
btree_bytea.c | ||
btree_cash.c | ||
btree_date.c | ||
btree_enum.c | ||
btree_float4.c | ||
btree_float8.c | ||
btree_gist--1.0--1.1.sql | ||
btree_gist--1.1--1.2.sql | ||
btree_gist--1.2--1.3.sql | ||
btree_gist--1.2.sql | ||
btree_gist--1.3--1.4.sql | ||
btree_gist--1.4--1.5.sql | ||
btree_gist--unpackaged--1.0.sql | ||
btree_gist.c | ||
btree_gist.control | ||
btree_gist.h | ||
btree_inet.c | ||
btree_int2.c | ||
btree_int4.c | ||
btree_int8.c | ||
btree_interval.c | ||
btree_macaddr8.c | ||
btree_macaddr.c | ||
btree_numeric.c | ||
btree_oid.c | ||
btree_text.c | ||
btree_time.c | ||
btree_ts.c | ||
btree_utils_num.c | ||
btree_utils_num.h | ||
btree_utils_var.c | ||
btree_utils_var.h | ||
btree_uuid.c | ||
Makefile |