コード例 #1
0
ファイル: nbt_compare.c プロジェクト: colinet/sqlix
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));
}
コード例 #2
0
ファイル: dbsize.c プロジェクト: colinet/sqlix
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));
}
コード例 #3
0
ファイル: dbsize.c プロジェクト: colinet/sqlix
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));
}
コード例 #4
0
ファイル: regexp.c プロジェクト: colinet/sqlix
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));
}
コード例 #5
0
ファイル: ascii.c プロジェクト: colinet/sqlix
/* ----------
 * 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));
}
コード例 #6
0
ファイル: codegen.c プロジェクト: jdelgadoalfonso/gputils
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);
  }

}