datum_t btnamecmp(PG_FUNC_ARGS) { struct name* a = ARG_NAME(0); struct name* b = ARG_NAME(1); RET_INT32(strncmp(NAME_TO_STR(*a), NAME_TO_STR(*b), NAMEDATALEN)); }
datum_t pg_tablespace_size_name(PG_FUNC_ARGS) { struct name* tblspcName = ARG_NAME(0); oid_t tblspcOid = tbs_get_oid(NAME_TO_STR(*tblspcName), false); RET_INT64(calculate_tablespace_size(tblspcOid)); }
datum_t pg_database_size_name(PG_FUNC_ARGS) { struct name* dbName = ARG_NAME(0); oid_t dbOid = get_db_oid(NAME_TO_STR(*dbName), false); RET_INT64(calculate_database_size(dbOid)); }
datum_t nameicregexne(PG_FUNC_ARGS) { struct name* n = ARG_NAME(0); text *p = ARG_TEXT_PP(1); RET_BOOL(!RE_compile_and_execute(p, NAME_TO_STR(*n), strlen(NAME_TO_STR(*n)), REG_ADVANCED | REG_ICASE, PG_COLLATION(), 0, NULL)); }
/* ---------- * convert to ASCII - enc is set as 'name' arg. * ---------- */ datum_t to_ascii_encname(PG_FUNC_ARGS) { text *data = ARG_TEXT_P_COPY(0); char *encname = NAME_TO_STR(*ARG_NAME(1)); int enc = pg_char_to_encoding(encname); if (enc < 0) { ereport(ERROR, ( errcode(E_UNDEFINED_OBJECT), errmsg("%s is not a valid encoding name", encname))); } RET_TEXT_P(encode_to_ascii(data, enc)); }
static void gen_expr(tree *expr) { struct variable *var; switch(expr->tag) { case node_arg: var = get_global(ARG_NAME(expr)); codegen_load_file(expr, var); break; case node_call: analyze_call(expr, true, codegen_size); break; case node_constant: LOAD_CONSTANT(expr->value.constant, codegen_size); break; case node_symbol: var = get_global(SYM_NAME(expr)); if (var->tag == sym_const) { LOAD_CONSTANT(var->value, codegen_size); } else { codegen_load_file(expr, var); } break; case node_unop: gen_unop_expr(expr); break; case node_binop: if (expr->value.binop.op == op_assign) { analyze_error(expr, "assign operator = should be equal operator =="); } else if ((expr->value.binop.op == op_lsh) || (expr->value.binop.op == op_rsh)) { /* for shifts it is best to calculate the left side first */ gen_binop_expr(expr->value.binop.op, expr->value.binop.p1, expr->value.binop.p0); } else { /* for all others calculate the right side first */ gen_binop_expr(expr->value.binop.op, expr->value.binop.p0, expr->value.binop.p1); } break; default: assert(0); } }