blob: 1aa96d42a633218c6e6973b43565265478004563 [file] [log] [blame]
#! /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