| #! /bin/sh |
| #------------------------------------------------------------------------- |
| # |
| # Gen_hawq_func_mapping.sh |
| # shell script to generate hawq_funcoid_mapping.h |
| # |
| # NOTE: if you want to add more patern, pay attention to |
| # 1) the space between the macro name and the coressponding value |
| # 2) the match_regex pattern to filter out the macro |
| # 3) TEXT and BPCHAR share the same hornet function when the return |
| # type is neither text nor bpchar(i.e. cmp-op, char_length, like etc.). |
| # In the other hand, MIN/MAX() has specified function for TEXT/BPCHAR |
| # respectively. |
| # This is due to the internal design of hornet. |
| # |
| #------------------------------------------------------------------------- |
| |
| set -e |
| HEADER_FILE="dbcommon/function/func-kind.cg.h" |
| CMDNAME=`basename $0` |
| TMP_FILE='hawq_funcoid_mapping_tmp' |
| INPUT_FILE=$1 |
| OUTPUT_FILE=$2 |
| |
| map_type_hawq+=(BOOL INT2 INT4 INT8 FLOAT4 FLOAT8 TEXT DATE TIME BPCHAR BYTEA TIMESTAMP TID NUMERIC) |
| map_type_hornet+=(BOOLEAN SMALLINT INT BIGINT FLOAT DOUBLE STRING DATE TIME BPCHAR BINARY TIMESTAMP BIGINT DECIMAL) |
| |
| map_func_hawq+=(LT LE EQ NE GT GE) |
| map_func_hornet+=(LESS_THAN LESS_EQ EQUAL NOT_EQUAL GREATER_THAN GREATER_EQ) |
| |
| map_func_hawq+=(PL MI MUL DIV) |
| map_func_hornet+=(ADD SUB MUL DIV) |
| |
| #------------------------------------------------------------------------- |
| # filter part |
| #------------------------------------------------------------------------- |
| # arithmetic and compare |
| match_regex='(F_(INT|FLOAT)[248][248]*('`echo ${map_func_hawq[@]}|sed 's/ /|/g'`') )' |
| match_regex=$match_regex'|(F_(DATE)(_*)(MI) )' |
| match_regex=$match_regex'|(F_(NUMERIC)(_*)(ADD|SUB|MUL|DIV) )' |
| # only for compare |
| match_regex=$match_regex'|(F_(TEXT|BOOL|DATE|TIME|BPCHAR|BYTEA|TIMESTAMP|INTERVAL|TID|NUMERIC|CHAR)(_*)(LT|LE|GT|GE|EQ|NE) )' |
| match_regex=$match_regex'|(F_(DATE|TIMESTAMP)(_*)(LT|LE|GT|GE|EQ|NE)(_*)(DATE|TIMESTAMP) )' |
| # type cast |
| match_regex=$match_regex'|(F_(I[248]|F|D)TO(I[248]|F|D) )' |
| match_regex=$match_regex'|(F_INT[248][248] )' |
| match_regex=$match_regex'|(F_NUMERIC_(INT2|INT4|INT8|FLOAT4|FLOAT8) )' |
| match_regex=$match_regex'|(F_(INT2|INT4|INT8|FLOAT4|FLOAT8)_NUMERIC )' |
| match_regex=$match_regex'|(F_NUMERIC )' |
| # aggregation function |
| match_regex=$match_regex'|(F_(INT[248]|FLOAT[48])_AVG(_(ACCUM|AMALG))* )' |
| match_regex=$match_regex'|(F_(INT[248]|FLOAT[48])_STDDEV_SAMP(_(ACCUM|AMALG))* )' |
| match_regex=$match_regex'|(F_(INT[248]|FLOAT[48])_STDDEV_POP(_(ACCUM|AMALG))* )' |
| match_regex=$match_regex'|(F_(INT[248])_SUM )' |
| match_regex=$match_regex'|(F_INT8INC(_ANY)* )' |
| # random function |
| match_regex=$match_regex'|(F_DRANDOM )' |
| # sign and round function |
| match_regex=$match_regex'|(F_(DSIGN|NUMERIC_SIGN) )' |
| match_regex=$match_regex'|(F_NUMERIC_ROUND )' |
| # date/time function |
| match_regex=$match_regex'|(F_(DATE|TIME|TIMESTAMP|INTERVAL)_(PL|MI)(_*)(INTERVAL|DATE|TIME|TIMESTAMP)* )' |
| |
| cat > $OUTPUT_FILE << CATSTAMP |
| /* |
| * hawq_funcoid_mapping.h |
| * |
| * NOTES |
| * ****************************** |
| * *** DO NOT EDIT THIS FILE! *** |
| * ****************************** |
| * |
| * It has been GENERATED by $CMDNAME |
| */ |
| #ifndef HAWQ_FUNCOID_MAPPING_H |
| #define HAWQ_FUNCOID_MAPPING_H |
| |
| #include "$HEADER_FILE" |
| static const int hawq_funcoid_mapping[] = { |
| CATSTAMP |
| |
| grep 'define' $INPUT_FILE | tr -s ' ' | cut -d ' ' -f 2,3 | grep -E "$match_regex" | |
| sort -n -k2 > $TMP_FILE |
| # type cast function |
| sed -E "s/F_(I[248]|F|D)TO(I[248]|F|D) /\1_TO_\2 /" $TMP_FILE | |
| sed -E "s/F_INT([248])([248]) /INT\1_TO_INT\2 /" | |
| sed -E 's/I([248])_TO_/INT\1_TO_/ ; s/_TO_I([248])/_TO_INT\1/' | |
| sed -E 's/F_TO_/FLOAT4_TO_/ ; s/_TO_F/_TO_FLOAT4/' | |
| sed -E 's/D_TO_/FLOAT8_TO_/ ; s/_TO_D/_TO_FLOAT8/' | |
| sed -E "s/F_NUMERIC_INT([248]) /DECIMAL_TO_INT\1 /" | |
| sed -E "s/F_INT([248])_NUMERIC /INT\1_TO_DECIMAL /" | |
| sed -E "s/F_FLOAT4_NUMERIC /FLOAT_TO_DECIMAL /" | |
| sed -E "s/F_FLOAT8_NUMERIC /DOUBLE_TO_DECIMAL /" | |
| sed -E "s/F_NUMERIC_FLOAT4 /DECIMAL_TO_FLOAT /" | |
| sed -E "s/F_NUMERIC_FLOAT8 /DECIMAL_TO_DOUBLE /" | |
| sed -E "s/F_NUMERIC /DECIMAL_TO_DECIMAL /" > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # agg function |
| sed -E "s/F_(INT[248])_SUM /SUM_\1_SUM /" $TMP_FILE | |
| sed -E "s/F_INT8INC /COUNT_STAR /" | |
| sed -E "s/F_INT8INC_ANY /COUNT_INC /" | |
| sed -E "s/F_(INT[248]|FLOAT[48])_STDDEV_SAMP_ACCUM /STDDEV_SAMP_\1_ACCU /" | |
| sed -E "s/F_(INT[248]|FLOAT[48])_STDDEV_SAMP_AMALG /STDDEV_SAMP_\1_AMALG /" | |
| sed -E "s/F_(INT[248]|FLOAT[48])_STDDEV_SAMP /STDDEV_SAMP_\1_STDDEV_SAMP /" | |
| sed -E "s/F_(INT[248]|FLOAT[48])_STDDEV_POP_ACCUM /STDDEV_POP_\1_ACCU /" | |
| sed -E "s/F_(INT[248]|FLOAT[48])_STDDEV_POP_AMALG /STDDEV_POP_\1_AMALG /" | |
| sed -E "s/F_(INT[248]|FLOAT[48])_STDDEV_POP /STDDEV_POP_\1_STDDEV_POP /" | |
| sed -E "s/F_(INT[248]|FLOAT[48])_AVG_ACCUM /AVG_\1_ACCU /" | |
| sed -E "s/F_(INT[248]|FLOAT[48])_AVG_AMALG /AVG_\1_AMALG /" | |
| sed -E "s/F_(INT[248]|FLOAT[48])_AVG /AVG_\1_AVG /" > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # random function |
| sed -E "s/F_DRANDOM /RANDOMF /" $TMP_FILE > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # sign and round function |
| sed -E "s/F_DSIGN /DOUBLE_SIGN /" $TMP_FILE | |
| sed -E "s/F_NUMERIC_SIGN /DECIMAL_SIGN /" | |
| sed -E "s/F_NUMERIC_ROUND /DECIMAL_ROUND /" > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # arithmetic and compare |
| map_func_size=${#map_func_hawq[@]} |
| for val in `seq 0 $(($map_func_size-1))` |
| do |
| src=${map_func_hawq[$val]} |
| dst=${map_func_hornet[$val]} |
| # expand when the left operand and the right operand are the same |
| sed -E "s/F_(INT|FLOAT)([248])$src /F_\1\2\2$src /" $TMP_FILE | |
| # expand the shorthand operand sequence |
| sed -E "s/F_(INT|FLOAT)([248])([248])$src /F_\1\2\1\3$src /" > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # map the operator and modify into infix expression |
| sed -E "s/F_(INT|FLOAT)([248])(INT|FLOAT)([248])${src} /\1\2_${dst}_\3\4 /" $TMP_FILE > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # for "char" |
| sed -E "s/F_CHAR(_*)${src} /TINYINT_${dst}_TINYINT /" $TMP_FILE > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # for text, boolean, char(n), binary |
| sed -E "s/F_(TEXT|BOOL|BPCHAR|BYTEA)(_*)${src} /\1_${dst}_\1 /" $TMP_FILE > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # for date |
| sed -E "s/F_DATE(_*)${src} /INT_${dst}_INT /" $TMP_FILE | |
| sed -E "s/F_DATE(_*)${src}(_*)TIMESTAMP /DATE_${dst}_TIMESTAMP /" > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # for time |
| sed -E "s/F_TIME(_*)${src} /BIGINT_${dst}_BIGINT /" $TMP_FILE | |
| sed -E "s/F_TIME_MI_TIME /TIME_SUB_TIME /" > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # for timestamp |
| sed -E "s/F_TIMESTAMP(_*)${src} /TIMESTAMP_${dst}_TIMESTAMP /" $TMP_FILE | |
| sed -E "s/F_TIMESTAMP(_*)${src}(_*)DATE /TIMESTAMP_${dst}_DATE /" > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # for interval |
| sed -E "s/F_INTERVAL(_*)${src} /INTERVAL_${dst}_INTERVAL /" $TMP_FILE | |
| sed -E "s/F_(DATE|TIME|TIMESTAMP)_${src}_INTERVAL /\1_${dst}_INTERVAL /" > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # for tid |
| sed -E "s/F_TID(_*)${src} /BIGINT_${dst}_BIGINT /" $TMP_FILE > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| # for decimal |
| sed -E "s/F_NUMERIC(_*)${src} /DECIMAL_${dst}_DECIMAL /" $TMP_FILE | |
| sed -E "s/F_NUMERIC(_*)${dst} /DECIMAL_${dst}_DECIMAL /" > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| |
| done |
| |
| # map the type name to hornet |
| map_type_size=${#map_type_hawq[@]} |
| for val in `seq 0 $(($map_type_size-1))` |
| do |
| src=${map_type_hawq[$val]} |
| dst=${map_type_hornet[$val]} |
| sed -E "s/${src}/${dst}/g" $TMP_FILE > $TMP_FILE.tmp |
| mv $TMP_FILE.tmp $TMP_FILE |
| done |
| |
| # expand checking function oid range |
| echo "FUNCINVALID 6022" >> $TMP_FILE |
| |
| # hand written mapping for others |
| awk ' |
| BEGIN { |
| max=0; |
| num=0; |
| print "FUNCINVALID," |
| last=0; |
| } |
| { |
| if ($2 > max) max = $2; |
| for (oid=last + 1; oid <= $2 - 1; oid++) |
| { |
| # here is a workaroud for agg |
| if (oid == 2100) |
| print "AVG_BIGINT,"; |
| else if (oid == 2101) |
| print "AVG_INT,"; |
| else if (oid == 2102) |
| print "AVG_SMALLINT,"; |
| else if (oid == 2103) |
| print "AVG_DECIMAL,"; |
| else if (oid == 2104) |
| print "AVG_FLOAT,"; |
| else if (oid == 2105) |
| print "AVG_DOUBLE,"; |
| |
| else if (oid == 2107) |
| print "SUM_BIGINT,"; |
| else if (oid == 2108) |
| print "SUM_INT,"; |
| else if (oid == 2109) |
| print "SUM_SMALLINT,"; |
| else if (oid == 2110) |
| print "SUM_FLOAT,"; |
| else if (oid == 2111) |
| print "SUM_DOUBLE,"; |
| else if (oid == 2114) |
| print "SUM_DECIMAL,"; |
| |
| else if (oid == 2115) |
| print "MAX_BIGINT,"; |
| else if (oid == 2116) |
| print "MAX_INT,"; |
| else if (oid == 2117) |
| print "MAX_SMALLINT,"; |
| else if (oid == 2119) |
| print "MAX_FLOAT,"; |
| else if (oid == 2120) |
| print "MAX_DOUBLE,"; |
| else if (oid == 2129) |
| print "MAX_STRING,"; |
| else if (oid == 2244) |
| print "MAX_BPCHAR,"; |
| else if (oid == 2123) |
| print "MAX_TIME,"; |
| else if (oid == 2122) |
| print "MAX_DATE,"; |
| else if (oid == 2126) |
| print "MAX_TIMESTAMP,"; |
| else if (oid == 2130) |
| print "MAX_DECIMAL,"; |
| |
| else if (oid == 2131) |
| print "MIN_BIGINT,"; |
| else if (oid == 2132) |
| print "MIN_INT,"; |
| else if (oid == 2133) |
| print "MIN_SMALLINT,"; |
| else if (oid == 2135) |
| print "MIN_FLOAT,"; |
| else if (oid == 2136) |
| print "MIN_DOUBLE,"; |
| else if (oid == 2145) |
| print "MIN_STRING,"; |
| else if (oid == 2245) |
| print "MIN_BPCHAR,"; |
| else if (oid == 2139) |
| print "MIN_TIME,"; |
| else if (oid == 2138) |
| print "MIN_DATE,"; |
| else if (oid == 2142) |
| print "MIN_TIMESTAMP,"; |
| else if (oid == 2146) |
| print "MIN_DECIMAL,"; |
| |
| else if (oid == 2147) |
| print "COUNT,"; |
| else if (oid == 2803) |
| print "COUNT_STAR,"; |
| |
| else if (oid == 2712) |
| print "STDDEV_SAMP_BIGINT,"; |
| else if (oid == 2713) |
| print "STDDEV_SAMP_INT,"; |
| else if (oid == 2714) |
| print "STDDEV_SAMP_SMALLINT,"; |
| else if (oid == 2715) |
| print "STDDEV_SAMP_FLOAT,"; |
| else if (oid == 2716) |
| print "STDDEV_SAMP_DOUBLE,"; |
| else if (oid == 2717) |
| print "STDDEV_SAMP_DECIMAL,"; |
| |
| else if (oid == 2724) |
| print "STDDEV_POP_BIGINT,"; |
| else if (oid == 2725) |
| print "STDDEV_POP_INT,"; |
| else if (oid == 2726) |
| print "STDDEV_POP_SMALLINT,"; |
| else if (oid == 2727) |
| print "STDDEV_POP_FLOAT,"; |
| else if (oid == 2728) |
| print "STDDEV_POP_DOUBLE,"; |
| else if (oid == 2729) |
| print "STDDEV_POP_DECIMAL,"; |
| |
| else if (oid == 2154) |
| print "STDDEV_BIGINT,"; |
| else if (oid == 2155) |
| print "STDDEV_INT,"; |
| else if (oid == 2156) |
| print "STDDEV_SMALLINT,"; |
| else if (oid == 2157) |
| print "STDDEV_FLOAT,"; |
| else if (oid == 2158) |
| print "STDDEV_DOUBLE,"; |
| else if (oid == 2159) |
| print "STDDEV_DECIMAL,"; |
| |
| else if (oid == 1193) |
| print "INTERVAL_TO_TEXT,"; |
| else if (oid == 112) |
| print "INT_TO_TEXT,"; |
| else if (oid == 113) |
| print "SMALLINT_TO_TEXT,"; |
| else if (oid == 1289) |
| print "BIGINT_TO_TEXT,"; |
| else if (oid == 840) |
| print "DOUBLE_TO_TEXT,"; |
| else if (oid == 841) |
| print "FLOAT_TO_TEXT,"; |
| else if (oid == 1688) |
| print "DECIMAL_TO_TEXT,"; |
| else if (oid == 749) |
| print "DATE_TO_TEXT,"; |
| else if (oid == 2971) |
| print "BOOL_TO_TEXT,"; |
| else if (oid == 948) |
| print "TIME_TO_TEXT,"; |
| |
| else if (oid == 1779) |
| print "DOUBLE_TO_BIGINT,"; |
| else if (oid == 1744) |
| print "DOUBLE_TO_INT,"; |
| else if (oid == 1783) |
| print "DOUBLE_TO_SMALLINT,"; |
| else if (oid == 1745) |
| print "DOUBLE_TO_FLOAT,"; |
| else if (oid == 1746) |
| print "DONOTHING,"; |
| |
| # just for temp workaround |
| else if (oid == 2052) |
| print "TIMESTAMP_EQUAL_TIMESTAMP,"; |
| else if (oid == 2053) |
| print "TIMESTAMP_NOT_EQUAL_TIMESTAMP,"; |
| else if (oid == 2054) |
| print "TIMESTAMP_LESS_THAN_TIMESTAMP,"; |
| else if (oid == 2055) |
| print "TIMESTAMP_LESS_EQ_TIMESTAMP,"; |
| else if (oid == 2056) |
| print "TIMESTAMP_GREATER_EQ_TIMESTAMP,"; |
| else if (oid == 2057) |
| print "TIMESTAMP_GREATER_THAN_TIMESTAMP,"; |
| |
| else if (oid == 401) |
| print "CHAR_TO_STRING,"; |
| else if (oid == 1374) |
| print "STRING_OCTET_LENGTH,"; |
| else if (oid == 1375) |
| print "BPCHAR_OCTET_LENGTH,"; |
| else if (oid == 1381 || oid == 1317) |
| print "STRING_CHAR_LENGTH,"; |
| else if (oid == 1372 || oid == 1318) |
| print "BPCHAR_CHAR_LENGTH,"; |
| |
| else if (oid == 850) |
| print "STRING_LIKE,"; |
| else if (oid == 1631) |
| print "BPCHAR_LIKE,"; |
| else if (oid == 851) |
| print "STRING_NOT_LIKE,"; |
| else if (oid == 1632) |
| print "BPCHAR_NOT_LIKE,"; |
| else if (oid == 1777) |
| print "TO_NUMBER,"; |
| else if (oid == 936 || oid == 877) |
| print "STRING_SUBSTRING,"; |
| else if (oid == 937 || oid ==883) |
| print "STRING_SUBSTRING_NOLEN,"; |
| |
| else if (oid == 870) |
| print "STRING_LOWER,"; |
| else if (oid == 871) |
| print "STRING_UPPER,"; |
| else if (oid == 2435) |
| print "CHAR_TO_BYTEA,"; |
| else if (oid == 2405) |
| print "SMALLINT_TO_BYTEA,"; |
| else if (oid == 2407) |
| print "INT_TO_BYTEA,"; |
| else if (oid == 2409) |
| print "BIGINT_TO_BYTEA,"; |
| else if (oid == 2425) |
| print "FLOAT_TO_BYTEA,"; |
| else if (oid == 2427) |
| print "DOUBLE_TO_BYTEA,"; |
| else if (oid == 2437) |
| print "BOOL_TO_BYTEA,"; |
| else if (oid == 2415) |
| print "TEXT_TO_BYTEA,"; |
| else if (oid == 2469) |
| print "DATE_TO_BYTEA,"; |
| else if (oid == 2471) |
| print "TIME_TO_BYTEA,"; |
| else if (oid == 2475) |
| print "TIMESTAMP_TO_BYTEA,"; |
| else if (oid == 2477) |
| print "TIMESTAMPTZ_TO_BYTEA,"; |
| else if (oid == 2479) |
| print "INTERVAL_TO_BYTEA,"; |
| else if (oid == 2461) |
| print "DECIMAL_TO_BYTEA,"; |
| else if (oid == 818) |
| print "TEXT_TO_SMALLINT,"; |
| else if (oid == 819) |
| print "TEXT_TO_INT,"; |
| else if (oid == 1290) |
| print "TEXT_TO_BIGINT,"; |
| else if (oid == 839) |
| print "TEXT_TO_FLOAT,"; |
| else if (oid == 838) |
| print "TEXT_TO_DOUBLE,"; |
| else if (oid == 1686) |
| print "TEXT_TO_DECIMAL,"; |
| else if (oid == 1258) |
| print "STRING_CONCAT,"; |
| else if (oid == 849) |
| print "STRING_POSITION,"; |
| else if (oid == 868) |
| print "STRING_STRPOS,"; |
| else if (oid == 872) |
| print "STRING_INITCAP,"; |
| else if (oid == 1620) |
| print "STRING_ASCII,"; |
| else if (oid == 669) |
| print "STRING_VARCHAR,"; |
| else if (oid == 875) |
| print "STRING_LTRIM_CHARS,"; |
| else if (oid == 876) |
| print "STRING_RTRIM_CHARS,"; |
| else if (oid == 881) |
| print "STRING_LTRIM_BLANK,"; |
| else if (oid == 882) |
| print "STRING_RTRIM_BLANK,"; |
| else if (oid == 884) |
| print "STRING_BTRIM_CHARS,"; |
| else if (oid == 885) |
| print "STRING_BTRIM_BLANK,"; |
| else if (oid == 1622) |
| print "STRING_REPEAT,"; |
| else if (oid == 1621) |
| print "STRING_CHR,"; |
| else if (oid == 668) |
| print "STRING_BPCHAR,"; |
| else if (oid == 873) |
| printf "STRING_LPAD,"; |
| else if (oid == 874) |
| printf "STRING_RPAD,"; |
| else if (oid == 879) |
| printf "STRING_LPAD_NOFILL,"; |
| else if (oid == 880) |
| printf "STRING_RPAD_NOFILL,"; |
| else if (oid == 2557) |
| print "INT_TO_BOOLEAN,"; |
| else if (oid == 2558) |
| print "BOOLEAN_TO_INT,"; |
| else if (oid == 878) |
| printf "STRING_TRANSLATE,"; |
| |
| else if (oid == 221 || oid == 1395) |
| print "DOUBLE_ABS,"; |
| else if (oid == 207 || oid == 1394) |
| print "FLOAT_ABS,"; |
| else if (oid == 1230 || oid == 1396) |
| print "INT64_ABS,"; |
| else if (oid == 1251 || oid == 1397) |
| print "INT32_ABS,"; |
| else if (oid == 1253 || oid == 1398) |
| print "INT16_ABS,"; |
| else if (oid == 1345) |
| print "DOUBLE_CBRT,"; |
| else if (oid == 231) |
| print "DOUBLE_CBRT,"; |
| else if (oid == 230 || oid == 1344) |
| print "DOUBLE_SQRT,"; |
| else if (oid == 1895) |
| print "INT16_BINARY_NOT,"; |
| else if (oid == 1901) |
| print "INT32_BINARY_NOT,"; |
| else if (oid == 1907) |
| print "INT64_BINARY_NOT,"; |
| else if (oid == 1896) |
| print "INT16_BINARY_SHIFT_LEFT,"; |
| else if (oid == 1902) |
| print "INT32_BINARY_SHIFT_LEFT,"; |
| else if (oid == 1908) |
| print "INT64_BINARY_SHIFT_LEFT,"; |
| else if (oid == 1897) |
| print "INT16_BINARY_SHIFT_RIGHT,"; |
| else if (oid == 1903) |
| print "INT32_BINARY_SHIFT_RIGHT,"; |
| else if (oid == 1909) |
| print "INT64_BINARY_SHIFT_RIGHT,"; |
| else if (oid == 1892) |
| print "INT16_BINARY_AND,"; |
| else if (oid == 1898) |
| print "INT32_BINARY_AND,"; |
| else if (oid == 1904) |
| print "INT64_BINARY_AND,"; |
| else if (oid == 1893) |
| print "INT16_BINARY_OR,"; |
| else if (oid == 1899) |
| print "INT32_BINARY_OR,"; |
| else if (oid == 1905) |
| print "INT64_BINARY_OR,"; |
| else if (oid == 1894) |
| print "INT16_BINARY_XOR,"; |
| else if (oid == 1900) |
| print "INT32_BINARY_XOR,"; |
| else if (oid == 1906) |
| print "INT64_BINARY_XOR,"; |
| else if (oid == 155 || oid == 940) |
| print "INT16_MOD,"; |
| else if (oid == 156 || oid == 941) |
| print "INT32_MOD,"; |
| else if (oid == 174 || oid == 942) |
| print "INT16_32_MOD,"; |
| else if (oid == 175 || oid == 943) |
| print "INT32_16_MOD,"; |
| else if (oid == 945 || oid == 947) |
| print "INT64_MOD,"; |
| else if (oid == 232 || oid == 1346 || oid == 1368) |
| print "DOUBLE_POW,"; |
| else if (oid == 2308 || oid == 2320) |
| print "DOUBLE_CEIL,"; |
| else if (oid == 2309) |
| print "DOUBLE_FLOOR,"; |
| else if (oid == 228 || oid == 1342) |
| print "DOUBLE_ROUND,"; |
| else if (oid == 229 || oid == 1343) |
| print "DOUBLE_TRUNC,"; |
| else if (oid == 2310) |
| print "DOUBLE_SIGN," |
| else if (oid == 1704 || oid == 1705) |
| print "DECIMAL_ABS," |
| else if (oid == 1706) |
| print "DECIMAL_SIGN," |
| else if (oid == 1711 || oid == 2167) |
| print "DECIMAL_CEIL," |
| else if (oid == 1712) |
| print "DECIMAL_FLOOR," |
| else if (oid == 1707) |
| print "DECIMAL_ROUND," |
| else if (oid == 1708) |
| print "DECIMAL_ROUND_WITHOUT_SCALE," |
| else if (oid == 1709) |
| print "DECIMAL_TRUNC," |
| else if (oid == 1710) |
| print "DECIMAL_TRUNC_WITHOUT_SCALE," |
| else if (oid == 1728 || oid == 1729) |
| print "DECIMAL_MOD," |
| else if (oid == 233 || oid == 1347) |
| print "DOUBLE_EXP," |
| else if (oid == 234 || oid == 1341) |
| print "DOUBLE_LN," |
| else if (oid == 1339 || oid == 1340) |
| print "DOUBLE_LG," |
| else if (oid == 1601) |
| print "DOUBLE_ACOS," |
| else if (oid == 1600) |
| print "DOUBLE_ASIN," |
| else if (oid == 1602) |
| print "DOUBLE_ATAN," |
| else if (oid == 1603) |
| print "DOUBLE_ATAN2," |
| else if (oid == 1605) |
| print "DOUBLE_COS," |
| else if (oid == 1607) |
| print "DOUBLE_COT," |
| else if (oid == 1604) |
| print "DOUBLE_SIN," |
| else if (oid == 1606) |
| print "DOUBLE_TAN," |
| else if (oid == 1730 || oid == 1731) |
| print "DECIMAL_SQRT," |
| else if (oid == 1732 || oid == 1733) |
| print "DECIMAL_EXP," |
| else if (oid == 1734 || oid == 1735) |
| print "DECIMAL_LN," |
| else if (oid == 1736 || oid == 1737) |
| print "DECIMAL_LOG," |
| else if (oid == 111 || oid == 1376) |
| print "DECIMAL_FAC," |
| else if (oid == 1738 || oid == 2169 || oid == 1739) |
| print "DECIMAL_POW," |
| |
| |
| else if (oid == 720) |
| print "BINARY_OCTET_LENGTH,"; |
| |
| else if (oid == 3135) |
| print "FLOAT_ARRAY_EUCLIDEAN_METRIC," |
| |
| else if (oid == 3136) |
| print "DOUBLE_ARRAY_EUCLIDEAN_METRIC," |
| |
| else if (oid == 3137) |
| print "FLOAT_ARRAY_COSINE_DISTANCE," |
| |
| else if (oid == 3138) |
| print "DOUBLE_ARRAY_COSINE_DISTANCE," |
| |
| else if (oid == 2747) |
| print "BIGINT_ARRAY_OVERLAP," |
| |
| else if (oid == 2748) |
| print "BIGINT_ARRAY_CONTAINS," |
| |
| else if (oid == 2749) |
| print "BIGINT_ARRAY_CONTAINED," |
| |
| else if (oid == 1158) |
| print "DOUBLE_TO_TIMESTAMP," |
| else if (oid == 2024 || oid == 1174) |
| print "DATE_TO_TIMESTAMP," |
| else if (oid == 2029 || oid == 1178) |
| print "TIMESTAMP_TO_DATE," |
| else if (oid == 2031) |
| print "TIMESTAMP_SUB_TIMESTAMP," |
| else if (oid == 2034) |
| print "TIMESTAMP_TO_TEXT," |
| else if (oid == 1192) |
| print "TIMESTAMPTZ_TO_TEXT," |
| else if (oid == 1141) |
| print "DATE_ADD_INT,"; |
| else if (oid == 1142) |
| print "DATE_SUB_INT,"; |
| |
| else if (oid == 1389 || oid == 2048) |
| print "IS_TIMESTAMP_FINITE," |
| else if (oid == 2021) |
| print "TIMESTAMP_DATE_PART," |
| else if (oid == 2020) |
| print "TIMESTAMP_DATE_TRUNC," |
| else if (oid == 1342) |
| print "DOUBLE_ROUND," |
| |
| else if (oid == 2160) |
| print "STRING_LESS_THAN_STRING," |
| else if (oid == 2161) |
| print "STRING_LESS_EQ_STRING," |
| else if (oid == 2162) |
| print "STRING_EQUAL_STRING," |
| else if (oid == 2163) |
| print "STRING_GREATER_EQ_STRING," |
| else if (oid == 2164) |
| print "STRING_GREATER_THAN_STRING," |
| else if (oid == 2165) |
| print "STRING_NOT_EQUAL_STRING," |
| else if (oid == 2174) |
| print "BPCHAR_LESS_THAN_BPCHAR," |
| else if (oid == 2175) |
| print "BPCHAR_LESS_EQ_BPCHAR," |
| else if (oid == 2176) |
| print "BPCHAR_EQUAL_BPCHAR," |
| else if (oid == 2177) |
| print "BPCHAR_GREATER_EQ_BPCHAR," |
| else if (oid == 2178) |
| print "BPCHAR_GREATER_THAN_BPCHAR," |
| else if (oid == 2179) |
| print "BPCHAR_NOT_EQUAL_BPCHAR," |
| |
| else if (oid == 2284) |
| print "REGEX_REPLACE," |
| else if (oid == 1254 ) |
| print "TEXT_REGEX_EQ," |
| else if (oid == 1238 ) |
| print "TEXT_IC_REGEX_EQ," |
| else if (oid == 1256) |
| print "TEXT_REGEX_NE," |
| else if (oid == 1239) |
| print "TEXT_IC_REGEX_NE," |
| else if (oid == 1658) |
| print "BPCHAR_REGEX_EQ," |
| else if (oid == 1656) |
| print "BPCHAR_IC_REGEX_EQ," |
| else if (oid == 1659) |
| print "BPCHAR_REGEX_NE," |
| else if (oid == 1657) |
| print "BPCHAR_IC_REGEX_NE," |
| |
| # convert tid to int8, timestamp and timestamptz interconversion |
| else if (oid == 6021 || oid == 2027 || oid == 2028 || oid == 946) |
| print "DONOTHING," |
| |
| else |
| print "FUNCINVALID + 1," |
| } |
| print $1 "," |
| last = $2 |
| } |
| END { |
| print "};" |
| print "#define HAWQ_FUNCOID_MAPPING_UPPER_BOUND " last |
| } |
| ' $TMP_FILE >> $OUTPUT_FILE |
| rm $TMP_FILE |
| |
| cat >> $OUTPUT_FILE << CATSTAMP |
| |
| #define HAWQ_FUNCOID_MAPPING(oid) \\ |
| (((oid) > HAWQ_FUNCOID_MAPPING_UPPER_BOUND) ? FUNCINVALID + 1 : hawq_funcoid_mapping[(oid)]) |
| |
| #define IS_HAWQ_MAPPING_FUNCID_INVALID(funcid) (funcid > FUNCINVALID) |
| |
| #define IS_HAWQ_MAPPING_DO_NOTHING(funcid) (funcid == DONOTHING) |
| |
| #endif /* HAWQ_FUNCOID_MAPPING_H */ |
| CATSTAMP |