[GitHub] trafodion pull request #1747: [TRAFODION-3235] add div and trim function for...
Github user SuJinpei commented on a diff in the pull request: https://github.com/apache/trafodion/pull/1747#discussion_r234884122 --- Diff: core/conn/odb/src/odb.c --- @@ -14685,6 +14743,56 @@ static void addGlobalPointer(void *ptr) globalPointers[nGlobalPointers++] = ptr; } +/* is_valid_numeric: +* check if the string is valid numeric +* +* Input: str: string to be validate. +* Input: n: length of str +* +* return: if str is valid numeric return 1 else return 0 +*/ +static int is_valid_numeric(const char* str, size_t n) { +int s = 1; +for (size_t i = 0; i < n; ++i) { +switch (s) { +case 1: +if (str[i] == '+' || str[i] == '-') s = 2; +else if (isdigit(str[i])) s = 3; +else return 0; +break; +case 2: +if (!isdigit(str[i])) return 0; +s = 3; +break; +case 3: +if (str[i] == '.') s = 4; +else if (str[i] == 'e') s = 6; +else if (!isdigit(str[i])) return 0; +break; +case 4: +if (!isdigit(str[i])) return 0; +s = 5; +break; +case 5: +if (str[i] == 'e') s = 6; +else if (!isdigit(str[i])) return 0; +break; +case 6: +if (str[i] == '+' || str[i] == '-') s = 7; +else if (isdigit(str[i])) s = 7; +else return 0; +break; +case 7: +if (!isdigit(str[i])) return 0; +break; +default: +return 0; +} +} +if (s == 3 || s == 7 || s == 5) return 1; --- End diff -- Yes, this is also a valid numeric value. ---
[GitHub] trafodion pull request #1747: [TRAFODION-3235] add div and trim function for...
Github user SuJinpei commented on a diff in the pull request: https://github.com/apache/trafodion/pull/1747#discussion_r234883979 --- Diff: core/conn/odb/src/odb.c --- @@ -10076,6 +10114,7 @@ static int Oloadbuff(int eid) clock_gettime(CLOCK_MONOTONIC, &tsp1); #endif Or = SQLExecute(thps[tid].Os) ; /* Execute INSERT (load/copy) or tgt command */ +SQLLEN tLastRow = -1; /* this is special solution for China Union Pay, print only first error message for state 22003 */ --- End diff -- Thank you, I will fix this. ---
[GitHub] trafodion pull request #1747: [TRAFODION-3235] add div and trim function for...
Github user SuJinpei commented on a diff in the pull request: https://github.com/apache/trafodion/pull/1747#discussion_r234883931 --- Diff: core/conn/odb/src/odb.c --- @@ -6246,7 +6248,8 @@ static void Oload(int eid) trt[16]; /* translit to array */ char op;/* 1=substr, 2=dconv, 3=tconv, 4=tsconv, 5=replace, 6=toupper, 7=tolower, 8=firstup, 9=csubstr, 10=translit, - 11=comp, 12=comp3, 13=zoned, 14=emptyasconst, 15=emptyasempty */ + 11=comp, 12=comp3, 13=zoned, 14=emptyasconst, 15=emptyasempty, + 16=div */ --- End diff -- Thank you, I will fix this. ---
[GitHub] trafodion pull request #1744: [TRAFODION-3231]force to make the symbolic lin...
Github user asfgit closed the pull request at: https://github.com/apache/trafodion/pull/1744 ---
[GitHub] trafodion pull request #1745: [TRAFODION-3233] odb rows option not work when...
Github user asfgit closed the pull request at: https://github.com/apache/trafodion/pull/1745 ---
[GitHub] trafodion pull request #1743: [TRAFODION-3232]fix the bug that the element i...
Github user asfgit closed the pull request at: https://github.com/apache/trafodion/pull/1743 ---
[GitHub] trafodion pull request #1747: [TRAFODION-3235] add div and trim function for...
Github user DaveBirdsall commented on a diff in the pull request: https://github.com/apache/trafodion/pull/1747#discussion_r234716204 --- Diff: core/conn/odb/src/odb.c --- @@ -10076,6 +10114,7 @@ static int Oloadbuff(int eid) clock_gettime(CLOCK_MONOTONIC, &tsp1); #endif Or = SQLExecute(thps[tid].Os) ; /* Execute INSERT (load/copy) or tgt command */ +SQLLEN tLastRow = -1; /* this is special solution for China Union Pay, print only first error message for state 22003 */ --- End diff -- Probably best not to put customer names into the code. Consider changing the comment to just "/* print only first error message for state 22003 */" ---
[GitHub] trafodion pull request #1747: [TRAFODION-3235] add div and trim function for...
Github user DaveBirdsall commented on a diff in the pull request: https://github.com/apache/trafodion/pull/1747#discussion_r234715228 --- Diff: core/conn/odb/src/odb.c --- @@ -6246,7 +6248,8 @@ static void Oload(int eid) trt[16]; /* translit to array */ char op;/* 1=substr, 2=dconv, 3=tconv, 4=tsconv, 5=replace, 6=toupper, 7=tolower, 8=firstup, 9=csubstr, 10=translit, - 11=comp, 12=comp3, 13=zoned, 14=emptyasconst, 15=emptyasempty */ + 11=comp, 12=comp3, 13=zoned, 14=emptyasconst, 15=emptyasempty, + 16=div */ --- End diff -- Should the comments also include 17=trim? ---
[GitHub] trafodion pull request #1747: [TRAFODION-3235] add div and trim function for...
Github user DaveBirdsall commented on a diff in the pull request: https://github.com/apache/trafodion/pull/1747#discussion_r234717573 --- Diff: core/conn/odb/src/odb.c --- @@ -14685,6 +14743,56 @@ static void addGlobalPointer(void *ptr) globalPointers[nGlobalPointers++] = ptr; } +/* is_valid_numeric: +* check if the string is valid numeric +* +* Input: str: string to be validate. +* Input: n: length of str +* +* return: if str is valid numeric return 1 else return 0 +*/ +static int is_valid_numeric(const char* str, size_t n) { +int s = 1; +for (size_t i = 0; i < n; ++i) { +switch (s) { +case 1: +if (str[i] == '+' || str[i] == '-') s = 2; +else if (isdigit(str[i])) s = 3; +else return 0; +break; +case 2: +if (!isdigit(str[i])) return 0; +s = 3; +break; +case 3: +if (str[i] == '.') s = 4; +else if (str[i] == 'e') s = 6; +else if (!isdigit(str[i])) return 0; +break; +case 4: +if (!isdigit(str[i])) return 0; +s = 5; +break; +case 5: +if (str[i] == 'e') s = 6; +else if (!isdigit(str[i])) return 0; +break; +case 6: +if (str[i] == '+' || str[i] == '-') s = 7; +else if (isdigit(str[i])) s = 7; +else return 0; +break; +case 7: +if (!isdigit(str[i])) return 0; +break; +default: +return 0; +} +} +if (s == 3 || s == 7 || s == 5) return 1; --- End diff -- I am wondering if s == 4 should be allowed here too. Consider the string "1234." ---