Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
@node_printer("AccessPriv")
def access_priv(node, output):
if node.priv_name is Missing:
output.write('ALL PRIVILEGES')
else:
output.write(node.priv_name.value.upper())
if node.cols is not Missing:
output.write(' (')
output.print_list(node.cols, ',', are_names=True)
output.write(')')
OBJECT_NAMES = {
enums.ObjectType.OBJECT_ACCESS_METHOD: 'ACCESS METHOD',
enums.ObjectType.OBJECT_AGGREGATE: 'AGGREGATE',
enums.ObjectType.OBJECT_AMOP: 'AMOP',
enums.ObjectType.OBJECT_AMPROC: 'AMPROC',
enums.ObjectType.OBJECT_ATTRIBUTE: 'ATTRIBUTE',
enums.ObjectType.OBJECT_CAST: 'CAST',
enums.ObjectType.OBJECT_COLUMN: 'COLUMN',
enums.ObjectType.OBJECT_COLLATION: 'COLLATION',
enums.ObjectType.OBJECT_CONVERSION: 'CONVERSION',
enums.ObjectType.OBJECT_DATABASE: 'DATABASE',
enums.ObjectType.OBJECT_DEFAULT: 'DEFAULT',
enums.ObjectType.OBJECT_DEFACL: 'DEFACL',
enums.ObjectType.OBJECT_DOMAIN: 'DOMAIN',
enums.ObjectType.OBJECT_DOMCONSTRAINT: 'CONSTRAINT',
enums.ObjectType.OBJECT_EVENT_TRIGGER: 'EVENT TRIGGER',
enums.ObjectType.OBJECT_EXTENSION: 'EXTENSION',
enums.ObjectType.OBJECT_FDW: 'FOREIGN DATA WRAPPER',
def comment_stmt(node, output):
otypes = enums.ObjectType
output.write('COMMENT ')
output.write('ON ')
output.writes(OBJECT_NAMES[node.objtype.value])
if node.objtype in (otypes.OBJECT_OPCLASS, otypes.OBJECT_OPFAMILY):
nodes = list(node.object)
using = nodes.pop(0)
output.print_name(nodes)
output.write(' USING ')
output.print_name(using)
elif node.objtype in (otypes.OBJECT_TABCONSTRAINT, otypes.OBJECT_POLICY,
otypes.OBJECT_RULE, otypes.OBJECT_TRIGGER):
nodes = list(node.object)
output.print_name(nodes.pop())
output.write(' ON ')
output.print_name(nodes)
elif node.objtype == otypes.OBJECT_DOMCONSTRAINT:
enums.ObjectType.OBJECT_LARGEOBJECT: 'LARGE OBJECT',
enums.ObjectType.OBJECT_MATVIEW: 'MATERIALIZED VIEW',
enums.ObjectType.OBJECT_OPCLASS: 'OPERATOR CLASS',
enums.ObjectType.OBJECT_OPERATOR: 'OPERATOR',
enums.ObjectType.OBJECT_OPFAMILY: 'OPERATOR FAMILY',
enums.ObjectType.OBJECT_POLICY: 'POLICY',
enums.ObjectType.OBJECT_PUBLICATION: 'PUBLICATION',
enums.ObjectType.OBJECT_PUBLICATION_REL: 'PUBLICATION_REL',
enums.ObjectType.OBJECT_ROLE: 'ROLE',
enums.ObjectType.OBJECT_RULE: 'RULE',
enums.ObjectType.OBJECT_SCHEMA: 'SCHEMA',
enums.ObjectType.OBJECT_SEQUENCE: 'SEQUENCE',
enums.ObjectType.OBJECT_SUBSCRIPTION: 'SUBSCRIPTION',
enums.ObjectType.OBJECT_STATISTIC_EXT: 'STATISTICS',
enums.ObjectType.OBJECT_TABCONSTRAINT: 'CONSTRAINT',
enums.ObjectType.OBJECT_TABLE: 'TABLE',
enums.ObjectType.OBJECT_TABLESPACE: 'TABLESPACE',
enums.ObjectType.OBJECT_TRANSFORM: 'TRANSFORM',
enums.ObjectType.OBJECT_TRIGGER: 'TRIGGER',
enums.ObjectType.OBJECT_TSCONFIGURATION: 'TEXT SEARCH CONFIGURATION',
enums.ObjectType.OBJECT_TSDICTIONARY: 'TEXT SEARCH DICTIONARY',
enums.ObjectType.OBJECT_TSPARSER: 'TEXT SEARCH PARSER',
enums.ObjectType.OBJECT_TSTEMPLATE: 'TEXT SEARCH TEMPLATE',
enums.ObjectType.OBJECT_TYPE: 'TYPE',
enums.ObjectType.OBJECT_USER_MAPPING: 'USER_MAPPING',
enums.ObjectType.OBJECT_VIEW: 'VIEW',
}
@node_printer('AlterDatabaseStmt')
def alter_database_stmt(node, output):
output.write("ALTER DATABASE ")
output.print_node(node.relation)
output.write(' RENAME ')
output.write(OBJECT_NAMES[objtype])
output.space()
output.print_name(node.subname)
output.write(' TO ')
output.print_name(node.newname)
return
objtype_name = OBJECT_NAMES[objtype]
output.write('ALTER ')
output.write(objtype_name)
output.space()
if objtype in (enums.ObjectType.OBJECT_SCHEMA,
enums.ObjectType.OBJECT_DATABASE):
output.print_name(node.subname)
elif objtype == enums.ObjectType.OBJECT_RULE:
output.print_name(node.subname)
output.write(' ON ')
output.print_node(node.relation)
elif node.relation:
output.print_node(node.relation)
else:
output.print_node(node.object)
output.write(' RENAME TO ')
output.print_name(node.newname)