[ https://issues.apache.org/jira/browse/FLINK-4248?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15509444#comment-15509444 ]
ASF GitHub Bot commented on FLINK-4248: --------------------------------------- Github user fhueske commented on a diff in the pull request: https://github.com/apache/flink/pull/2303#discussion_r79798776 --- Diff: flink-core/src/main/java/org/apache/flink/types/parser/FieldParser.java --- @@ -174,6 +174,62 @@ protected void setErrorState(ParseErrorState error) { public ParseErrorState getErrorState() { return this.errorState; } + + /** + * Returns the end position of a string with a numeric format (like XXXX-XX-XX). Sets the error state if the + * string contains leading/trailing whitespaces or if the column is empty. + * + * @return the end position of the string or -1 if an error occurred + */ + public final int formattedStringEndPos(byte[] bytes, int startPos, int limit, byte[] delimiter) { + int len = startPos; + + final int delimLimit = limit - delimiter.length + 1; + + while (len < limit) { + if (len < delimLimit && delimiterNext(bytes, len, delimiter)) { + if (len == startPos) { + setErrorState(ParseErrorState.EMPTY_COLUMN); + return -1; + } + break; + } + len++; + } + + if (len > startPos && + (Character.isWhitespace(bytes[startPos]) || Character.isWhitespace(bytes[(len - 1)]))) { + setErrorState(ParseErrorState.NUMERIC_VALUE_ILLEGAL_CHARACTER); + return -1; + } + + return len; + } + + /** + * Returns a string with a numeric format (like XXXX-XX-XX). Throws an exception if the + * string contains leading/trailing whitespaces or if the column is empty. + * + * @return the parsed string + */ + public static final String formattedString(byte[] bytes, int startPos, int length, char delimiter) { + if (length <= 0) { + throw new NumberFormatException("Invalid input: Empty string"); + } + int i = 0; + final byte delByte = (byte) delimiter; + + while (i < length && bytes[startPos + i] != delByte) { + i++; + } + + if (i > 0 && + (Character.isWhitespace(bytes[startPos]) || Character.isWhitespace(bytes[startPos + i - 1]))) { + throw new NumberFormatException("There is leading or trailing whitespace in the numeric field."); --- End diff -- Throw a `IllegalArgumentException`? Method might be used by parsers that do not parse numeric values. > CsvTableSource does not support reading SqlTimeTypeInfo types > ------------------------------------------------------------- > > Key: FLINK-4248 > URL: https://issues.apache.org/jira/browse/FLINK-4248 > Project: Flink > Issue Type: Improvement > Components: Table API & SQL > Affects Versions: 1.1.0 > Reporter: Till Rohrmann > Assignee: Timo Walther > > The Table API's {{CsvTableSource}} does not support to read all Table API > supported data types. For example, it is not possible to read > {{SqlTimeTypeInfo}} types via the {{CsvTableSource}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)