📄 int.c
字号:
Datumint42eq(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_BOOL(arg1 == arg2);}Datumint42ne(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_BOOL(arg1 != arg2);}Datumint42lt(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_BOOL(arg1 < arg2);}Datumint42le(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_BOOL(arg1 <= arg2);}Datumint42gt(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_BOOL(arg1 > arg2);}Datumint42ge(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_BOOL(arg1 >= arg2);}/* * int[24]pl - returns arg1 + arg2 * int[24]mi - returns arg1 - arg2 * int[24]mul - returns arg1 * arg2 * int[24]div - returns arg1 / arg2 */Datumint4um(PG_FUNCTION_ARGS){ int32 arg = PG_GETARG_INT32(0); PG_RETURN_INT32(-arg);}Datumint4up(PG_FUNCTION_ARGS){ int32 arg = PG_GETARG_INT32(0); PG_RETURN_INT32(arg);}Datumint4pl(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32(arg1 + arg2);}Datumint4mi(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32(arg1 - arg2);}Datumint4mul(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32(arg1 * arg2);}Datumint4div(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 arg2 = PG_GETARG_INT32(1); if (arg2 == 0) ereport(ERROR, (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); PG_RETURN_INT32(arg1 / arg2);}Datumint4inc(PG_FUNCTION_ARGS){ int32 arg = PG_GETARG_INT32(0); PG_RETURN_INT32(arg + 1);}Datumint2um(PG_FUNCTION_ARGS){ int16 arg = PG_GETARG_INT16(0); PG_RETURN_INT16(-arg);}Datumint2up(PG_FUNCTION_ARGS){ int16 arg = PG_GETARG_INT16(0); PG_RETURN_INT16(arg);}Datumint2pl(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_INT16(arg1 + arg2);}Datumint2mi(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_INT16(arg1 - arg2);}Datumint2mul(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_INT16(arg1 * arg2);}Datumint2div(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int16 arg2 = PG_GETARG_INT16(1); if (arg2 == 0) ereport(ERROR, (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); PG_RETURN_INT16(arg1 / arg2);}Datumint24pl(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32(arg1 + arg2);}Datumint24mi(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32(arg1 - arg2);}Datumint24mul(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32(arg1 * arg2);}Datumint24div(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int32 arg2 = PG_GETARG_INT32(1); if (arg2 == 0) ereport(ERROR, (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); PG_RETURN_INT32(arg1 / arg2);}Datumint42pl(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_INT32(arg1 + arg2);}Datumint42mi(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_INT32(arg1 - arg2);}Datumint42mul(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_INT32(arg1 * arg2);}Datumint42div(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int16 arg2 = PG_GETARG_INT16(1); if (arg2 == 0) ereport(ERROR, (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); PG_RETURN_INT32(arg1 / arg2);}Datumint4mod(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 arg2 = PG_GETARG_INT32(1); if (arg2 == 0) ereport(ERROR, (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); PG_RETURN_INT32(arg1 % arg2);}Datumint2mod(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int16 arg2 = PG_GETARG_INT16(1); if (arg2 == 0) ereport(ERROR, (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); PG_RETURN_INT16(arg1 % arg2);}Datumint24mod(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int32 arg2 = PG_GETARG_INT32(1); if (arg2 == 0) ereport(ERROR, (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); PG_RETURN_INT32(arg1 % arg2);}Datumint42mod(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int16 arg2 = PG_GETARG_INT16(1); if (arg2 == 0) ereport(ERROR, (errcode(ERRCODE_DIVISION_BY_ZERO), errmsg("division by zero"))); PG_RETURN_INT32(arg1 % arg2);}/* int[24]fac() * Factorial */Datumint4fac(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 result; if (arg1 == 0) result = 1; else if (arg1 < 0) result = 0; else for (result = 1; arg1 > 0; --arg1) result *= arg1; PG_RETURN_INT32(result);}Datumint2fac(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int32 result; if (arg1 == 0) result = 1; else if (arg1 < 0) result = 0; else for (result = 1; arg1 > 0; --arg1) result *= arg1; PG_RETURN_INT32(result);}/* int[24]abs() * Absolute value */Datumint4abs(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); PG_RETURN_INT32((arg1 < 0) ? -arg1 : arg1);}Datumint2abs(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); PG_RETURN_INT16((arg1 < 0) ? -arg1 : arg1);}Datumint2larger(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_INT16((arg1 > arg2) ? arg1 : arg2);}Datumint2smaller(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_INT16((arg1 < arg2) ? arg1 : arg2);}Datumint4larger(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32((arg1 > arg2) ? arg1 : arg2);}Datumint4smaller(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32((arg1 < arg2) ? arg1 : arg2);}/* Binary arithmetics * * int[24]and - returns arg1 & arg2 * int[24]or - returns arg1 | arg2 * int[24]xor - returns arg1 # arg2 * int[24]not - returns ~arg1 * int[24]shl - returns arg1 << arg2 * int[24]shr - returns arg1 >> arg2 */Datumint4and(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32(arg1 & arg2);}Datumint4or(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32(arg1 | arg2);}Datumint4xor(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32(arg1 ^ arg2);}Datumint4shl(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32(arg1 << arg2);}Datumint4shr(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT32(arg1 >> arg2);}Datumint4not(PG_FUNCTION_ARGS){ int32 arg1 = PG_GETARG_INT32(0); PG_RETURN_INT32(~arg1);}Datumint2and(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_INT16(arg1 & arg2);}Datumint2or(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_INT16(arg1 | arg2);}Datumint2xor(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int16 arg2 = PG_GETARG_INT16(1); PG_RETURN_INT16(arg1 ^ arg2);}Datumint2not(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); PG_RETURN_INT16(~arg1);}Datumint2shl(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT16(arg1 << arg2);}Datumint2shr(PG_FUNCTION_ARGS){ int16 arg1 = PG_GETARG_INT16(0); int32 arg2 = PG_GETARG_INT32(1); PG_RETURN_INT16(arg1 >> arg2);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -