drin commented on code in PR #18187:
URL: https://github.com/apache/datafusion/pull/18187#discussion_r2449166078
##########
datafusion/common/src/table_reference.rs:
##########
@@ -269,24 +269,48 @@ impl TableReference {
}
/// Forms a [`TableReference`] by parsing `s` as a multipart SQL
- /// identifier. See docs on [`TableReference`] for more details.
+ /// identifier, normalizing `s` to lowercase.
+ /// See docs on [`TableReference`] for more details.
pub fn parse_str(s: &str) -> Self {
- let mut parts = parse_identifiers_normalized(s, false);
+ Self::parse_str_normalized(s, false)
+ }
+
+ /// Forms a [`TableReference`] by parsing `s` as a multipart SQL
+ /// identifier, normalizing `s` to lowercase if `ignore_case` is `false`.
+ /// See docs on [`TableReference`] for more details.
+ pub fn parse_str_normalized(s: &str, ignore_case: bool) -> Self {
+ let table_parts = parse_identifiers_normalized(s, ignore_case);
+
+ Self::from_vec(table_parts)
+ .unwrap_or(Self::Bare { table: s.into() })
+ }
+ /// Compose a [`TableReference`] from separate parts. The input vector
should contain
+ /// at most three elements in the following sequence:
+ /// ```no_rust
+ /// [<catalog>, <schema>, table]
+ /// ```
+ pub fn from_vec(mut parts: Vec<String>) -> Option<Self> {
Review Comment:
okay, I played around with things quite a bit (probably too much), and what
felt right to me was to change the method comments and add a new method,
`from_slice`, which is exactly what you proposed as `from_parts`. This way
there's clearly 2 ways to construct "from identifier parts": (1) from a slice
(flexible, but copies) and (2) from a vec (narrow, zero-copy).
I know that the performance hit is small because it only copies 1-3 times
(O(1)), but the idea of it occurring for every identifier in a query is painful
for large queries especially since the string is already copied from what is
deserialized in the protobuf.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]