pglast.printers.sfuncs
— Special function printers¶
The PostgreSQL parser translates some SQL
constructs into function calls, for example the
expression EXTRACT(YEAR FROM date_column)
is represented the same as
pg_catalog.date_part('year', date_column)
.
This module declares some of those equivalences, implementing alternative printers that will be
used when the option special_functions of the output stream
is
set to True
.
- pglast.printers.sfuncs.btrim(node, output)¶
Emit function
pg_catalog.btrim(' abc ')
astrim(BOTH FROM ' abc ')
andpg_catalog.btrim('xxabcxx', 'x')
astrim(BOTH 'x' FROM 'xxabcxx')
.
- pglast.printers.sfuncs.date_part(node, output)¶
Emit function
pg_catalog.date_part(field, timestamp)
asEXTRACT(field FROM timestamp).
.
- pglast.printers.sfuncs.ltrim(node, output)¶
Emit function
pg_catalog.ltrim(' abc ')
astrim(LEADING FROM ' abc ')
andpg_catalog.ltrim('xxabcxx', 'x')
astrim(LEADING 'x' FROM 'xxabcxx').
- pglast.printers.sfuncs.normalize(node, output)¶
Emit function
pg_catalog.normalize(a)
asnormalize(x)
and functionpg_catalog.normalize('a','b')
asnormalize('a', b)
.
- pglast.printers.sfuncs.overlaps(node, output)¶
Emit function
pg_catalog.overlaps(a, b, c, d)
as(a, b) OVERLAPS (c, d)
.
- pglast.printers.sfuncs.overlay(node, output)¶
Emit function
pg_catalog.overlay('Txxxxas','hom', 2, 4)
asoverlay('Txxxxas' PLACING 'hom' FROM 2 FOR 4)
.”
- pglast.printers.sfuncs.pg_collation_for(node, output)¶
Emit function
pg_catalog.pg_collation_for(x)
asCOLLATION FOR (x)
.
- pglast.printers.sfuncs.position(node, output)¶
Emit function
pg_catalog.position('abcd', 'a')
asposition('a' IN 'abcd')
.
- pglast.printers.sfuncs.rtrim(node, output)¶
Emit function
pg_catalog.rtrim(' abc ')
astrim(TRAILING FROM ' abc ')
andpg_catalog.rtrim('xxabcxx', 'x')
astrim(TRAILING 'x' FROM 'xxabcxx')
- pglast.printers.sfuncs.substring(node, output)¶
Emit function
pg_catalog.substring('Txxxxas', 2, 4)
assubstring('Txxxxas' FROM 2 FOR 4)
andpg_catalog.substring('blabla', 2)
assubstring('blabla' FROM 2)
.
- pglast.printers.sfuncs.timezone(node, output)¶
Emit function
pg_catalog.timezone(tz, timestamp)
astimestamp AT TIME ZONE tz
.
- pglast.printers.sfuncs.xmlexists(node, output)¶
Emit function
pg_catalog.xmlexists(x, y)
asxmlexists(x PASSING BY REF y)
.