def ptr_default_to_col_default(schema, ptr, expr): try: # NOTE: This code currently will only be invoked for scalars. # Blindly cast the default expression into the ptr target # type, validation of the expression type is not the concern # of this function. eql = ql_parser.parse(expr.text) eql = ql_astutils.ensure_qlstmt( qlast.TypeCast( type=s_utils.typeref_to_ast(schema, ptr.get_target(schema)), expr=eql, )) ir = qlcompiler.compile_ast_to_ir(eql, schema) except errors.SchemaError: # Reference errors mean that is is a non-constant default # referring to a not-yet-existing objects. return None if not ir_utils.is_const(ir): return None sql_expr = compiler.compile_ir_to_sql_tree(ir, singleton_mode=True) sql_text = codegen.SQLSourceGenerator.to_source(sql_expr) return sql_text
def type_to_ql_typeref( t: s_types.Type, *, _name: Optional[str] = None, ctx: context.ContextLevel, ) -> qlast.TypeExpr: return s_utils.typeref_to_ast( ctx.env.schema, t, disambiguate_std='std' in ctx.modaliases, )
def type_to_ql_typeref(t: s_types.Type, *, schema: s_schema.Schema) -> qlast.TypeExpr: return s_utils.typeref_to_ast(schema, t)