sqlparser/dialect/hive.rs
1// Licensed to the Apache Software Foundation (ASF) under one
2// or more contributor license agreements. See the NOTICE file
3// distributed with this work for additional information
4// regarding copyright ownership. The ASF licenses this file
5// to you under the Apache License, Version 2.0 (the
6// "License"); you may not use this file except in compliance
7// with the License. You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing,
12// software distributed under the License is distributed on an
13// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14// KIND, either express or implied. See the License for the
15// specific language governing permissions and limitations
16// under the License.
17
18use crate::dialect::Dialect;
19
20/// A [`Dialect`] for [Hive](https://hive.apache.org/).
21#[derive(Debug)]
22pub struct HiveDialect {}
23
24impl Dialect for HiveDialect {
25 fn is_delimited_identifier_start(&self, ch: char) -> bool {
26 (ch == '"') || (ch == '`')
27 }
28
29 fn is_identifier_start(&self, ch: char) -> bool {
30 ch.is_ascii_lowercase() || ch.is_ascii_uppercase() || ch.is_ascii_digit() || ch == '$'
31 }
32
33 fn is_identifier_part(&self, ch: char) -> bool {
34 ch.is_ascii_lowercase()
35 || ch.is_ascii_uppercase()
36 || ch.is_ascii_digit()
37 || ch == '_'
38 || ch == '$'
39 || ch == '{'
40 || ch == '}'
41 }
42
43 fn supports_filter_during_aggregation(&self) -> bool {
44 true
45 }
46
47 fn supports_numeric_prefix(&self) -> bool {
48 true
49 }
50
51 fn require_interval_qualifier(&self) -> bool {
52 true
53 }
54
55 /// See <https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27362061#Tutorial-BuiltInOperators>
56 fn supports_bang_not_operator(&self) -> bool {
57 true
58 }
59
60 /// See <https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27362036#LanguageManualDML-Loadingfilesintotables>
61 fn supports_load_data(&self) -> bool {
62 true
63 }
64
65 /// See <https://cwiki.apache.org/confluence/display/hive/languagemanual+sampling>
66 fn supports_table_sample_before_alias(&self) -> bool {
67 true
68 }
69
70 /// See <https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=30151323#EnhancedAggregation,Cube,GroupingandRollup-CubesandRollupsr>
71 fn supports_group_by_with_modifier(&self) -> bool {
72 true
73 }
74}