I wrote:
The escape processing is actually done in the lexer in the case of
literals. We have to allow for bytea literals there too, regardless of
encoding. The lexer naturally has no notion of the intended
destination of the literal, So we need to defer the validity check to
the *in functions for encoding-aware types. And it as Tom has noted,
COPY does its own escape processing but does it before the transcoding.
So ISTM that any solution other than something like I have proposed
will probably involve substantial surgery.
Below is a list of the input routines in the adt directory, courtesy of
grep.
I'm thinking we will need to put checks in:
varcharin
bpcharin
textin
unknownin (?)
namein (?)
Any others?
cheers
andrew
acl.c:aclitemin
bool.c:boolin
char.c:charin
date.c:timetypmodin
date.c:timetztypmodin
float.c:dasin
float.c:dsin
nabstime.c:abstimein
nabstime.c:reltimein
nabstime.c:tintervalin
name.c:namein
not_in.c:oidnotin
numeric.c:numerictypmodin
oid.c:oidin
oid.c:oidvectorin
regproc.c:regprocin
regproc.c:regprocedurein
regproc.c:regoperin
regproc.c:regoperatorin
regproc.c:regclassin
regproc.c:regtypein
tid.c:tidin
timestamp.c:timestamptypmodin
timestamp.c:timestamptztypmodin
timestamp.c:intervaltypmodin
varbit.c:bittypmodin
varbit.c:varbittypmodin
varchar.c:bpcharin
varchar.c:bpchartypmodin
varchar.c:varcharin
varchar.c:varchartypmodin
varlena.c:byteain
varlena.c:textin
varlena.c:unknownin
xid.c:xidin
xid.c:cidin
---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings