in datafusion/proto/src/logical_plan/file_formats.rs [83:161]
fn from(proto: &CsvOptionsProto) -> Self {
CsvOptions {
has_header: if !proto.has_header.is_empty() {
Some(proto.has_header[0] != 0)
} else {
None
},
delimiter: proto.delimiter.first().copied().unwrap_or(b','),
quote: proto.quote.first().copied().unwrap_or(b'"'),
terminator: if !proto.terminator.is_empty() {
Some(proto.terminator[0])
} else {
None
},
escape: if !proto.escape.is_empty() {
Some(proto.escape[0])
} else {
None
},
double_quote: if !proto.double_quote.is_empty() {
Some(proto.double_quote[0] != 0)
} else {
None
},
compression: match proto.compression {
0 => CompressionTypeVariant::GZIP,
1 => CompressionTypeVariant::BZIP2,
2 => CompressionTypeVariant::XZ,
3 => CompressionTypeVariant::ZSTD,
_ => CompressionTypeVariant::UNCOMPRESSED,
},
schema_infer_max_rec: proto.schema_infer_max_rec.map(|v| v as usize),
date_format: if proto.date_format.is_empty() {
None
} else {
Some(proto.date_format.clone())
},
datetime_format: if proto.datetime_format.is_empty() {
None
} else {
Some(proto.datetime_format.clone())
},
timestamp_format: if proto.timestamp_format.is_empty() {
None
} else {
Some(proto.timestamp_format.clone())
},
timestamp_tz_format: if proto.timestamp_tz_format.is_empty() {
None
} else {
Some(proto.timestamp_tz_format.clone())
},
time_format: if proto.time_format.is_empty() {
None
} else {
Some(proto.time_format.clone())
},
null_value: if proto.null_value.is_empty() {
None
} else {
Some(proto.null_value.clone())
},
null_regex: if proto.null_regex.is_empty() {
None
} else {
Some(proto.null_regex.clone())
},
comment: if !proto.comment.is_empty() {
Some(proto.comment[0])
} else {
None
},
newlines_in_values: if proto.newlines_in_values.is_empty() {
None
} else {
Some(proto.newlines_in_values[0] != 0)
},
}
}