def get_trigger_proc_text(self): chunks = [] constr_name = self.constraint_name() raw_constr_name = self.constraint_name(quote=False) errmsg = 'duplicate key value violates unique ' \ 'constraint {constr}'.format(constr=constr_name) for expr, origin_expr in zip(self._exprdata, self._origin_exprdata): exprdata = expr['exprdata'] origin_exprdata = origin_expr['exprdata'] schemaname, tablename = self.get_origin_table_name() text = ''' PERFORM TRUE FROM {table} WHERE {plain_expr} = {new_expr}; IF FOUND THEN RAISE unique_violation USING TABLE = '{tablename}', SCHEMA = '{schemaname}', CONSTRAINT = '{constr}', MESSAGE = '{errmsg}', DETAIL = {detail}; END IF; '''.format( plain_expr=origin_exprdata['plain'], detail=common.quote_literal( f"Key ({origin_exprdata['plain']}) already exists." ), new_expr=exprdata['new'], table=common.qname( schemaname, tablename + "_" + common.get_aspect_suffix("inhview")), schemaname=schemaname, tablename=tablename, constr=raw_constr_name, errmsg=errmsg, ) chunks.append(text) text = 'BEGIN\n' + '\n\n'.join(chunks) + '\nRETURN NEW;\nEND;' return text
def visit_StringConstant(self, node): self.write(common.quote_literal(node.val))
@dataclasses.dataclass(frozen=True) class CompileContext: state: dbstate.CompilerConnectionState output_format: pg_compiler.OutputFormat expected_cardinality_one: bool stmt_mode: enums.CompileStatementMode json_parameters: bool = False EMPTY_MAP = immutables.Map() DEFAULT_MODULE_ALIASES_MAP = immutables.Map( {None: defines.DEFAULT_MODULE_ALIAS}) pg_ql = lambda o: pg_common.quote_literal(str(o)) def compile_bootstrap_script(std_schema: s_schema.Schema, schema: s_schema.Schema, eql: str, *, single_statement: bool = False, expected_cardinality_one: bool = False): state = dbstate.CompilerConnectionState(0, schema, EMPTY_MAP, EMPTY_MAP, enums.Capability.ALL) ctx = CompileContext( state=state, output_format=pg_compiler.OutputFormat.JSON,