@@ -6855,91 +6855,93 @@ dsc* evlUnicodeVal(thread_db* tdbb, const SysFunction*, const NestValueArray& ar
6855
6855
6856
6856
const SysFunction SysFunction::functions[] =
6857
6857
{
6858
- {" ABS" , 1 , 1 , setParamsDblDec, makeAbs, evlAbs, NULL },
6859
- {" ACOS" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAcos},
6860
- {" ACOSH" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAcosh},
6861
- {" ASCII_CHAR" , 1 , 1 , setParamsInteger, makeAsciiChar, evlAsciiChar, NULL },
6862
- {" ASCII_VAL" , 1 , 1 , setParamsAsciiVal, makeShortResult, evlAsciiVal, NULL },
6863
- {" ASIN" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAsin},
6864
- {" ASINH" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAsinh},
6865
- {" ATAN" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAtan},
6866
- {" ATANH" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAtanh},
6867
- {" ATAN2" , 2 , 2 , setParamsDouble, makeDoubleResult, evlAtan2, NULL },
6868
- {" BASE64_DECODE" , 1 , 1 , NULL , makeDecode64, evlDecode64, NULL },
6869
- {" BASE64_ENCODE" , 1 , 1 , NULL , makeEncode64, evlEncode64, NULL },
6870
- {" BIN_AND" , 2 , -1 , setParamsBin, makeBin, evlBin, (void *) funBinAnd},
6871
- {" BIN_NOT" , 1 , 1 , setParamsBin, makeBin, evlBin, (void *) funBinNot},
6872
- {" BIN_OR" , 2 , -1 , setParamsBin, makeBin, evlBin, (void *) funBinOr},
6873
- {" BIN_SHL" , 2 , 2 , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShl},
6874
- {" BIN_SHR" , 2 , 2 , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShr},
6875
- {" BIN_SHL_ROT" , 2 , 2 , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShlRot},
6876
- {" BIN_SHR_ROT" , 2 , 2 , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShrRot},
6877
- {" BIN_XOR" , 2 , -1 , setParamsBin, makeBin, evlBin, (void *) funBinXor},
6878
- {" BLOB_APPEND" , 2 , -1 , setParamsBlobAppend, makeBlobAppend, evlBlobAppend, NULL },
6879
- {" CEIL" , 1 , 1 , setParamsDblDec, makeCeilFloor, evlCeil, NULL },
6880
- {" CEILING" , 1 , 1 , setParamsDblDec, makeCeilFloor, evlCeil, NULL },
6881
- {" CHAR_TO_UUID" , 1 , 1 , setParamsCharToUuid, makeUuid, evlCharToUuid, NULL },
6882
- {" COMPARE_DECFLOAT" , 2 , 2 , setParamsDecFloat, makeShortResult, evlCompare, (void *) funCmpDec},
6883
- {" COS" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfCos},
6884
- {" COSH" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfCosh},
6885
- {" COT" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfCot},
6886
- {" CRYPT_HASH" , 2 , 2 , setParamsHash, makeHash, evlHash, NULL },
6887
- {" DATEADD" , 3 , 3 , setParamsDateAdd, makeDateAdd, evlDateAdd, NULL },
6888
- {" DATEDIFF" , 3 , 3 , setParamsDateDiff, makeDateDiff, evlDateDiff, NULL },
6889
- {" DECRYPT" , CRYPT_ARG_MAX, CRYPT_ARG_MAX, setParamsEncrypt, makeCrypt, evlDecrypt, NULL },
6890
- {" ENCRYPT" , CRYPT_ARG_MAX, CRYPT_ARG_MAX, setParamsEncrypt, makeCrypt, evlEncrypt, NULL },
6891
- {" EXP" , 1 , 1 , setParamsDblDec, makeDblDecResult, evlExp, NULL },
6892
- {" FIRST_DAY" , 2 , 2 , setParamsFirstLastDay, makeFirstLastDayResult, evlFirstLastDay, (void *) funFirstDay},
6893
- {" FLOOR" , 1 , 1 , setParamsDblDec, makeCeilFloor, evlFloor, NULL },
6894
- {" GEN_UUID" , 0 , 0 , NULL , makeUuid, evlGenUuid, NULL },
6895
- {" HASH" , 1 , 2 , setParamsHash, makeHash, evlHash, NULL },
6896
- {" HEX_DECODE" , 1 , 1 , NULL , makeDecodeHex, evlDecodeHex, NULL },
6897
- {" HEX_ENCODE" , 1 , 1 , NULL , makeEncodeHex, evlEncodeHex, NULL },
6898
- {" LAST_DAY" , 2 , 2 , setParamsFirstLastDay, makeFirstLastDayResult, evlFirstLastDay, (void *) funLastDay},
6899
- {" LEFT" , 2 , 2 , setParamsSecondInteger, makeLeftRight, evlLeft, NULL },
6900
- {" LN" , 1 , 1 , setParamsDblDec, makeDblDecResult, evlLnLog10, (void *) funLnat},
6901
- {" LOG" , 2 , 2 , setParamsDblDec, makeDblDecResult, evlLog, NULL },
6902
- {" LOG10" , 1 , 1 , setParamsDblDec, makeDblDecResult, evlLnLog10, (void *) funLog10},
6903
- {" LPAD" , 2 , 3 , setParamsSecondInteger, makePad, evlPad, (void *) funLPad},
6904
- {" MAKE_DBKEY" , 2 , 4 , setParamsMakeDbkey, makeDbkeyResult, evlMakeDbkey, NULL },
6905
- {" MAXVALUE" , 1 , -1 , setParamsFromList, makeFromListResult, evlMaxMinValue, (void *) funMaxValue},
6906
- {" MINVALUE" , 1 , -1 , setParamsFromList, makeFromListResult, evlMaxMinValue, (void *) funMinValue},
6907
- {" MOD" , 2 , 2 , setParamsFromList, makeMod, evlMod, NULL },
6908
- {" NORMALIZE_DECFLOAT" , 1 , 1 , setParamsDecFloat, makeDecFloatResult, evlNormDec, NULL },
6909
- {" OVERLAY" , 3 , 4 , setParamsOverlay, makeOverlay, evlOverlay, NULL },
6910
- {" PI" , 0 , 0 , NULL , makePi, evlPi, NULL },
6911
- {" POSITION" , 2 , 3 , setParamsPosition, makeLongResult, evlPosition, NULL },
6912
- {" POWER" , 2 , 2 , setParamsDblDec, makeDblDecResult, evlPower, NULL },
6913
- {" QUANTIZE" , 2 , 2 , setParamsDecFloat, makeDecFloatResult, evlQuantize, NULL },
6914
- {" RAND" , 0 , 0 , NULL , makeDoubleResult, evlRand, NULL },
6915
- {RDB_GET_CONTEXT, 2 , 2 , setParamsGetSetContext, makeGetSetContext, evlGetContext, NULL },
6916
- {" RDB$GET_TRANSACTION_CN" , 1 , 1 , setParamsInt64, makeGetTranCN, evlGetTranCN, NULL },
6917
- {" RDB$ROLE_IN_USE" , 1 , 1 , setParamsAsciiVal, makeBooleanResult, evlRoleInUse, NULL },
6918
- {RDB_SET_CONTEXT, 3 , 3 , setParamsGetSetContext, makeGetSetContext, evlSetContext, NULL },
6919
- {" RDB$SYSTEM_PRIVILEGE" , 1 , 1 , NULL , makeBooleanResult, evlSystemPrivilege, NULL },
6920
- {" REPLACE" , 3 , 3 , setParamsFromList, makeReplace, evlReplace, NULL },
6921
- {" REVERSE" , 1 , 1 , NULL , makeReverse, evlReverse, NULL },
6922
- {" RIGHT" , 2 , 2 , setParamsSecondInteger, makeLeftRight, evlRight, NULL },
6923
- {" ROUND" , 1 , 2 , setParamsRoundTrunc, makeRound, evlRound, NULL },
6924
- {" RPAD" , 2 , 3 , setParamsSecondInteger, makePad, evlPad, (void *) funRPad},
6925
- {" RSA_DECRYPT" , RSA_CRYPT_ARG_MAX, RSA_CRYPT_ARG_MAX, setParamsRsaEncrypt, makeRsaCrypt, evlRsaDecrypt, NULL },
6926
- {" RSA_ENCRYPT" , RSA_CRYPT_ARG_MAX, RSA_CRYPT_ARG_MAX, setParamsRsaEncrypt, makeRsaCrypt, evlRsaEncrypt, NULL },
6927
- {" RSA_PRIVATE" , 1 , 1 , setParamsInteger, makeRsaPrivate, evlRsaPrivate, NULL },
6928
- {" RSA_PUBLIC" , 1 , 1 , setParamsRsaPublic, makeRsaPublic, evlRsaPublic, NULL },
6929
- {" RSA_SIGN_HASH" , RSA_SIGN_ARG_MAX, RSA_SIGN_ARG_MAX, setParamsRsaSign, makeRsaSign, evlRsaSign, NULL },
6930
- {" RSA_VERIFY_HASH" , RSA_VERIFY_ARG_MAX, RSA_VERIFY_ARG_MAX, setParamsRsaVerify, makeBoolResult, evlRsaVerify, NULL },
6931
- {" SIGN" , 1 , 1 , setParamsDblDec, makeShortResult, evlSign, NULL },
6932
- {" SIN" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfSin},
6933
- {" SINH" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfSinh},
6934
- {" SQRT" , 1 , 1 , setParamsDblDec, makeDblDecResult, evlSqrt, NULL },
6935
- {" TAN" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfTan},
6936
- {" TANH" , 1 , 1 , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfTanh},
6937
- {" TOTALORDER" , 2 , 2 , setParamsDecFloat, makeShortResult, evlCompare, (void *) funTotalOrd},
6938
- {" TRUNC" , 1 , 2 , setParamsRoundTrunc, makeTrunc, evlTrunc, NULL },
6939
- {" UNICODE_CHAR" , 1 , 1 , setParamsInteger, makeUnicodeChar, evlUnicodeChar, NULL },
6940
- {" UNICODE_VAL" , 1 , 1 , setParamsUnicodeVal, makeLongResult, evlUnicodeVal, NULL },
6941
- {" UUID_TO_CHAR" , 1 , 1 , setParamsUuidToChar, makeUuidToChar, evlUuidToChar, NULL },
6942
- {" " , 0 , 0 , NULL , NULL , NULL , NULL }
6858
+ // name, minArgCount, maxArgCount, deterministic, setParamsFunc, makeFunc, evlFunc, misc
6859
+
6860
+ {" ABS" , 1 , 1 , true , setParamsDblDec, makeAbs, evlAbs, NULL },
6861
+ {" ACOS" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAcos},
6862
+ {" ACOSH" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAcosh},
6863
+ {" ASCII_CHAR" , 1 , 1 , true , setParamsInteger, makeAsciiChar, evlAsciiChar, NULL },
6864
+ {" ASCII_VAL" , 1 , 1 , true , setParamsAsciiVal, makeShortResult, evlAsciiVal, NULL },
6865
+ {" ASIN" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAsin},
6866
+ {" ASINH" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAsinh},
6867
+ {" ATAN" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAtan},
6868
+ {" ATANH" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfAtanh},
6869
+ {" ATAN2" , 2 , 2 , true , setParamsDouble, makeDoubleResult, evlAtan2, NULL },
6870
+ {" BASE64_DECODE" , 1 , 1 , true , NULL , makeDecode64, evlDecode64, NULL },
6871
+ {" BASE64_ENCODE" , 1 , 1 , true , NULL , makeEncode64, evlEncode64, NULL },
6872
+ {" BIN_AND" , 2 , -1 , true , setParamsBin, makeBin, evlBin, (void *) funBinAnd},
6873
+ {" BIN_NOT" , 1 , 1 , true , setParamsBin, makeBin, evlBin, (void *) funBinNot},
6874
+ {" BIN_OR" , 2 , -1 , true , setParamsBin, makeBin, evlBin, (void *) funBinOr},
6875
+ {" BIN_SHL" , 2 , 2 , true , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShl},
6876
+ {" BIN_SHR" , 2 , 2 , true , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShr},
6877
+ {" BIN_SHL_ROT" , 2 , 2 , true , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShlRot},
6878
+ {" BIN_SHR_ROT" , 2 , 2 , true , setParamsInteger, makeBinShift, evlBinShift, (void *) funBinShrRot},
6879
+ {" BIN_XOR" , 2 , -1 , true , setParamsBin, makeBin, evlBin, (void *) funBinXor},
6880
+ {" BLOB_APPEND" , 2 , -1 , true , setParamsBlobAppend, makeBlobAppend, evlBlobAppend, NULL },
6881
+ {" CEIL" , 1 , 1 , true , setParamsDblDec, makeCeilFloor, evlCeil, NULL },
6882
+ {" CEILING" , 1 , 1 , true , setParamsDblDec, makeCeilFloor, evlCeil, NULL },
6883
+ {" CHAR_TO_UUID" , 1 , 1 , true , setParamsCharToUuid, makeUuid, evlCharToUuid, NULL },
6884
+ {" COMPARE_DECFLOAT" , 2 , 2 , true , setParamsDecFloat, makeShortResult, evlCompare, (void *) funCmpDec},
6885
+ {" COS" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfCos},
6886
+ {" COSH" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfCosh},
6887
+ {" COT" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfCot},
6888
+ {" CRYPT_HASH" , 2 , 2 , true , setParamsHash, makeHash, evlHash, NULL },
6889
+ {" DATEADD" , 3 , 3 , true , setParamsDateAdd, makeDateAdd, evlDateAdd, NULL },
6890
+ {" DATEDIFF" , 3 , 3 , true , setParamsDateDiff, makeDateDiff, evlDateDiff, NULL },
6891
+ {" DECRYPT" , CRYPT_ARG_MAX, CRYPT_ARG_MAX, true , setParamsEncrypt, makeCrypt, evlDecrypt, NULL },
6892
+ {" ENCRYPT" , CRYPT_ARG_MAX, CRYPT_ARG_MAX, true , setParamsEncrypt, makeCrypt, evlEncrypt, NULL },
6893
+ {" EXP" , 1 , 1 , true , setParamsDblDec, makeDblDecResult, evlExp, NULL },
6894
+ {" FIRST_DAY" , 2 , 2 , true , setParamsFirstLastDay, makeFirstLastDayResult, evlFirstLastDay, (void *) funFirstDay},
6895
+ {" FLOOR" , 1 , 1 , true , setParamsDblDec, makeCeilFloor, evlFloor, NULL },
6896
+ {" GEN_UUID" , 0 , 0 , false , NULL , makeUuid, evlGenUuid, NULL },
6897
+ {" HASH" , 1 , 2 , true , setParamsHash, makeHash, evlHash, NULL },
6898
+ {" HEX_DECODE" , 1 , 1 , true , NULL , makeDecodeHex, evlDecodeHex, NULL },
6899
+ {" HEX_ENCODE" , 1 , 1 , true , NULL , makeEncodeHex, evlEncodeHex, NULL },
6900
+ {" LAST_DAY" , 2 , 2 , true , setParamsFirstLastDay, makeFirstLastDayResult, evlFirstLastDay, (void *) funLastDay},
6901
+ {" LEFT" , 2 , 2 , true , setParamsSecondInteger, makeLeftRight, evlLeft, NULL },
6902
+ {" LN" , 1 , 1 , true , setParamsDblDec, makeDblDecResult, evlLnLog10, (void *) funLnat},
6903
+ {" LOG" , 2 , 2 , true , setParamsDblDec, makeDblDecResult, evlLog, NULL },
6904
+ {" LOG10" , 1 , 1 , true , setParamsDblDec, makeDblDecResult, evlLnLog10, (void *) funLog10},
6905
+ {" LPAD" , 2 , 3 , true , setParamsSecondInteger, makePad, evlPad, (void *) funLPad},
6906
+ {" MAKE_DBKEY" , 2 , 4 , true , setParamsMakeDbkey, makeDbkeyResult, evlMakeDbkey, NULL },
6907
+ {" MAXVALUE" , 1 , -1 , true , setParamsFromList, makeFromListResult, evlMaxMinValue, (void *) funMaxValue},
6908
+ {" MINVALUE" , 1 , -1 , true , setParamsFromList, makeFromListResult, evlMaxMinValue, (void *) funMinValue},
6909
+ {" MOD" , 2 , 2 , true , setParamsFromList, makeMod, evlMod, NULL },
6910
+ {" NORMALIZE_DECFLOAT" , 1 , 1 , true , setParamsDecFloat, makeDecFloatResult, evlNormDec, NULL },
6911
+ {" OVERLAY" , 3 , 4 , true , setParamsOverlay, makeOverlay, evlOverlay, NULL },
6912
+ {" PI" , 0 , 0 , true , NULL , makePi, evlPi, NULL },
6913
+ {" POSITION" , 2 , 3 , true , setParamsPosition, makeLongResult, evlPosition, NULL },
6914
+ {" POWER" , 2 , 2 , true , setParamsDblDec, makeDblDecResult, evlPower, NULL },
6915
+ {" QUANTIZE" , 2 , 2 , true , setParamsDecFloat, makeDecFloatResult, evlQuantize, NULL },
6916
+ {" RAND" , 0 , 0 , false , NULL , makeDoubleResult, evlRand, NULL },
6917
+ {RDB_GET_CONTEXT, 2 , 2 , true , setParamsGetSetContext, makeGetSetContext, evlGetContext, NULL },
6918
+ {" RDB$GET_TRANSACTION_CN" , 1 , 1 , false , setParamsInt64, makeGetTranCN, evlGetTranCN, NULL },
6919
+ {" RDB$ROLE_IN_USE" , 1 , 1 , true , setParamsAsciiVal, makeBooleanResult, evlRoleInUse, NULL },
6920
+ {RDB_SET_CONTEXT, 3 , 3 , false , setParamsGetSetContext, makeGetSetContext, evlSetContext, NULL },
6921
+ {" RDB$SYSTEM_PRIVILEGE" , 1 , 1 , true , NULL , makeBooleanResult, evlSystemPrivilege, NULL },
6922
+ {" REPLACE" , 3 , 3 , true , setParamsFromList, makeReplace, evlReplace, NULL },
6923
+ {" REVERSE" , 1 , 1 , true , NULL , makeReverse, evlReverse, NULL },
6924
+ {" RIGHT" , 2 , 2 , true , setParamsSecondInteger, makeLeftRight, evlRight, NULL },
6925
+ {" ROUND" , 1 , 2 , true , setParamsRoundTrunc, makeRound, evlRound, NULL },
6926
+ {" RPAD" , 2 , 3 , true , setParamsSecondInteger, makePad, evlPad, (void *) funRPad},
6927
+ {" RSA_DECRYPT" , RSA_CRYPT_ARG_MAX, RSA_CRYPT_ARG_MAX, true , setParamsRsaEncrypt, makeRsaCrypt, evlRsaDecrypt, NULL },
6928
+ {" RSA_ENCRYPT" , RSA_CRYPT_ARG_MAX, RSA_CRYPT_ARG_MAX, true , setParamsRsaEncrypt, makeRsaCrypt, evlRsaEncrypt, NULL },
6929
+ {" RSA_PRIVATE" , 1 , 1 , false , setParamsInteger, makeRsaPrivate, evlRsaPrivate, NULL },
6930
+ {" RSA_PUBLIC" , 1 , 1 , false , setParamsRsaPublic, makeRsaPublic, evlRsaPublic, NULL },
6931
+ {" RSA_SIGN_HASH" , RSA_SIGN_ARG_MAX, RSA_SIGN_ARG_MAX, true , setParamsRsaSign, makeRsaSign, evlRsaSign, NULL },
6932
+ {" RSA_VERIFY_HASH" , RSA_VERIFY_ARG_MAX, RSA_VERIFY_ARG_MAX, true , setParamsRsaVerify, makeBoolResult, evlRsaVerify, NULL },
6933
+ {" SIGN" , 1 , 1 , true , setParamsDblDec, makeShortResult, evlSign, NULL },
6934
+ {" SIN" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfSin},
6935
+ {" SINH" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfSinh},
6936
+ {" SQRT" , 1 , 1 , true , setParamsDblDec, makeDblDecResult, evlSqrt, NULL },
6937
+ {" TAN" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfTan},
6938
+ {" TANH" , 1 , 1 , true , setParamsDouble, makeDoubleResult, evlStdMath, (void *) trfTanh},
6939
+ {" TOTALORDER" , 2 , 2 , true , setParamsDecFloat, makeShortResult, evlCompare, (void *) funTotalOrd},
6940
+ {" TRUNC" , 1 , 2 , true , setParamsRoundTrunc, makeTrunc, evlTrunc, NULL },
6941
+ {" UNICODE_CHAR" , 1 , 1 , true , setParamsInteger, makeUnicodeChar, evlUnicodeChar, NULL },
6942
+ {" UNICODE_VAL" , 1 , 1 , true , setParamsUnicodeVal, makeLongResult, evlUnicodeVal, NULL },
6943
+ {" UUID_TO_CHAR" , 1 , 1 , true , setParamsUuidToChar, makeUuidToChar, evlUuidToChar, NULL },
6944
+ {" " , 0 , 0 , false , NULL , NULL , NULL , NULL }
6943
6945
};
6944
6946
6945
6947
0 commit comments