[feature](csv)Supports reading CSV data using LF and CRLF as line separators. (#37687) (#38099)

bp #37687
This commit is contained in:
daidai
2024-07-22 22:53:04 +08:00
committed by GitHub
parent aff3f292a7
commit 193be20c86
13 changed files with 851 additions and 22 deletions

View File

@ -552,6 +552,8 @@ public class SessionVariable implements Serializable, Writable {
public static final String ENABLE_PUSHDOWN_MINMAX_ON_UNIQUE = "enable_pushdown_minmax_on_unique";
public static final String KEEP_CARRIAGE_RETURN = "keep_carriage_return";
public static final String ENABLE_PUSHDOWN_STRING_MINMAX = "enable_pushdown_string_minmax";
// When set use fix replica = true, the fixed replica maybe bad, try to use the health one if
@ -1755,6 +1757,12 @@ public class SessionVariable implements Serializable, Writable {
"The maximum number of partitions created during table creation"})
public int createTablePartitionMaxNum = 10000;
@VariableMgr.VarAttr(name = KEEP_CARRIAGE_RETURN,
description = {"在同时处理\r和\r\n作为CSV的行分隔符时,是否保留\r",
"When processing both \\n and \\r\\n as CSV line separators, should \\r be retained?"})
public boolean keepCarriageReturn = false;
@VariableMgr.VarAttr(name = FORCE_JNI_SCANNER,
description = {"强制使用jni方式读取外表", "Force the use of jni mode to read external table"})
private boolean forceJniScanner = false;
@ -3133,6 +3141,14 @@ public class SessionVariable implements Serializable, Writable {
this.enableUnicodeNameSupport = enableUnicodeNameSupport;
}
public boolean isKeepCarriageReturn() {
return keepCarriageReturn;
}
public void setKeepCarriageReturn(boolean keepCarriageReturn) {
this.keepCarriageReturn = keepCarriageReturn;
}
public boolean isDropTableIfCtasFailed() {
return dropTableIfCtasFailed;
}
@ -3395,6 +3411,7 @@ public class SessionVariable implements Serializable, Writable {
tResult.setReadCsvEmptyLineAsNull(readCsvEmptyLineAsNull);
tResult.setSerdeDialect(getSerdeDialect());
tResult.setKeepCarriageReturn(keepCarriageReturn);
return tResult;
}