pg_query/
protobuf.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct ParseResult {
4    #[prost(int32, tag = "1")]
5    pub version: i32,
6    #[prost(message, repeated, tag = "2")]
7    pub stmts: ::prost::alloc::vec::Vec<RawStmt>,
8}
9#[derive(Clone, PartialEq, ::prost::Message)]
10pub struct ScanResult {
11    #[prost(int32, tag = "1")]
12    pub version: i32,
13    #[prost(message, repeated, tag = "2")]
14    pub tokens: ::prost::alloc::vec::Vec<ScanToken>,
15}
16#[derive(Clone, PartialEq, ::prost::Message)]
17pub struct Node {
18    #[prost(
19        oneof = "node::Node",
20        tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268"
21    )]
22    pub node: ::core::option::Option<node::Node>,
23}
24/// Nested message and enum types in `Node`.
25pub mod node {
26    #[derive(Clone, PartialEq, ::prost::Oneof)]
27    pub enum Node {
28        #[prost(message, tag = "1")]
29        Alias(super::Alias),
30        #[prost(message, tag = "2")]
31        RangeVar(super::RangeVar),
32        #[prost(message, tag = "3")]
33        TableFunc(::prost::alloc::boxed::Box<super::TableFunc>),
34        #[prost(message, tag = "4")]
35        IntoClause(::prost::alloc::boxed::Box<super::IntoClause>),
36        #[prost(message, tag = "5")]
37        Var(::prost::alloc::boxed::Box<super::Var>),
38        #[prost(message, tag = "6")]
39        Param(::prost::alloc::boxed::Box<super::Param>),
40        #[prost(message, tag = "7")]
41        Aggref(::prost::alloc::boxed::Box<super::Aggref>),
42        #[prost(message, tag = "8")]
43        GroupingFunc(::prost::alloc::boxed::Box<super::GroupingFunc>),
44        #[prost(message, tag = "9")]
45        WindowFunc(::prost::alloc::boxed::Box<super::WindowFunc>),
46        #[prost(message, tag = "10")]
47        WindowFuncRunCondition(
48            ::prost::alloc::boxed::Box<super::WindowFuncRunCondition>,
49        ),
50        #[prost(message, tag = "11")]
51        MergeSupportFunc(::prost::alloc::boxed::Box<super::MergeSupportFunc>),
52        #[prost(message, tag = "12")]
53        SubscriptingRef(::prost::alloc::boxed::Box<super::SubscriptingRef>),
54        #[prost(message, tag = "13")]
55        FuncExpr(::prost::alloc::boxed::Box<super::FuncExpr>),
56        #[prost(message, tag = "14")]
57        NamedArgExpr(::prost::alloc::boxed::Box<super::NamedArgExpr>),
58        #[prost(message, tag = "15")]
59        OpExpr(::prost::alloc::boxed::Box<super::OpExpr>),
60        #[prost(message, tag = "16")]
61        DistinctExpr(::prost::alloc::boxed::Box<super::DistinctExpr>),
62        #[prost(message, tag = "17")]
63        NullIfExpr(::prost::alloc::boxed::Box<super::NullIfExpr>),
64        #[prost(message, tag = "18")]
65        ScalarArrayOpExpr(::prost::alloc::boxed::Box<super::ScalarArrayOpExpr>),
66        #[prost(message, tag = "19")]
67        BoolExpr(::prost::alloc::boxed::Box<super::BoolExpr>),
68        #[prost(message, tag = "20")]
69        SubLink(::prost::alloc::boxed::Box<super::SubLink>),
70        #[prost(message, tag = "21")]
71        SubPlan(::prost::alloc::boxed::Box<super::SubPlan>),
72        #[prost(message, tag = "22")]
73        AlternativeSubPlan(::prost::alloc::boxed::Box<super::AlternativeSubPlan>),
74        #[prost(message, tag = "23")]
75        FieldSelect(::prost::alloc::boxed::Box<super::FieldSelect>),
76        #[prost(message, tag = "24")]
77        FieldStore(::prost::alloc::boxed::Box<super::FieldStore>),
78        #[prost(message, tag = "25")]
79        RelabelType(::prost::alloc::boxed::Box<super::RelabelType>),
80        #[prost(message, tag = "26")]
81        CoerceViaIo(::prost::alloc::boxed::Box<super::CoerceViaIo>),
82        #[prost(message, tag = "27")]
83        ArrayCoerceExpr(::prost::alloc::boxed::Box<super::ArrayCoerceExpr>),
84        #[prost(message, tag = "28")]
85        ConvertRowtypeExpr(::prost::alloc::boxed::Box<super::ConvertRowtypeExpr>),
86        #[prost(message, tag = "29")]
87        CollateExpr(::prost::alloc::boxed::Box<super::CollateExpr>),
88        #[prost(message, tag = "30")]
89        CaseExpr(::prost::alloc::boxed::Box<super::CaseExpr>),
90        #[prost(message, tag = "31")]
91        CaseWhen(::prost::alloc::boxed::Box<super::CaseWhen>),
92        #[prost(message, tag = "32")]
93        CaseTestExpr(::prost::alloc::boxed::Box<super::CaseTestExpr>),
94        #[prost(message, tag = "33")]
95        ArrayExpr(::prost::alloc::boxed::Box<super::ArrayExpr>),
96        #[prost(message, tag = "34")]
97        RowExpr(::prost::alloc::boxed::Box<super::RowExpr>),
98        #[prost(message, tag = "35")]
99        RowCompareExpr(::prost::alloc::boxed::Box<super::RowCompareExpr>),
100        #[prost(message, tag = "36")]
101        CoalesceExpr(::prost::alloc::boxed::Box<super::CoalesceExpr>),
102        #[prost(message, tag = "37")]
103        MinMaxExpr(::prost::alloc::boxed::Box<super::MinMaxExpr>),
104        #[prost(message, tag = "38")]
105        SqlvalueFunction(::prost::alloc::boxed::Box<super::SqlValueFunction>),
106        #[prost(message, tag = "39")]
107        XmlExpr(::prost::alloc::boxed::Box<super::XmlExpr>),
108        #[prost(message, tag = "40")]
109        JsonFormat(super::JsonFormat),
110        #[prost(message, tag = "41")]
111        JsonReturning(super::JsonReturning),
112        #[prost(message, tag = "42")]
113        JsonValueExpr(::prost::alloc::boxed::Box<super::JsonValueExpr>),
114        #[prost(message, tag = "43")]
115        JsonConstructorExpr(::prost::alloc::boxed::Box<super::JsonConstructorExpr>),
116        #[prost(message, tag = "44")]
117        JsonIsPredicate(::prost::alloc::boxed::Box<super::JsonIsPredicate>),
118        #[prost(message, tag = "45")]
119        JsonBehavior(::prost::alloc::boxed::Box<super::JsonBehavior>),
120        #[prost(message, tag = "46")]
121        JsonExpr(::prost::alloc::boxed::Box<super::JsonExpr>),
122        #[prost(message, tag = "47")]
123        JsonTablePath(super::JsonTablePath),
124        #[prost(message, tag = "48")]
125        JsonTablePathScan(::prost::alloc::boxed::Box<super::JsonTablePathScan>),
126        #[prost(message, tag = "49")]
127        JsonTableSiblingJoin(::prost::alloc::boxed::Box<super::JsonTableSiblingJoin>),
128        #[prost(message, tag = "50")]
129        NullTest(::prost::alloc::boxed::Box<super::NullTest>),
130        #[prost(message, tag = "51")]
131        BooleanTest(::prost::alloc::boxed::Box<super::BooleanTest>),
132        #[prost(message, tag = "52")]
133        MergeAction(::prost::alloc::boxed::Box<super::MergeAction>),
134        #[prost(message, tag = "53")]
135        CoerceToDomain(::prost::alloc::boxed::Box<super::CoerceToDomain>),
136        #[prost(message, tag = "54")]
137        CoerceToDomainValue(::prost::alloc::boxed::Box<super::CoerceToDomainValue>),
138        #[prost(message, tag = "55")]
139        SetToDefault(::prost::alloc::boxed::Box<super::SetToDefault>),
140        #[prost(message, tag = "56")]
141        CurrentOfExpr(::prost::alloc::boxed::Box<super::CurrentOfExpr>),
142        #[prost(message, tag = "57")]
143        NextValueExpr(::prost::alloc::boxed::Box<super::NextValueExpr>),
144        #[prost(message, tag = "58")]
145        InferenceElem(::prost::alloc::boxed::Box<super::InferenceElem>),
146        #[prost(message, tag = "59")]
147        TargetEntry(::prost::alloc::boxed::Box<super::TargetEntry>),
148        #[prost(message, tag = "60")]
149        RangeTblRef(super::RangeTblRef),
150        #[prost(message, tag = "61")]
151        JoinExpr(::prost::alloc::boxed::Box<super::JoinExpr>),
152        #[prost(message, tag = "62")]
153        FromExpr(::prost::alloc::boxed::Box<super::FromExpr>),
154        #[prost(message, tag = "63")]
155        OnConflictExpr(::prost::alloc::boxed::Box<super::OnConflictExpr>),
156        #[prost(message, tag = "64")]
157        Query(::prost::alloc::boxed::Box<super::Query>),
158        #[prost(message, tag = "65")]
159        TypeName(super::TypeName),
160        #[prost(message, tag = "66")]
161        ColumnRef(super::ColumnRef),
162        #[prost(message, tag = "67")]
163        ParamRef(super::ParamRef),
164        #[prost(message, tag = "68")]
165        AExpr(::prost::alloc::boxed::Box<super::AExpr>),
166        #[prost(message, tag = "69")]
167        TypeCast(::prost::alloc::boxed::Box<super::TypeCast>),
168        #[prost(message, tag = "70")]
169        CollateClause(::prost::alloc::boxed::Box<super::CollateClause>),
170        #[prost(message, tag = "71")]
171        RoleSpec(super::RoleSpec),
172        #[prost(message, tag = "72")]
173        FuncCall(::prost::alloc::boxed::Box<super::FuncCall>),
174        #[prost(message, tag = "73")]
175        AStar(super::AStar),
176        #[prost(message, tag = "74")]
177        AIndices(::prost::alloc::boxed::Box<super::AIndices>),
178        #[prost(message, tag = "75")]
179        AIndirection(::prost::alloc::boxed::Box<super::AIndirection>),
180        #[prost(message, tag = "76")]
181        AArrayExpr(super::AArrayExpr),
182        #[prost(message, tag = "77")]
183        ResTarget(::prost::alloc::boxed::Box<super::ResTarget>),
184        #[prost(message, tag = "78")]
185        MultiAssignRef(::prost::alloc::boxed::Box<super::MultiAssignRef>),
186        #[prost(message, tag = "79")]
187        SortBy(::prost::alloc::boxed::Box<super::SortBy>),
188        #[prost(message, tag = "80")]
189        WindowDef(::prost::alloc::boxed::Box<super::WindowDef>),
190        #[prost(message, tag = "81")]
191        RangeSubselect(::prost::alloc::boxed::Box<super::RangeSubselect>),
192        #[prost(message, tag = "82")]
193        RangeFunction(super::RangeFunction),
194        #[prost(message, tag = "83")]
195        RangeTableFunc(::prost::alloc::boxed::Box<super::RangeTableFunc>),
196        #[prost(message, tag = "84")]
197        RangeTableFuncCol(::prost::alloc::boxed::Box<super::RangeTableFuncCol>),
198        #[prost(message, tag = "85")]
199        RangeTableSample(::prost::alloc::boxed::Box<super::RangeTableSample>),
200        #[prost(message, tag = "86")]
201        ColumnDef(::prost::alloc::boxed::Box<super::ColumnDef>),
202        #[prost(message, tag = "87")]
203        TableLikeClause(super::TableLikeClause),
204        #[prost(message, tag = "88")]
205        IndexElem(::prost::alloc::boxed::Box<super::IndexElem>),
206        #[prost(message, tag = "89")]
207        DefElem(::prost::alloc::boxed::Box<super::DefElem>),
208        #[prost(message, tag = "90")]
209        LockingClause(super::LockingClause),
210        #[prost(message, tag = "91")]
211        XmlSerialize(::prost::alloc::boxed::Box<super::XmlSerialize>),
212        #[prost(message, tag = "92")]
213        PartitionElem(::prost::alloc::boxed::Box<super::PartitionElem>),
214        #[prost(message, tag = "93")]
215        PartitionSpec(super::PartitionSpec),
216        #[prost(message, tag = "94")]
217        PartitionBoundSpec(super::PartitionBoundSpec),
218        #[prost(message, tag = "95")]
219        PartitionRangeDatum(::prost::alloc::boxed::Box<super::PartitionRangeDatum>),
220        #[prost(message, tag = "96")]
221        SinglePartitionSpec(super::SinglePartitionSpec),
222        #[prost(message, tag = "97")]
223        PartitionCmd(super::PartitionCmd),
224        #[prost(message, tag = "98")]
225        RangeTblEntry(::prost::alloc::boxed::Box<super::RangeTblEntry>),
226        #[prost(message, tag = "99")]
227        RtepermissionInfo(super::RtePermissionInfo),
228        #[prost(message, tag = "100")]
229        RangeTblFunction(::prost::alloc::boxed::Box<super::RangeTblFunction>),
230        #[prost(message, tag = "101")]
231        TableSampleClause(::prost::alloc::boxed::Box<super::TableSampleClause>),
232        #[prost(message, tag = "102")]
233        WithCheckOption(::prost::alloc::boxed::Box<super::WithCheckOption>),
234        #[prost(message, tag = "103")]
235        SortGroupClause(super::SortGroupClause),
236        #[prost(message, tag = "104")]
237        GroupingSet(super::GroupingSet),
238        #[prost(message, tag = "105")]
239        WindowClause(::prost::alloc::boxed::Box<super::WindowClause>),
240        #[prost(message, tag = "106")]
241        RowMarkClause(super::RowMarkClause),
242        #[prost(message, tag = "107")]
243        WithClause(super::WithClause),
244        #[prost(message, tag = "108")]
245        InferClause(::prost::alloc::boxed::Box<super::InferClause>),
246        #[prost(message, tag = "109")]
247        OnConflictClause(::prost::alloc::boxed::Box<super::OnConflictClause>),
248        #[prost(message, tag = "110")]
249        CtesearchClause(super::CteSearchClause),
250        #[prost(message, tag = "111")]
251        CtecycleClause(::prost::alloc::boxed::Box<super::CteCycleClause>),
252        #[prost(message, tag = "112")]
253        CommonTableExpr(::prost::alloc::boxed::Box<super::CommonTableExpr>),
254        #[prost(message, tag = "113")]
255        MergeWhenClause(::prost::alloc::boxed::Box<super::MergeWhenClause>),
256        #[prost(message, tag = "114")]
257        TriggerTransition(super::TriggerTransition),
258        #[prost(message, tag = "115")]
259        JsonOutput(super::JsonOutput),
260        #[prost(message, tag = "116")]
261        JsonArgument(::prost::alloc::boxed::Box<super::JsonArgument>),
262        #[prost(message, tag = "117")]
263        JsonFuncExpr(::prost::alloc::boxed::Box<super::JsonFuncExpr>),
264        #[prost(message, tag = "118")]
265        JsonTablePathSpec(::prost::alloc::boxed::Box<super::JsonTablePathSpec>),
266        #[prost(message, tag = "119")]
267        JsonTable(::prost::alloc::boxed::Box<super::JsonTable>),
268        #[prost(message, tag = "120")]
269        JsonTableColumn(::prost::alloc::boxed::Box<super::JsonTableColumn>),
270        #[prost(message, tag = "121")]
271        JsonKeyValue(::prost::alloc::boxed::Box<super::JsonKeyValue>),
272        #[prost(message, tag = "122")]
273        JsonParseExpr(::prost::alloc::boxed::Box<super::JsonParseExpr>),
274        #[prost(message, tag = "123")]
275        JsonScalarExpr(::prost::alloc::boxed::Box<super::JsonScalarExpr>),
276        #[prost(message, tag = "124")]
277        JsonSerializeExpr(::prost::alloc::boxed::Box<super::JsonSerializeExpr>),
278        #[prost(message, tag = "125")]
279        JsonObjectConstructor(super::JsonObjectConstructor),
280        #[prost(message, tag = "126")]
281        JsonArrayConstructor(super::JsonArrayConstructor),
282        #[prost(message, tag = "127")]
283        JsonArrayQueryConstructor(
284            ::prost::alloc::boxed::Box<super::JsonArrayQueryConstructor>,
285        ),
286        #[prost(message, tag = "128")]
287        JsonAggConstructor(::prost::alloc::boxed::Box<super::JsonAggConstructor>),
288        #[prost(message, tag = "129")]
289        JsonObjectAgg(::prost::alloc::boxed::Box<super::JsonObjectAgg>),
290        #[prost(message, tag = "130")]
291        JsonArrayAgg(::prost::alloc::boxed::Box<super::JsonArrayAgg>),
292        #[prost(message, tag = "131")]
293        RawStmt(::prost::alloc::boxed::Box<super::RawStmt>),
294        #[prost(message, tag = "132")]
295        InsertStmt(::prost::alloc::boxed::Box<super::InsertStmt>),
296        #[prost(message, tag = "133")]
297        DeleteStmt(::prost::alloc::boxed::Box<super::DeleteStmt>),
298        #[prost(message, tag = "134")]
299        UpdateStmt(::prost::alloc::boxed::Box<super::UpdateStmt>),
300        #[prost(message, tag = "135")]
301        MergeStmt(::prost::alloc::boxed::Box<super::MergeStmt>),
302        #[prost(message, tag = "136")]
303        SelectStmt(::prost::alloc::boxed::Box<super::SelectStmt>),
304        #[prost(message, tag = "137")]
305        SetOperationStmt(::prost::alloc::boxed::Box<super::SetOperationStmt>),
306        #[prost(message, tag = "138")]
307        ReturnStmt(::prost::alloc::boxed::Box<super::ReturnStmt>),
308        #[prost(message, tag = "139")]
309        PlassignStmt(::prost::alloc::boxed::Box<super::PlAssignStmt>),
310        #[prost(message, tag = "140")]
311        CreateSchemaStmt(super::CreateSchemaStmt),
312        #[prost(message, tag = "141")]
313        AlterTableStmt(super::AlterTableStmt),
314        #[prost(message, tag = "142")]
315        ReplicaIdentityStmt(super::ReplicaIdentityStmt),
316        #[prost(message, tag = "143")]
317        AlterTableCmd(::prost::alloc::boxed::Box<super::AlterTableCmd>),
318        #[prost(message, tag = "144")]
319        AlterCollationStmt(super::AlterCollationStmt),
320        #[prost(message, tag = "145")]
321        AlterDomainStmt(::prost::alloc::boxed::Box<super::AlterDomainStmt>),
322        #[prost(message, tag = "146")]
323        GrantStmt(super::GrantStmt),
324        #[prost(message, tag = "147")]
325        ObjectWithArgs(super::ObjectWithArgs),
326        #[prost(message, tag = "148")]
327        AccessPriv(super::AccessPriv),
328        #[prost(message, tag = "149")]
329        GrantRoleStmt(super::GrantRoleStmt),
330        #[prost(message, tag = "150")]
331        AlterDefaultPrivilegesStmt(super::AlterDefaultPrivilegesStmt),
332        #[prost(message, tag = "151")]
333        CopyStmt(::prost::alloc::boxed::Box<super::CopyStmt>),
334        #[prost(message, tag = "152")]
335        VariableSetStmt(super::VariableSetStmt),
336        #[prost(message, tag = "153")]
337        VariableShowStmt(super::VariableShowStmt),
338        #[prost(message, tag = "154")]
339        CreateStmt(super::CreateStmt),
340        #[prost(message, tag = "155")]
341        Constraint(::prost::alloc::boxed::Box<super::Constraint>),
342        #[prost(message, tag = "156")]
343        CreateTableSpaceStmt(super::CreateTableSpaceStmt),
344        #[prost(message, tag = "157")]
345        DropTableSpaceStmt(super::DropTableSpaceStmt),
346        #[prost(message, tag = "158")]
347        AlterTableSpaceOptionsStmt(super::AlterTableSpaceOptionsStmt),
348        #[prost(message, tag = "159")]
349        AlterTableMoveAllStmt(super::AlterTableMoveAllStmt),
350        #[prost(message, tag = "160")]
351        CreateExtensionStmt(super::CreateExtensionStmt),
352        #[prost(message, tag = "161")]
353        AlterExtensionStmt(super::AlterExtensionStmt),
354        #[prost(message, tag = "162")]
355        AlterExtensionContentsStmt(
356            ::prost::alloc::boxed::Box<super::AlterExtensionContentsStmt>,
357        ),
358        #[prost(message, tag = "163")]
359        CreateFdwStmt(super::CreateFdwStmt),
360        #[prost(message, tag = "164")]
361        AlterFdwStmt(super::AlterFdwStmt),
362        #[prost(message, tag = "165")]
363        CreateForeignServerStmt(super::CreateForeignServerStmt),
364        #[prost(message, tag = "166")]
365        AlterForeignServerStmt(super::AlterForeignServerStmt),
366        #[prost(message, tag = "167")]
367        CreateForeignTableStmt(super::CreateForeignTableStmt),
368        #[prost(message, tag = "168")]
369        CreateUserMappingStmt(super::CreateUserMappingStmt),
370        #[prost(message, tag = "169")]
371        AlterUserMappingStmt(super::AlterUserMappingStmt),
372        #[prost(message, tag = "170")]
373        DropUserMappingStmt(super::DropUserMappingStmt),
374        #[prost(message, tag = "171")]
375        ImportForeignSchemaStmt(super::ImportForeignSchemaStmt),
376        #[prost(message, tag = "172")]
377        CreatePolicyStmt(::prost::alloc::boxed::Box<super::CreatePolicyStmt>),
378        #[prost(message, tag = "173")]
379        AlterPolicyStmt(::prost::alloc::boxed::Box<super::AlterPolicyStmt>),
380        #[prost(message, tag = "174")]
381        CreateAmStmt(super::CreateAmStmt),
382        #[prost(message, tag = "175")]
383        CreateTrigStmt(::prost::alloc::boxed::Box<super::CreateTrigStmt>),
384        #[prost(message, tag = "176")]
385        CreateEventTrigStmt(super::CreateEventTrigStmt),
386        #[prost(message, tag = "177")]
387        AlterEventTrigStmt(super::AlterEventTrigStmt),
388        #[prost(message, tag = "178")]
389        CreatePlangStmt(super::CreatePLangStmt),
390        #[prost(message, tag = "179")]
391        CreateRoleStmt(super::CreateRoleStmt),
392        #[prost(message, tag = "180")]
393        AlterRoleStmt(super::AlterRoleStmt),
394        #[prost(message, tag = "181")]
395        AlterRoleSetStmt(super::AlterRoleSetStmt),
396        #[prost(message, tag = "182")]
397        DropRoleStmt(super::DropRoleStmt),
398        #[prost(message, tag = "183")]
399        CreateSeqStmt(super::CreateSeqStmt),
400        #[prost(message, tag = "184")]
401        AlterSeqStmt(super::AlterSeqStmt),
402        #[prost(message, tag = "185")]
403        DefineStmt(super::DefineStmt),
404        #[prost(message, tag = "186")]
405        CreateDomainStmt(::prost::alloc::boxed::Box<super::CreateDomainStmt>),
406        #[prost(message, tag = "187")]
407        CreateOpClassStmt(super::CreateOpClassStmt),
408        #[prost(message, tag = "188")]
409        CreateOpClassItem(super::CreateOpClassItem),
410        #[prost(message, tag = "189")]
411        CreateOpFamilyStmt(super::CreateOpFamilyStmt),
412        #[prost(message, tag = "190")]
413        AlterOpFamilyStmt(super::AlterOpFamilyStmt),
414        #[prost(message, tag = "191")]
415        DropStmt(super::DropStmt),
416        #[prost(message, tag = "192")]
417        TruncateStmt(super::TruncateStmt),
418        #[prost(message, tag = "193")]
419        CommentStmt(::prost::alloc::boxed::Box<super::CommentStmt>),
420        #[prost(message, tag = "194")]
421        SecLabelStmt(::prost::alloc::boxed::Box<super::SecLabelStmt>),
422        #[prost(message, tag = "195")]
423        DeclareCursorStmt(::prost::alloc::boxed::Box<super::DeclareCursorStmt>),
424        #[prost(message, tag = "196")]
425        ClosePortalStmt(super::ClosePortalStmt),
426        #[prost(message, tag = "197")]
427        FetchStmt(super::FetchStmt),
428        #[prost(message, tag = "198")]
429        IndexStmt(::prost::alloc::boxed::Box<super::IndexStmt>),
430        #[prost(message, tag = "199")]
431        CreateStatsStmt(super::CreateStatsStmt),
432        #[prost(message, tag = "200")]
433        StatsElem(::prost::alloc::boxed::Box<super::StatsElem>),
434        #[prost(message, tag = "201")]
435        AlterStatsStmt(::prost::alloc::boxed::Box<super::AlterStatsStmt>),
436        #[prost(message, tag = "202")]
437        CreateFunctionStmt(::prost::alloc::boxed::Box<super::CreateFunctionStmt>),
438        #[prost(message, tag = "203")]
439        FunctionParameter(::prost::alloc::boxed::Box<super::FunctionParameter>),
440        #[prost(message, tag = "204")]
441        AlterFunctionStmt(super::AlterFunctionStmt),
442        #[prost(message, tag = "205")]
443        DoStmt(super::DoStmt),
444        #[prost(message, tag = "206")]
445        InlineCodeBlock(super::InlineCodeBlock),
446        #[prost(message, tag = "207")]
447        CallStmt(::prost::alloc::boxed::Box<super::CallStmt>),
448        #[prost(message, tag = "208")]
449        CallContext(super::CallContext),
450        #[prost(message, tag = "209")]
451        RenameStmt(::prost::alloc::boxed::Box<super::RenameStmt>),
452        #[prost(message, tag = "210")]
453        AlterObjectDependsStmt(
454            ::prost::alloc::boxed::Box<super::AlterObjectDependsStmt>,
455        ),
456        #[prost(message, tag = "211")]
457        AlterObjectSchemaStmt(::prost::alloc::boxed::Box<super::AlterObjectSchemaStmt>),
458        #[prost(message, tag = "212")]
459        AlterOwnerStmt(::prost::alloc::boxed::Box<super::AlterOwnerStmt>),
460        #[prost(message, tag = "213")]
461        AlterOperatorStmt(super::AlterOperatorStmt),
462        #[prost(message, tag = "214")]
463        AlterTypeStmt(super::AlterTypeStmt),
464        #[prost(message, tag = "215")]
465        RuleStmt(::prost::alloc::boxed::Box<super::RuleStmt>),
466        #[prost(message, tag = "216")]
467        NotifyStmt(super::NotifyStmt),
468        #[prost(message, tag = "217")]
469        ListenStmt(super::ListenStmt),
470        #[prost(message, tag = "218")]
471        UnlistenStmt(super::UnlistenStmt),
472        #[prost(message, tag = "219")]
473        TransactionStmt(super::TransactionStmt),
474        #[prost(message, tag = "220")]
475        CompositeTypeStmt(super::CompositeTypeStmt),
476        #[prost(message, tag = "221")]
477        CreateEnumStmt(super::CreateEnumStmt),
478        #[prost(message, tag = "222")]
479        CreateRangeStmt(super::CreateRangeStmt),
480        #[prost(message, tag = "223")]
481        AlterEnumStmt(super::AlterEnumStmt),
482        #[prost(message, tag = "224")]
483        ViewStmt(::prost::alloc::boxed::Box<super::ViewStmt>),
484        #[prost(message, tag = "225")]
485        LoadStmt(super::LoadStmt),
486        #[prost(message, tag = "226")]
487        CreatedbStmt(super::CreatedbStmt),
488        #[prost(message, tag = "227")]
489        AlterDatabaseStmt(super::AlterDatabaseStmt),
490        #[prost(message, tag = "228")]
491        AlterDatabaseRefreshCollStmt(super::AlterDatabaseRefreshCollStmt),
492        #[prost(message, tag = "229")]
493        AlterDatabaseSetStmt(super::AlterDatabaseSetStmt),
494        #[prost(message, tag = "230")]
495        DropdbStmt(super::DropdbStmt),
496        #[prost(message, tag = "231")]
497        AlterSystemStmt(super::AlterSystemStmt),
498        #[prost(message, tag = "232")]
499        ClusterStmt(super::ClusterStmt),
500        #[prost(message, tag = "233")]
501        VacuumStmt(super::VacuumStmt),
502        #[prost(message, tag = "234")]
503        VacuumRelation(super::VacuumRelation),
504        #[prost(message, tag = "235")]
505        ExplainStmt(::prost::alloc::boxed::Box<super::ExplainStmt>),
506        #[prost(message, tag = "236")]
507        CreateTableAsStmt(::prost::alloc::boxed::Box<super::CreateTableAsStmt>),
508        #[prost(message, tag = "237")]
509        RefreshMatViewStmt(super::RefreshMatViewStmt),
510        #[prost(message, tag = "238")]
511        CheckPointStmt(super::CheckPointStmt),
512        #[prost(message, tag = "239")]
513        DiscardStmt(super::DiscardStmt),
514        #[prost(message, tag = "240")]
515        LockStmt(super::LockStmt),
516        #[prost(message, tag = "241")]
517        ConstraintsSetStmt(super::ConstraintsSetStmt),
518        #[prost(message, tag = "242")]
519        ReindexStmt(super::ReindexStmt),
520        #[prost(message, tag = "243")]
521        CreateConversionStmt(super::CreateConversionStmt),
522        #[prost(message, tag = "244")]
523        CreateCastStmt(super::CreateCastStmt),
524        #[prost(message, tag = "245")]
525        CreateTransformStmt(super::CreateTransformStmt),
526        #[prost(message, tag = "246")]
527        PrepareStmt(::prost::alloc::boxed::Box<super::PrepareStmt>),
528        #[prost(message, tag = "247")]
529        ExecuteStmt(super::ExecuteStmt),
530        #[prost(message, tag = "248")]
531        DeallocateStmt(super::DeallocateStmt),
532        #[prost(message, tag = "249")]
533        DropOwnedStmt(super::DropOwnedStmt),
534        #[prost(message, tag = "250")]
535        ReassignOwnedStmt(super::ReassignOwnedStmt),
536        #[prost(message, tag = "251")]
537        AlterTsdictionaryStmt(super::AlterTsDictionaryStmt),
538        #[prost(message, tag = "252")]
539        AlterTsconfigurationStmt(super::AlterTsConfigurationStmt),
540        #[prost(message, tag = "253")]
541        PublicationTable(::prost::alloc::boxed::Box<super::PublicationTable>),
542        #[prost(message, tag = "254")]
543        PublicationObjSpec(::prost::alloc::boxed::Box<super::PublicationObjSpec>),
544        #[prost(message, tag = "255")]
545        CreatePublicationStmt(super::CreatePublicationStmt),
546        #[prost(message, tag = "256")]
547        AlterPublicationStmt(super::AlterPublicationStmt),
548        #[prost(message, tag = "257")]
549        CreateSubscriptionStmt(super::CreateSubscriptionStmt),
550        #[prost(message, tag = "258")]
551        AlterSubscriptionStmt(super::AlterSubscriptionStmt),
552        #[prost(message, tag = "259")]
553        DropSubscriptionStmt(super::DropSubscriptionStmt),
554        #[prost(message, tag = "260")]
555        Integer(super::Integer),
556        #[prost(message, tag = "261")]
557        Float(super::Float),
558        #[prost(message, tag = "262")]
559        Boolean(super::Boolean),
560        #[prost(message, tag = "263")]
561        String(super::String),
562        #[prost(message, tag = "264")]
563        BitString(super::BitString),
564        #[prost(message, tag = "265")]
565        List(super::List),
566        #[prost(message, tag = "266")]
567        IntList(super::IntList),
568        #[prost(message, tag = "267")]
569        OidList(super::OidList),
570        #[prost(message, tag = "268")]
571        AConst(super::AConst),
572    }
573}
574#[derive(Clone, Copy, PartialEq, ::prost::Message)]
575pub struct Integer {
576    /// machine integer
577    #[prost(int32, tag = "1")]
578    pub ival: i32,
579}
580#[derive(Clone, PartialEq, ::prost::Message)]
581pub struct Float {
582    /// string
583    #[prost(string, tag = "1")]
584    pub fval: ::prost::alloc::string::String,
585}
586#[derive(Clone, Copy, PartialEq, ::prost::Message)]
587pub struct Boolean {
588    #[prost(bool, tag = "1")]
589    pub boolval: bool,
590}
591#[derive(Clone, PartialEq, ::prost::Message)]
592pub struct String {
593    /// string
594    #[prost(string, tag = "1")]
595    pub sval: ::prost::alloc::string::String,
596}
597#[derive(Clone, PartialEq, ::prost::Message)]
598pub struct BitString {
599    /// string
600    #[prost(string, tag = "1")]
601    pub bsval: ::prost::alloc::string::String,
602}
603#[derive(Clone, PartialEq, ::prost::Message)]
604pub struct List {
605    #[prost(message, repeated, tag = "1")]
606    pub items: ::prost::alloc::vec::Vec<Node>,
607}
608#[derive(Clone, PartialEq, ::prost::Message)]
609pub struct OidList {
610    #[prost(message, repeated, tag = "1")]
611    pub items: ::prost::alloc::vec::Vec<Node>,
612}
613#[derive(Clone, PartialEq, ::prost::Message)]
614pub struct IntList {
615    #[prost(message, repeated, tag = "1")]
616    pub items: ::prost::alloc::vec::Vec<Node>,
617}
618#[derive(Clone, PartialEq, ::prost::Message)]
619pub struct AConst {
620    #[prost(bool, tag = "10")]
621    pub isnull: bool,
622    #[prost(int32, tag = "11")]
623    pub location: i32,
624    #[prost(oneof = "a_const::Val", tags = "1, 2, 3, 4, 5")]
625    pub val: ::core::option::Option<a_const::Val>,
626}
627/// Nested message and enum types in `A_Const`.
628pub mod a_const {
629    #[derive(Clone, PartialEq, ::prost::Oneof)]
630    pub enum Val {
631        #[prost(message, tag = "1")]
632        Ival(super::Integer),
633        #[prost(message, tag = "2")]
634        Fval(super::Float),
635        #[prost(message, tag = "3")]
636        Boolval(super::Boolean),
637        #[prost(message, tag = "4")]
638        Sval(super::String),
639        #[prost(message, tag = "5")]
640        Bsval(super::BitString),
641    }
642}
643#[derive(Clone, PartialEq, ::prost::Message)]
644pub struct Alias {
645    #[prost(string, tag = "1")]
646    pub aliasname: ::prost::alloc::string::String,
647    #[prost(message, repeated, tag = "2")]
648    pub colnames: ::prost::alloc::vec::Vec<Node>,
649}
650#[derive(Clone, PartialEq, ::prost::Message)]
651pub struct RangeVar {
652    #[prost(string, tag = "1")]
653    pub catalogname: ::prost::alloc::string::String,
654    #[prost(string, tag = "2")]
655    pub schemaname: ::prost::alloc::string::String,
656    #[prost(string, tag = "3")]
657    pub relname: ::prost::alloc::string::String,
658    #[prost(bool, tag = "4")]
659    pub inh: bool,
660    #[prost(string, tag = "5")]
661    pub relpersistence: ::prost::alloc::string::String,
662    #[prost(message, optional, tag = "6")]
663    pub alias: ::core::option::Option<Alias>,
664    #[prost(int32, tag = "7")]
665    pub location: i32,
666}
667#[derive(Clone, PartialEq, ::prost::Message)]
668pub struct TableFunc {
669    #[prost(enumeration = "TableFuncType", tag = "1")]
670    pub functype: i32,
671    #[prost(message, repeated, tag = "2")]
672    pub ns_uris: ::prost::alloc::vec::Vec<Node>,
673    #[prost(message, repeated, tag = "3")]
674    pub ns_names: ::prost::alloc::vec::Vec<Node>,
675    #[prost(message, optional, boxed, tag = "4")]
676    pub docexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
677    #[prost(message, optional, boxed, tag = "5")]
678    pub rowexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
679    #[prost(message, repeated, tag = "6")]
680    pub colnames: ::prost::alloc::vec::Vec<Node>,
681    #[prost(message, repeated, tag = "7")]
682    pub coltypes: ::prost::alloc::vec::Vec<Node>,
683    #[prost(message, repeated, tag = "8")]
684    pub coltypmods: ::prost::alloc::vec::Vec<Node>,
685    #[prost(message, repeated, tag = "9")]
686    pub colcollations: ::prost::alloc::vec::Vec<Node>,
687    #[prost(message, repeated, tag = "10")]
688    pub colexprs: ::prost::alloc::vec::Vec<Node>,
689    #[prost(message, repeated, tag = "11")]
690    pub coldefexprs: ::prost::alloc::vec::Vec<Node>,
691    #[prost(message, repeated, tag = "12")]
692    pub colvalexprs: ::prost::alloc::vec::Vec<Node>,
693    #[prost(message, repeated, tag = "13")]
694    pub passingvalexprs: ::prost::alloc::vec::Vec<Node>,
695    #[prost(uint64, repeated, tag = "14")]
696    pub notnulls: ::prost::alloc::vec::Vec<u64>,
697    #[prost(message, optional, boxed, tag = "15")]
698    pub plan: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
699    #[prost(int32, tag = "16")]
700    pub ordinalitycol: i32,
701    #[prost(int32, tag = "17")]
702    pub location: i32,
703}
704#[derive(Clone, PartialEq, ::prost::Message)]
705pub struct IntoClause {
706    #[prost(message, optional, tag = "1")]
707    pub rel: ::core::option::Option<RangeVar>,
708    #[prost(message, repeated, tag = "2")]
709    pub col_names: ::prost::alloc::vec::Vec<Node>,
710    #[prost(string, tag = "3")]
711    pub access_method: ::prost::alloc::string::String,
712    #[prost(message, repeated, tag = "4")]
713    pub options: ::prost::alloc::vec::Vec<Node>,
714    #[prost(enumeration = "OnCommitAction", tag = "5")]
715    pub on_commit: i32,
716    #[prost(string, tag = "6")]
717    pub table_space_name: ::prost::alloc::string::String,
718    #[prost(message, optional, boxed, tag = "7")]
719    pub view_query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
720    #[prost(bool, tag = "8")]
721    pub skip_data: bool,
722}
723#[derive(Clone, PartialEq, ::prost::Message)]
724pub struct Var {
725    #[prost(message, optional, boxed, tag = "1")]
726    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
727    #[prost(int32, tag = "2")]
728    pub varno: i32,
729    #[prost(int32, tag = "3")]
730    pub varattno: i32,
731    #[prost(uint32, tag = "4")]
732    pub vartype: u32,
733    #[prost(int32, tag = "5")]
734    pub vartypmod: i32,
735    #[prost(uint32, tag = "6")]
736    pub varcollid: u32,
737    #[prost(uint64, repeated, tag = "7")]
738    pub varnullingrels: ::prost::alloc::vec::Vec<u64>,
739    #[prost(uint32, tag = "8")]
740    pub varlevelsup: u32,
741    #[prost(int32, tag = "9")]
742    pub location: i32,
743}
744#[derive(Clone, PartialEq, ::prost::Message)]
745pub struct Param {
746    #[prost(message, optional, boxed, tag = "1")]
747    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
748    #[prost(enumeration = "ParamKind", tag = "2")]
749    pub paramkind: i32,
750    #[prost(int32, tag = "3")]
751    pub paramid: i32,
752    #[prost(uint32, tag = "4")]
753    pub paramtype: u32,
754    #[prost(int32, tag = "5")]
755    pub paramtypmod: i32,
756    #[prost(uint32, tag = "6")]
757    pub paramcollid: u32,
758    #[prost(int32, tag = "7")]
759    pub location: i32,
760}
761#[derive(Clone, PartialEq, ::prost::Message)]
762pub struct Aggref {
763    #[prost(message, optional, boxed, tag = "1")]
764    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
765    #[prost(uint32, tag = "2")]
766    pub aggfnoid: u32,
767    #[prost(uint32, tag = "3")]
768    pub aggtype: u32,
769    #[prost(uint32, tag = "4")]
770    pub aggcollid: u32,
771    #[prost(uint32, tag = "5")]
772    pub inputcollid: u32,
773    #[prost(message, repeated, tag = "6")]
774    pub aggargtypes: ::prost::alloc::vec::Vec<Node>,
775    #[prost(message, repeated, tag = "7")]
776    pub aggdirectargs: ::prost::alloc::vec::Vec<Node>,
777    #[prost(message, repeated, tag = "8")]
778    pub args: ::prost::alloc::vec::Vec<Node>,
779    #[prost(message, repeated, tag = "9")]
780    pub aggorder: ::prost::alloc::vec::Vec<Node>,
781    #[prost(message, repeated, tag = "10")]
782    pub aggdistinct: ::prost::alloc::vec::Vec<Node>,
783    #[prost(message, optional, boxed, tag = "11")]
784    pub aggfilter: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
785    #[prost(bool, tag = "12")]
786    pub aggstar: bool,
787    #[prost(bool, tag = "13")]
788    pub aggvariadic: bool,
789    #[prost(string, tag = "14")]
790    pub aggkind: ::prost::alloc::string::String,
791    #[prost(uint32, tag = "15")]
792    pub agglevelsup: u32,
793    #[prost(enumeration = "AggSplit", tag = "16")]
794    pub aggsplit: i32,
795    #[prost(int32, tag = "17")]
796    pub aggno: i32,
797    #[prost(int32, tag = "18")]
798    pub aggtransno: i32,
799    #[prost(int32, tag = "19")]
800    pub location: i32,
801}
802#[derive(Clone, PartialEq, ::prost::Message)]
803pub struct GroupingFunc {
804    #[prost(message, optional, boxed, tag = "1")]
805    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
806    #[prost(message, repeated, tag = "2")]
807    pub args: ::prost::alloc::vec::Vec<Node>,
808    #[prost(message, repeated, tag = "3")]
809    pub refs: ::prost::alloc::vec::Vec<Node>,
810    #[prost(uint32, tag = "4")]
811    pub agglevelsup: u32,
812    #[prost(int32, tag = "5")]
813    pub location: i32,
814}
815#[derive(Clone, PartialEq, ::prost::Message)]
816pub struct WindowFunc {
817    #[prost(message, optional, boxed, tag = "1")]
818    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
819    #[prost(uint32, tag = "2")]
820    pub winfnoid: u32,
821    #[prost(uint32, tag = "3")]
822    pub wintype: u32,
823    #[prost(uint32, tag = "4")]
824    pub wincollid: u32,
825    #[prost(uint32, tag = "5")]
826    pub inputcollid: u32,
827    #[prost(message, repeated, tag = "6")]
828    pub args: ::prost::alloc::vec::Vec<Node>,
829    #[prost(message, optional, boxed, tag = "7")]
830    pub aggfilter: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
831    #[prost(message, repeated, tag = "8")]
832    pub run_condition: ::prost::alloc::vec::Vec<Node>,
833    #[prost(uint32, tag = "9")]
834    pub winref: u32,
835    #[prost(bool, tag = "10")]
836    pub winstar: bool,
837    #[prost(bool, tag = "11")]
838    pub winagg: bool,
839    #[prost(int32, tag = "12")]
840    pub location: i32,
841}
842#[derive(Clone, PartialEq, ::prost::Message)]
843pub struct WindowFuncRunCondition {
844    #[prost(message, optional, boxed, tag = "1")]
845    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
846    #[prost(uint32, tag = "2")]
847    pub opno: u32,
848    #[prost(uint32, tag = "3")]
849    pub inputcollid: u32,
850    #[prost(bool, tag = "4")]
851    pub wfunc_left: bool,
852    #[prost(message, optional, boxed, tag = "5")]
853    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
854}
855#[derive(Clone, PartialEq, ::prost::Message)]
856pub struct MergeSupportFunc {
857    #[prost(message, optional, boxed, tag = "1")]
858    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
859    #[prost(uint32, tag = "2")]
860    pub msftype: u32,
861    #[prost(uint32, tag = "3")]
862    pub msfcollid: u32,
863    #[prost(int32, tag = "4")]
864    pub location: i32,
865}
866#[derive(Clone, PartialEq, ::prost::Message)]
867pub struct SubscriptingRef {
868    #[prost(message, optional, boxed, tag = "1")]
869    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
870    #[prost(uint32, tag = "2")]
871    pub refcontainertype: u32,
872    #[prost(uint32, tag = "3")]
873    pub refelemtype: u32,
874    #[prost(uint32, tag = "4")]
875    pub refrestype: u32,
876    #[prost(int32, tag = "5")]
877    pub reftypmod: i32,
878    #[prost(uint32, tag = "6")]
879    pub refcollid: u32,
880    #[prost(message, repeated, tag = "7")]
881    pub refupperindexpr: ::prost::alloc::vec::Vec<Node>,
882    #[prost(message, repeated, tag = "8")]
883    pub reflowerindexpr: ::prost::alloc::vec::Vec<Node>,
884    #[prost(message, optional, boxed, tag = "9")]
885    pub refexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
886    #[prost(message, optional, boxed, tag = "10")]
887    pub refassgnexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
888}
889#[derive(Clone, PartialEq, ::prost::Message)]
890pub struct FuncExpr {
891    #[prost(message, optional, boxed, tag = "1")]
892    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
893    #[prost(uint32, tag = "2")]
894    pub funcid: u32,
895    #[prost(uint32, tag = "3")]
896    pub funcresulttype: u32,
897    #[prost(bool, tag = "4")]
898    pub funcretset: bool,
899    #[prost(bool, tag = "5")]
900    pub funcvariadic: bool,
901    #[prost(enumeration = "CoercionForm", tag = "6")]
902    pub funcformat: i32,
903    #[prost(uint32, tag = "7")]
904    pub funccollid: u32,
905    #[prost(uint32, tag = "8")]
906    pub inputcollid: u32,
907    #[prost(message, repeated, tag = "9")]
908    pub args: ::prost::alloc::vec::Vec<Node>,
909    #[prost(int32, tag = "10")]
910    pub location: i32,
911}
912#[derive(Clone, PartialEq, ::prost::Message)]
913pub struct NamedArgExpr {
914    #[prost(message, optional, boxed, tag = "1")]
915    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
916    #[prost(message, optional, boxed, tag = "2")]
917    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
918    #[prost(string, tag = "3")]
919    pub name: ::prost::alloc::string::String,
920    #[prost(int32, tag = "4")]
921    pub argnumber: i32,
922    #[prost(int32, tag = "5")]
923    pub location: i32,
924}
925#[derive(Clone, PartialEq, ::prost::Message)]
926pub struct OpExpr {
927    #[prost(message, optional, boxed, tag = "1")]
928    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
929    #[prost(uint32, tag = "2")]
930    pub opno: u32,
931    #[prost(uint32, tag = "3")]
932    pub opresulttype: u32,
933    #[prost(bool, tag = "4")]
934    pub opretset: bool,
935    #[prost(uint32, tag = "5")]
936    pub opcollid: u32,
937    #[prost(uint32, tag = "6")]
938    pub inputcollid: u32,
939    #[prost(message, repeated, tag = "7")]
940    pub args: ::prost::alloc::vec::Vec<Node>,
941    #[prost(int32, tag = "8")]
942    pub location: i32,
943}
944#[derive(Clone, PartialEq, ::prost::Message)]
945pub struct DistinctExpr {
946    #[prost(message, optional, boxed, tag = "1")]
947    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
948    #[prost(uint32, tag = "2")]
949    pub opno: u32,
950    #[prost(uint32, tag = "3")]
951    pub opresulttype: u32,
952    #[prost(bool, tag = "4")]
953    pub opretset: bool,
954    #[prost(uint32, tag = "5")]
955    pub opcollid: u32,
956    #[prost(uint32, tag = "6")]
957    pub inputcollid: u32,
958    #[prost(message, repeated, tag = "7")]
959    pub args: ::prost::alloc::vec::Vec<Node>,
960    #[prost(int32, tag = "8")]
961    pub location: i32,
962}
963#[derive(Clone, PartialEq, ::prost::Message)]
964pub struct NullIfExpr {
965    #[prost(message, optional, boxed, tag = "1")]
966    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
967    #[prost(uint32, tag = "2")]
968    pub opno: u32,
969    #[prost(uint32, tag = "3")]
970    pub opresulttype: u32,
971    #[prost(bool, tag = "4")]
972    pub opretset: bool,
973    #[prost(uint32, tag = "5")]
974    pub opcollid: u32,
975    #[prost(uint32, tag = "6")]
976    pub inputcollid: u32,
977    #[prost(message, repeated, tag = "7")]
978    pub args: ::prost::alloc::vec::Vec<Node>,
979    #[prost(int32, tag = "8")]
980    pub location: i32,
981}
982#[derive(Clone, PartialEq, ::prost::Message)]
983pub struct ScalarArrayOpExpr {
984    #[prost(message, optional, boxed, tag = "1")]
985    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
986    #[prost(uint32, tag = "2")]
987    pub opno: u32,
988    #[prost(bool, tag = "3")]
989    pub use_or: bool,
990    #[prost(uint32, tag = "4")]
991    pub inputcollid: u32,
992    #[prost(message, repeated, tag = "5")]
993    pub args: ::prost::alloc::vec::Vec<Node>,
994    #[prost(int32, tag = "6")]
995    pub location: i32,
996}
997#[derive(Clone, PartialEq, ::prost::Message)]
998pub struct BoolExpr {
999    #[prost(message, optional, boxed, tag = "1")]
1000    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1001    #[prost(enumeration = "BoolExprType", tag = "2")]
1002    pub boolop: i32,
1003    #[prost(message, repeated, tag = "3")]
1004    pub args: ::prost::alloc::vec::Vec<Node>,
1005    #[prost(int32, tag = "4")]
1006    pub location: i32,
1007}
1008#[derive(Clone, PartialEq, ::prost::Message)]
1009pub struct SubLink {
1010    #[prost(message, optional, boxed, tag = "1")]
1011    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1012    #[prost(enumeration = "SubLinkType", tag = "2")]
1013    pub sub_link_type: i32,
1014    #[prost(int32, tag = "3")]
1015    pub sub_link_id: i32,
1016    #[prost(message, optional, boxed, tag = "4")]
1017    pub testexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1018    #[prost(message, repeated, tag = "5")]
1019    pub oper_name: ::prost::alloc::vec::Vec<Node>,
1020    #[prost(message, optional, boxed, tag = "6")]
1021    pub subselect: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1022    #[prost(int32, tag = "7")]
1023    pub location: i32,
1024}
1025#[derive(Clone, PartialEq, ::prost::Message)]
1026pub struct SubPlan {
1027    #[prost(message, optional, boxed, tag = "1")]
1028    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1029    #[prost(enumeration = "SubLinkType", tag = "2")]
1030    pub sub_link_type: i32,
1031    #[prost(message, optional, boxed, tag = "3")]
1032    pub testexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1033    #[prost(message, repeated, tag = "4")]
1034    pub param_ids: ::prost::alloc::vec::Vec<Node>,
1035    #[prost(int32, tag = "5")]
1036    pub plan_id: i32,
1037    #[prost(string, tag = "6")]
1038    pub plan_name: ::prost::alloc::string::String,
1039    #[prost(uint32, tag = "7")]
1040    pub first_col_type: u32,
1041    #[prost(int32, tag = "8")]
1042    pub first_col_typmod: i32,
1043    #[prost(uint32, tag = "9")]
1044    pub first_col_collation: u32,
1045    #[prost(bool, tag = "10")]
1046    pub use_hash_table: bool,
1047    #[prost(bool, tag = "11")]
1048    pub unknown_eq_false: bool,
1049    #[prost(bool, tag = "12")]
1050    pub parallel_safe: bool,
1051    #[prost(message, repeated, tag = "13")]
1052    pub set_param: ::prost::alloc::vec::Vec<Node>,
1053    #[prost(message, repeated, tag = "14")]
1054    pub par_param: ::prost::alloc::vec::Vec<Node>,
1055    #[prost(message, repeated, tag = "15")]
1056    pub args: ::prost::alloc::vec::Vec<Node>,
1057    #[prost(double, tag = "16")]
1058    pub startup_cost: f64,
1059    #[prost(double, tag = "17")]
1060    pub per_call_cost: f64,
1061}
1062#[derive(Clone, PartialEq, ::prost::Message)]
1063pub struct AlternativeSubPlan {
1064    #[prost(message, optional, boxed, tag = "1")]
1065    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1066    #[prost(message, repeated, tag = "2")]
1067    pub subplans: ::prost::alloc::vec::Vec<Node>,
1068}
1069#[derive(Clone, PartialEq, ::prost::Message)]
1070pub struct FieldSelect {
1071    #[prost(message, optional, boxed, tag = "1")]
1072    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1073    #[prost(message, optional, boxed, tag = "2")]
1074    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1075    #[prost(int32, tag = "3")]
1076    pub fieldnum: i32,
1077    #[prost(uint32, tag = "4")]
1078    pub resulttype: u32,
1079    #[prost(int32, tag = "5")]
1080    pub resulttypmod: i32,
1081    #[prost(uint32, tag = "6")]
1082    pub resultcollid: u32,
1083}
1084#[derive(Clone, PartialEq, ::prost::Message)]
1085pub struct FieldStore {
1086    #[prost(message, optional, boxed, tag = "1")]
1087    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1088    #[prost(message, optional, boxed, tag = "2")]
1089    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1090    #[prost(message, repeated, tag = "3")]
1091    pub newvals: ::prost::alloc::vec::Vec<Node>,
1092    #[prost(message, repeated, tag = "4")]
1093    pub fieldnums: ::prost::alloc::vec::Vec<Node>,
1094    #[prost(uint32, tag = "5")]
1095    pub resulttype: u32,
1096}
1097#[derive(Clone, PartialEq, ::prost::Message)]
1098pub struct RelabelType {
1099    #[prost(message, optional, boxed, tag = "1")]
1100    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1101    #[prost(message, optional, boxed, tag = "2")]
1102    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1103    #[prost(uint32, tag = "3")]
1104    pub resulttype: u32,
1105    #[prost(int32, tag = "4")]
1106    pub resulttypmod: i32,
1107    #[prost(uint32, tag = "5")]
1108    pub resultcollid: u32,
1109    #[prost(enumeration = "CoercionForm", tag = "6")]
1110    pub relabelformat: i32,
1111    #[prost(int32, tag = "7")]
1112    pub location: i32,
1113}
1114#[derive(Clone, PartialEq, ::prost::Message)]
1115pub struct CoerceViaIo {
1116    #[prost(message, optional, boxed, tag = "1")]
1117    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1118    #[prost(message, optional, boxed, tag = "2")]
1119    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1120    #[prost(uint32, tag = "3")]
1121    pub resulttype: u32,
1122    #[prost(uint32, tag = "4")]
1123    pub resultcollid: u32,
1124    #[prost(enumeration = "CoercionForm", tag = "5")]
1125    pub coerceformat: i32,
1126    #[prost(int32, tag = "6")]
1127    pub location: i32,
1128}
1129#[derive(Clone, PartialEq, ::prost::Message)]
1130pub struct ArrayCoerceExpr {
1131    #[prost(message, optional, boxed, tag = "1")]
1132    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1133    #[prost(message, optional, boxed, tag = "2")]
1134    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1135    #[prost(message, optional, boxed, tag = "3")]
1136    pub elemexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1137    #[prost(uint32, tag = "4")]
1138    pub resulttype: u32,
1139    #[prost(int32, tag = "5")]
1140    pub resulttypmod: i32,
1141    #[prost(uint32, tag = "6")]
1142    pub resultcollid: u32,
1143    #[prost(enumeration = "CoercionForm", tag = "7")]
1144    pub coerceformat: i32,
1145    #[prost(int32, tag = "8")]
1146    pub location: i32,
1147}
1148#[derive(Clone, PartialEq, ::prost::Message)]
1149pub struct ConvertRowtypeExpr {
1150    #[prost(message, optional, boxed, tag = "1")]
1151    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1152    #[prost(message, optional, boxed, tag = "2")]
1153    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1154    #[prost(uint32, tag = "3")]
1155    pub resulttype: u32,
1156    #[prost(enumeration = "CoercionForm", tag = "4")]
1157    pub convertformat: i32,
1158    #[prost(int32, tag = "5")]
1159    pub location: i32,
1160}
1161#[derive(Clone, PartialEq, ::prost::Message)]
1162pub struct CollateExpr {
1163    #[prost(message, optional, boxed, tag = "1")]
1164    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1165    #[prost(message, optional, boxed, tag = "2")]
1166    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1167    #[prost(uint32, tag = "3")]
1168    pub coll_oid: u32,
1169    #[prost(int32, tag = "4")]
1170    pub location: i32,
1171}
1172#[derive(Clone, PartialEq, ::prost::Message)]
1173pub struct CaseExpr {
1174    #[prost(message, optional, boxed, tag = "1")]
1175    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1176    #[prost(uint32, tag = "2")]
1177    pub casetype: u32,
1178    #[prost(uint32, tag = "3")]
1179    pub casecollid: u32,
1180    #[prost(message, optional, boxed, tag = "4")]
1181    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1182    #[prost(message, repeated, tag = "5")]
1183    pub args: ::prost::alloc::vec::Vec<Node>,
1184    #[prost(message, optional, boxed, tag = "6")]
1185    pub defresult: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1186    #[prost(int32, tag = "7")]
1187    pub location: i32,
1188}
1189#[derive(Clone, PartialEq, ::prost::Message)]
1190pub struct CaseWhen {
1191    #[prost(message, optional, boxed, tag = "1")]
1192    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1193    #[prost(message, optional, boxed, tag = "2")]
1194    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1195    #[prost(message, optional, boxed, tag = "3")]
1196    pub result: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1197    #[prost(int32, tag = "4")]
1198    pub location: i32,
1199}
1200#[derive(Clone, PartialEq, ::prost::Message)]
1201pub struct CaseTestExpr {
1202    #[prost(message, optional, boxed, tag = "1")]
1203    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1204    #[prost(uint32, tag = "2")]
1205    pub type_id: u32,
1206    #[prost(int32, tag = "3")]
1207    pub type_mod: i32,
1208    #[prost(uint32, tag = "4")]
1209    pub collation: u32,
1210}
1211#[derive(Clone, PartialEq, ::prost::Message)]
1212pub struct ArrayExpr {
1213    #[prost(message, optional, boxed, tag = "1")]
1214    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1215    #[prost(uint32, tag = "2")]
1216    pub array_typeid: u32,
1217    #[prost(uint32, tag = "3")]
1218    pub array_collid: u32,
1219    #[prost(uint32, tag = "4")]
1220    pub element_typeid: u32,
1221    #[prost(message, repeated, tag = "5")]
1222    pub elements: ::prost::alloc::vec::Vec<Node>,
1223    #[prost(bool, tag = "6")]
1224    pub multidims: bool,
1225    #[prost(int32, tag = "7")]
1226    pub location: i32,
1227}
1228#[derive(Clone, PartialEq, ::prost::Message)]
1229pub struct RowExpr {
1230    #[prost(message, optional, boxed, tag = "1")]
1231    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1232    #[prost(message, repeated, tag = "2")]
1233    pub args: ::prost::alloc::vec::Vec<Node>,
1234    #[prost(uint32, tag = "3")]
1235    pub row_typeid: u32,
1236    #[prost(enumeration = "CoercionForm", tag = "4")]
1237    pub row_format: i32,
1238    #[prost(message, repeated, tag = "5")]
1239    pub colnames: ::prost::alloc::vec::Vec<Node>,
1240    #[prost(int32, tag = "6")]
1241    pub location: i32,
1242}
1243#[derive(Clone, PartialEq, ::prost::Message)]
1244pub struct RowCompareExpr {
1245    #[prost(message, optional, boxed, tag = "1")]
1246    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1247    #[prost(enumeration = "RowCompareType", tag = "2")]
1248    pub rctype: i32,
1249    #[prost(message, repeated, tag = "3")]
1250    pub opnos: ::prost::alloc::vec::Vec<Node>,
1251    #[prost(message, repeated, tag = "4")]
1252    pub opfamilies: ::prost::alloc::vec::Vec<Node>,
1253    #[prost(message, repeated, tag = "5")]
1254    pub inputcollids: ::prost::alloc::vec::Vec<Node>,
1255    #[prost(message, repeated, tag = "6")]
1256    pub largs: ::prost::alloc::vec::Vec<Node>,
1257    #[prost(message, repeated, tag = "7")]
1258    pub rargs: ::prost::alloc::vec::Vec<Node>,
1259}
1260#[derive(Clone, PartialEq, ::prost::Message)]
1261pub struct CoalesceExpr {
1262    #[prost(message, optional, boxed, tag = "1")]
1263    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1264    #[prost(uint32, tag = "2")]
1265    pub coalescetype: u32,
1266    #[prost(uint32, tag = "3")]
1267    pub coalescecollid: u32,
1268    #[prost(message, repeated, tag = "4")]
1269    pub args: ::prost::alloc::vec::Vec<Node>,
1270    #[prost(int32, tag = "5")]
1271    pub location: i32,
1272}
1273#[derive(Clone, PartialEq, ::prost::Message)]
1274pub struct MinMaxExpr {
1275    #[prost(message, optional, boxed, tag = "1")]
1276    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1277    #[prost(uint32, tag = "2")]
1278    pub minmaxtype: u32,
1279    #[prost(uint32, tag = "3")]
1280    pub minmaxcollid: u32,
1281    #[prost(uint32, tag = "4")]
1282    pub inputcollid: u32,
1283    #[prost(enumeration = "MinMaxOp", tag = "5")]
1284    pub op: i32,
1285    #[prost(message, repeated, tag = "6")]
1286    pub args: ::prost::alloc::vec::Vec<Node>,
1287    #[prost(int32, tag = "7")]
1288    pub location: i32,
1289}
1290#[derive(Clone, PartialEq, ::prost::Message)]
1291pub struct SqlValueFunction {
1292    #[prost(message, optional, boxed, tag = "1")]
1293    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1294    #[prost(enumeration = "SqlValueFunctionOp", tag = "2")]
1295    pub op: i32,
1296    #[prost(uint32, tag = "3")]
1297    pub r#type: u32,
1298    #[prost(int32, tag = "4")]
1299    pub typmod: i32,
1300    #[prost(int32, tag = "5")]
1301    pub location: i32,
1302}
1303#[derive(Clone, PartialEq, ::prost::Message)]
1304pub struct XmlExpr {
1305    #[prost(message, optional, boxed, tag = "1")]
1306    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1307    #[prost(enumeration = "XmlExprOp", tag = "2")]
1308    pub op: i32,
1309    #[prost(string, tag = "3")]
1310    pub name: ::prost::alloc::string::String,
1311    #[prost(message, repeated, tag = "4")]
1312    pub named_args: ::prost::alloc::vec::Vec<Node>,
1313    #[prost(message, repeated, tag = "5")]
1314    pub arg_names: ::prost::alloc::vec::Vec<Node>,
1315    #[prost(message, repeated, tag = "6")]
1316    pub args: ::prost::alloc::vec::Vec<Node>,
1317    #[prost(enumeration = "XmlOptionType", tag = "7")]
1318    pub xmloption: i32,
1319    #[prost(bool, tag = "8")]
1320    pub indent: bool,
1321    #[prost(uint32, tag = "9")]
1322    pub r#type: u32,
1323    #[prost(int32, tag = "10")]
1324    pub typmod: i32,
1325    #[prost(int32, tag = "11")]
1326    pub location: i32,
1327}
1328#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1329pub struct JsonFormat {
1330    #[prost(enumeration = "JsonFormatType", tag = "1")]
1331    pub format_type: i32,
1332    #[prost(enumeration = "JsonEncoding", tag = "2")]
1333    pub encoding: i32,
1334    #[prost(int32, tag = "3")]
1335    pub location: i32,
1336}
1337#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1338pub struct JsonReturning {
1339    #[prost(message, optional, tag = "1")]
1340    pub format: ::core::option::Option<JsonFormat>,
1341    #[prost(uint32, tag = "2")]
1342    pub typid: u32,
1343    #[prost(int32, tag = "3")]
1344    pub typmod: i32,
1345}
1346#[derive(Clone, PartialEq, ::prost::Message)]
1347pub struct JsonValueExpr {
1348    #[prost(message, optional, boxed, tag = "1")]
1349    pub raw_expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1350    #[prost(message, optional, boxed, tag = "2")]
1351    pub formatted_expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1352    #[prost(message, optional, tag = "3")]
1353    pub format: ::core::option::Option<JsonFormat>,
1354}
1355#[derive(Clone, PartialEq, ::prost::Message)]
1356pub struct JsonConstructorExpr {
1357    #[prost(message, optional, boxed, tag = "1")]
1358    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1359    #[prost(enumeration = "JsonConstructorType", tag = "2")]
1360    pub r#type: i32,
1361    #[prost(message, repeated, tag = "3")]
1362    pub args: ::prost::alloc::vec::Vec<Node>,
1363    #[prost(message, optional, boxed, tag = "4")]
1364    pub func: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1365    #[prost(message, optional, boxed, tag = "5")]
1366    pub coercion: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1367    #[prost(message, optional, tag = "6")]
1368    pub returning: ::core::option::Option<JsonReturning>,
1369    #[prost(bool, tag = "7")]
1370    pub absent_on_null: bool,
1371    #[prost(bool, tag = "8")]
1372    pub unique: bool,
1373    #[prost(int32, tag = "9")]
1374    pub location: i32,
1375}
1376#[derive(Clone, PartialEq, ::prost::Message)]
1377pub struct JsonIsPredicate {
1378    #[prost(message, optional, boxed, tag = "1")]
1379    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1380    #[prost(message, optional, tag = "2")]
1381    pub format: ::core::option::Option<JsonFormat>,
1382    #[prost(enumeration = "JsonValueType", tag = "3")]
1383    pub item_type: i32,
1384    #[prost(bool, tag = "4")]
1385    pub unique_keys: bool,
1386    #[prost(int32, tag = "5")]
1387    pub location: i32,
1388}
1389#[derive(Clone, PartialEq, ::prost::Message)]
1390pub struct JsonBehavior {
1391    #[prost(enumeration = "JsonBehaviorType", tag = "1")]
1392    pub btype: i32,
1393    #[prost(message, optional, boxed, tag = "2")]
1394    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1395    #[prost(bool, tag = "3")]
1396    pub coerce: bool,
1397    #[prost(int32, tag = "4")]
1398    pub location: i32,
1399}
1400#[derive(Clone, PartialEq, ::prost::Message)]
1401pub struct JsonExpr {
1402    #[prost(message, optional, boxed, tag = "1")]
1403    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1404    #[prost(enumeration = "JsonExprOp", tag = "2")]
1405    pub op: i32,
1406    #[prost(string, tag = "3")]
1407    pub column_name: ::prost::alloc::string::String,
1408    #[prost(message, optional, boxed, tag = "4")]
1409    pub formatted_expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1410    #[prost(message, optional, tag = "5")]
1411    pub format: ::core::option::Option<JsonFormat>,
1412    #[prost(message, optional, boxed, tag = "6")]
1413    pub path_spec: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1414    #[prost(message, optional, tag = "7")]
1415    pub returning: ::core::option::Option<JsonReturning>,
1416    #[prost(message, repeated, tag = "8")]
1417    pub passing_names: ::prost::alloc::vec::Vec<Node>,
1418    #[prost(message, repeated, tag = "9")]
1419    pub passing_values: ::prost::alloc::vec::Vec<Node>,
1420    #[prost(message, optional, boxed, tag = "10")]
1421    pub on_empty: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
1422    #[prost(message, optional, boxed, tag = "11")]
1423    pub on_error: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
1424    #[prost(bool, tag = "12")]
1425    pub use_io_coercion: bool,
1426    #[prost(bool, tag = "13")]
1427    pub use_json_coercion: bool,
1428    #[prost(enumeration = "JsonWrapper", tag = "14")]
1429    pub wrapper: i32,
1430    #[prost(bool, tag = "15")]
1431    pub omit_quotes: bool,
1432    #[prost(uint32, tag = "16")]
1433    pub collation: u32,
1434    #[prost(int32, tag = "17")]
1435    pub location: i32,
1436}
1437#[derive(Clone, PartialEq, ::prost::Message)]
1438pub struct JsonTablePath {
1439    #[prost(string, tag = "1")]
1440    pub name: ::prost::alloc::string::String,
1441}
1442#[derive(Clone, PartialEq, ::prost::Message)]
1443pub struct JsonTablePathScan {
1444    #[prost(message, optional, boxed, tag = "1")]
1445    pub plan: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1446    #[prost(message, optional, tag = "2")]
1447    pub path: ::core::option::Option<JsonTablePath>,
1448    #[prost(bool, tag = "3")]
1449    pub error_on_error: bool,
1450    #[prost(message, optional, boxed, tag = "4")]
1451    pub child: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1452    #[prost(int32, tag = "5")]
1453    pub col_min: i32,
1454    #[prost(int32, tag = "6")]
1455    pub col_max: i32,
1456}
1457#[derive(Clone, PartialEq, ::prost::Message)]
1458pub struct JsonTableSiblingJoin {
1459    #[prost(message, optional, boxed, tag = "1")]
1460    pub plan: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1461    #[prost(message, optional, boxed, tag = "2")]
1462    pub lplan: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1463    #[prost(message, optional, boxed, tag = "3")]
1464    pub rplan: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1465}
1466#[derive(Clone, PartialEq, ::prost::Message)]
1467pub struct NullTest {
1468    #[prost(message, optional, boxed, tag = "1")]
1469    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1470    #[prost(message, optional, boxed, tag = "2")]
1471    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1472    #[prost(enumeration = "NullTestType", tag = "3")]
1473    pub nulltesttype: i32,
1474    #[prost(bool, tag = "4")]
1475    pub argisrow: bool,
1476    #[prost(int32, tag = "5")]
1477    pub location: i32,
1478}
1479#[derive(Clone, PartialEq, ::prost::Message)]
1480pub struct BooleanTest {
1481    #[prost(message, optional, boxed, tag = "1")]
1482    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1483    #[prost(message, optional, boxed, tag = "2")]
1484    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1485    #[prost(enumeration = "BoolTestType", tag = "3")]
1486    pub booltesttype: i32,
1487    #[prost(int32, tag = "4")]
1488    pub location: i32,
1489}
1490#[derive(Clone, PartialEq, ::prost::Message)]
1491pub struct MergeAction {
1492    #[prost(enumeration = "MergeMatchKind", tag = "1")]
1493    pub match_kind: i32,
1494    #[prost(enumeration = "CmdType", tag = "2")]
1495    pub command_type: i32,
1496    #[prost(enumeration = "OverridingKind", tag = "3")]
1497    pub r#override: i32,
1498    #[prost(message, optional, boxed, tag = "4")]
1499    pub qual: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1500    #[prost(message, repeated, tag = "5")]
1501    pub target_list: ::prost::alloc::vec::Vec<Node>,
1502    #[prost(message, repeated, tag = "6")]
1503    pub update_colnos: ::prost::alloc::vec::Vec<Node>,
1504}
1505#[derive(Clone, PartialEq, ::prost::Message)]
1506pub struct CoerceToDomain {
1507    #[prost(message, optional, boxed, tag = "1")]
1508    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1509    #[prost(message, optional, boxed, tag = "2")]
1510    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1511    #[prost(uint32, tag = "3")]
1512    pub resulttype: u32,
1513    #[prost(int32, tag = "4")]
1514    pub resulttypmod: i32,
1515    #[prost(uint32, tag = "5")]
1516    pub resultcollid: u32,
1517    #[prost(enumeration = "CoercionForm", tag = "6")]
1518    pub coercionformat: i32,
1519    #[prost(int32, tag = "7")]
1520    pub location: i32,
1521}
1522#[derive(Clone, PartialEq, ::prost::Message)]
1523pub struct CoerceToDomainValue {
1524    #[prost(message, optional, boxed, tag = "1")]
1525    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1526    #[prost(uint32, tag = "2")]
1527    pub type_id: u32,
1528    #[prost(int32, tag = "3")]
1529    pub type_mod: i32,
1530    #[prost(uint32, tag = "4")]
1531    pub collation: u32,
1532    #[prost(int32, tag = "5")]
1533    pub location: i32,
1534}
1535#[derive(Clone, PartialEq, ::prost::Message)]
1536pub struct SetToDefault {
1537    #[prost(message, optional, boxed, tag = "1")]
1538    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1539    #[prost(uint32, tag = "2")]
1540    pub type_id: u32,
1541    #[prost(int32, tag = "3")]
1542    pub type_mod: i32,
1543    #[prost(uint32, tag = "4")]
1544    pub collation: u32,
1545    #[prost(int32, tag = "5")]
1546    pub location: i32,
1547}
1548#[derive(Clone, PartialEq, ::prost::Message)]
1549pub struct CurrentOfExpr {
1550    #[prost(message, optional, boxed, tag = "1")]
1551    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1552    #[prost(uint32, tag = "2")]
1553    pub cvarno: u32,
1554    #[prost(string, tag = "3")]
1555    pub cursor_name: ::prost::alloc::string::String,
1556    #[prost(int32, tag = "4")]
1557    pub cursor_param: i32,
1558}
1559#[derive(Clone, PartialEq, ::prost::Message)]
1560pub struct NextValueExpr {
1561    #[prost(message, optional, boxed, tag = "1")]
1562    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1563    #[prost(uint32, tag = "2")]
1564    pub seqid: u32,
1565    #[prost(uint32, tag = "3")]
1566    pub type_id: u32,
1567}
1568#[derive(Clone, PartialEq, ::prost::Message)]
1569pub struct InferenceElem {
1570    #[prost(message, optional, boxed, tag = "1")]
1571    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1572    #[prost(message, optional, boxed, tag = "2")]
1573    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1574    #[prost(uint32, tag = "3")]
1575    pub infercollid: u32,
1576    #[prost(uint32, tag = "4")]
1577    pub inferopclass: u32,
1578}
1579#[derive(Clone, PartialEq, ::prost::Message)]
1580pub struct TargetEntry {
1581    #[prost(message, optional, boxed, tag = "1")]
1582    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1583    #[prost(message, optional, boxed, tag = "2")]
1584    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1585    #[prost(int32, tag = "3")]
1586    pub resno: i32,
1587    #[prost(string, tag = "4")]
1588    pub resname: ::prost::alloc::string::String,
1589    #[prost(uint32, tag = "5")]
1590    pub ressortgroupref: u32,
1591    #[prost(uint32, tag = "6")]
1592    pub resorigtbl: u32,
1593    #[prost(int32, tag = "7")]
1594    pub resorigcol: i32,
1595    #[prost(bool, tag = "8")]
1596    pub resjunk: bool,
1597}
1598#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1599pub struct RangeTblRef {
1600    #[prost(int32, tag = "1")]
1601    pub rtindex: i32,
1602}
1603#[derive(Clone, PartialEq, ::prost::Message)]
1604pub struct JoinExpr {
1605    #[prost(enumeration = "JoinType", tag = "1")]
1606    pub jointype: i32,
1607    #[prost(bool, tag = "2")]
1608    pub is_natural: bool,
1609    #[prost(message, optional, boxed, tag = "3")]
1610    pub larg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1611    #[prost(message, optional, boxed, tag = "4")]
1612    pub rarg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1613    #[prost(message, repeated, tag = "5")]
1614    pub using_clause: ::prost::alloc::vec::Vec<Node>,
1615    #[prost(message, optional, tag = "6")]
1616    pub join_using_alias: ::core::option::Option<Alias>,
1617    #[prost(message, optional, boxed, tag = "7")]
1618    pub quals: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1619    #[prost(message, optional, tag = "8")]
1620    pub alias: ::core::option::Option<Alias>,
1621    #[prost(int32, tag = "9")]
1622    pub rtindex: i32,
1623}
1624#[derive(Clone, PartialEq, ::prost::Message)]
1625pub struct FromExpr {
1626    #[prost(message, repeated, tag = "1")]
1627    pub fromlist: ::prost::alloc::vec::Vec<Node>,
1628    #[prost(message, optional, boxed, tag = "2")]
1629    pub quals: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1630}
1631#[derive(Clone, PartialEq, ::prost::Message)]
1632pub struct OnConflictExpr {
1633    #[prost(enumeration = "OnConflictAction", tag = "1")]
1634    pub action: i32,
1635    #[prost(message, repeated, tag = "2")]
1636    pub arbiter_elems: ::prost::alloc::vec::Vec<Node>,
1637    #[prost(message, optional, boxed, tag = "3")]
1638    pub arbiter_where: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1639    #[prost(uint32, tag = "4")]
1640    pub constraint: u32,
1641    #[prost(message, repeated, tag = "5")]
1642    pub on_conflict_set: ::prost::alloc::vec::Vec<Node>,
1643    #[prost(message, optional, boxed, tag = "6")]
1644    pub on_conflict_where: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1645    #[prost(int32, tag = "7")]
1646    pub excl_rel_index: i32,
1647    #[prost(message, repeated, tag = "8")]
1648    pub excl_rel_tlist: ::prost::alloc::vec::Vec<Node>,
1649}
1650#[derive(Clone, PartialEq, ::prost::Message)]
1651pub struct Query {
1652    #[prost(enumeration = "CmdType", tag = "1")]
1653    pub command_type: i32,
1654    #[prost(enumeration = "QuerySource", tag = "2")]
1655    pub query_source: i32,
1656    #[prost(bool, tag = "3")]
1657    pub can_set_tag: bool,
1658    #[prost(message, optional, boxed, tag = "4")]
1659    pub utility_stmt: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1660    #[prost(int32, tag = "5")]
1661    pub result_relation: i32,
1662    #[prost(bool, tag = "6")]
1663    pub has_aggs: bool,
1664    #[prost(bool, tag = "7")]
1665    pub has_window_funcs: bool,
1666    #[prost(bool, tag = "8")]
1667    pub has_target_srfs: bool,
1668    #[prost(bool, tag = "9")]
1669    pub has_sub_links: bool,
1670    #[prost(bool, tag = "10")]
1671    pub has_distinct_on: bool,
1672    #[prost(bool, tag = "11")]
1673    pub has_recursive: bool,
1674    #[prost(bool, tag = "12")]
1675    pub has_modifying_cte: bool,
1676    #[prost(bool, tag = "13")]
1677    pub has_for_update: bool,
1678    #[prost(bool, tag = "14")]
1679    pub has_row_security: bool,
1680    #[prost(bool, tag = "15")]
1681    pub is_return: bool,
1682    #[prost(message, repeated, tag = "16")]
1683    pub cte_list: ::prost::alloc::vec::Vec<Node>,
1684    #[prost(message, repeated, tag = "17")]
1685    pub rtable: ::prost::alloc::vec::Vec<Node>,
1686    #[prost(message, repeated, tag = "18")]
1687    pub rteperminfos: ::prost::alloc::vec::Vec<Node>,
1688    #[prost(message, optional, boxed, tag = "19")]
1689    pub jointree: ::core::option::Option<::prost::alloc::boxed::Box<FromExpr>>,
1690    #[prost(message, repeated, tag = "20")]
1691    pub merge_action_list: ::prost::alloc::vec::Vec<Node>,
1692    #[prost(int32, tag = "21")]
1693    pub merge_target_relation: i32,
1694    #[prost(message, optional, boxed, tag = "22")]
1695    pub merge_join_condition: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1696    #[prost(message, repeated, tag = "23")]
1697    pub target_list: ::prost::alloc::vec::Vec<Node>,
1698    #[prost(enumeration = "OverridingKind", tag = "24")]
1699    pub r#override: i32,
1700    #[prost(message, optional, boxed, tag = "25")]
1701    pub on_conflict: ::core::option::Option<::prost::alloc::boxed::Box<OnConflictExpr>>,
1702    #[prost(message, repeated, tag = "26")]
1703    pub returning_list: ::prost::alloc::vec::Vec<Node>,
1704    #[prost(message, repeated, tag = "27")]
1705    pub group_clause: ::prost::alloc::vec::Vec<Node>,
1706    #[prost(bool, tag = "28")]
1707    pub group_distinct: bool,
1708    #[prost(message, repeated, tag = "29")]
1709    pub grouping_sets: ::prost::alloc::vec::Vec<Node>,
1710    #[prost(message, optional, boxed, tag = "30")]
1711    pub having_qual: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1712    #[prost(message, repeated, tag = "31")]
1713    pub window_clause: ::prost::alloc::vec::Vec<Node>,
1714    #[prost(message, repeated, tag = "32")]
1715    pub distinct_clause: ::prost::alloc::vec::Vec<Node>,
1716    #[prost(message, repeated, tag = "33")]
1717    pub sort_clause: ::prost::alloc::vec::Vec<Node>,
1718    #[prost(message, optional, boxed, tag = "34")]
1719    pub limit_offset: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1720    #[prost(message, optional, boxed, tag = "35")]
1721    pub limit_count: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1722    #[prost(enumeration = "LimitOption", tag = "36")]
1723    pub limit_option: i32,
1724    #[prost(message, repeated, tag = "37")]
1725    pub row_marks: ::prost::alloc::vec::Vec<Node>,
1726    #[prost(message, optional, boxed, tag = "38")]
1727    pub set_operations: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1728    #[prost(message, repeated, tag = "39")]
1729    pub constraint_deps: ::prost::alloc::vec::Vec<Node>,
1730    #[prost(message, repeated, tag = "40")]
1731    pub with_check_options: ::prost::alloc::vec::Vec<Node>,
1732    #[prost(int32, tag = "41")]
1733    pub stmt_location: i32,
1734    #[prost(int32, tag = "42")]
1735    pub stmt_len: i32,
1736}
1737#[derive(Clone, PartialEq, ::prost::Message)]
1738pub struct TypeName {
1739    #[prost(message, repeated, tag = "1")]
1740    pub names: ::prost::alloc::vec::Vec<Node>,
1741    #[prost(uint32, tag = "2")]
1742    pub type_oid: u32,
1743    #[prost(bool, tag = "3")]
1744    pub setof: bool,
1745    #[prost(bool, tag = "4")]
1746    pub pct_type: bool,
1747    #[prost(message, repeated, tag = "5")]
1748    pub typmods: ::prost::alloc::vec::Vec<Node>,
1749    #[prost(int32, tag = "6")]
1750    pub typemod: i32,
1751    #[prost(message, repeated, tag = "7")]
1752    pub array_bounds: ::prost::alloc::vec::Vec<Node>,
1753    #[prost(int32, tag = "8")]
1754    pub location: i32,
1755}
1756#[derive(Clone, PartialEq, ::prost::Message)]
1757pub struct ColumnRef {
1758    #[prost(message, repeated, tag = "1")]
1759    pub fields: ::prost::alloc::vec::Vec<Node>,
1760    #[prost(int32, tag = "2")]
1761    pub location: i32,
1762}
1763#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1764pub struct ParamRef {
1765    #[prost(int32, tag = "1")]
1766    pub number: i32,
1767    #[prost(int32, tag = "2")]
1768    pub location: i32,
1769}
1770#[derive(Clone, PartialEq, ::prost::Message)]
1771pub struct AExpr {
1772    #[prost(enumeration = "AExprKind", tag = "1")]
1773    pub kind: i32,
1774    #[prost(message, repeated, tag = "2")]
1775    pub name: ::prost::alloc::vec::Vec<Node>,
1776    #[prost(message, optional, boxed, tag = "3")]
1777    pub lexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1778    #[prost(message, optional, boxed, tag = "4")]
1779    pub rexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1780    #[prost(int32, tag = "5")]
1781    pub location: i32,
1782}
1783#[derive(Clone, PartialEq, ::prost::Message)]
1784pub struct TypeCast {
1785    #[prost(message, optional, boxed, tag = "1")]
1786    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1787    #[prost(message, optional, tag = "2")]
1788    pub type_name: ::core::option::Option<TypeName>,
1789    #[prost(int32, tag = "3")]
1790    pub location: i32,
1791}
1792#[derive(Clone, PartialEq, ::prost::Message)]
1793pub struct CollateClause {
1794    #[prost(message, optional, boxed, tag = "1")]
1795    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1796    #[prost(message, repeated, tag = "2")]
1797    pub collname: ::prost::alloc::vec::Vec<Node>,
1798    #[prost(int32, tag = "3")]
1799    pub location: i32,
1800}
1801#[derive(Clone, PartialEq, ::prost::Message)]
1802pub struct RoleSpec {
1803    #[prost(enumeration = "RoleSpecType", tag = "1")]
1804    pub roletype: i32,
1805    #[prost(string, tag = "2")]
1806    pub rolename: ::prost::alloc::string::String,
1807    #[prost(int32, tag = "3")]
1808    pub location: i32,
1809}
1810#[derive(Clone, PartialEq, ::prost::Message)]
1811pub struct FuncCall {
1812    #[prost(message, repeated, tag = "1")]
1813    pub funcname: ::prost::alloc::vec::Vec<Node>,
1814    #[prost(message, repeated, tag = "2")]
1815    pub args: ::prost::alloc::vec::Vec<Node>,
1816    #[prost(message, repeated, tag = "3")]
1817    pub agg_order: ::prost::alloc::vec::Vec<Node>,
1818    #[prost(message, optional, boxed, tag = "4")]
1819    pub agg_filter: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1820    #[prost(message, optional, boxed, tag = "5")]
1821    pub over: ::core::option::Option<::prost::alloc::boxed::Box<WindowDef>>,
1822    #[prost(bool, tag = "6")]
1823    pub agg_within_group: bool,
1824    #[prost(bool, tag = "7")]
1825    pub agg_star: bool,
1826    #[prost(bool, tag = "8")]
1827    pub agg_distinct: bool,
1828    #[prost(bool, tag = "9")]
1829    pub func_variadic: bool,
1830    #[prost(enumeration = "CoercionForm", tag = "10")]
1831    pub funcformat: i32,
1832    #[prost(int32, tag = "11")]
1833    pub location: i32,
1834}
1835#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1836pub struct AStar {}
1837#[derive(Clone, PartialEq, ::prost::Message)]
1838pub struct AIndices {
1839    #[prost(bool, tag = "1")]
1840    pub is_slice: bool,
1841    #[prost(message, optional, boxed, tag = "2")]
1842    pub lidx: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1843    #[prost(message, optional, boxed, tag = "3")]
1844    pub uidx: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1845}
1846#[derive(Clone, PartialEq, ::prost::Message)]
1847pub struct AIndirection {
1848    #[prost(message, optional, boxed, tag = "1")]
1849    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1850    #[prost(message, repeated, tag = "2")]
1851    pub indirection: ::prost::alloc::vec::Vec<Node>,
1852}
1853#[derive(Clone, PartialEq, ::prost::Message)]
1854pub struct AArrayExpr {
1855    #[prost(message, repeated, tag = "1")]
1856    pub elements: ::prost::alloc::vec::Vec<Node>,
1857    #[prost(int32, tag = "2")]
1858    pub location: i32,
1859}
1860#[derive(Clone, PartialEq, ::prost::Message)]
1861pub struct ResTarget {
1862    #[prost(string, tag = "1")]
1863    pub name: ::prost::alloc::string::String,
1864    #[prost(message, repeated, tag = "2")]
1865    pub indirection: ::prost::alloc::vec::Vec<Node>,
1866    #[prost(message, optional, boxed, tag = "3")]
1867    pub val: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1868    #[prost(int32, tag = "4")]
1869    pub location: i32,
1870}
1871#[derive(Clone, PartialEq, ::prost::Message)]
1872pub struct MultiAssignRef {
1873    #[prost(message, optional, boxed, tag = "1")]
1874    pub source: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1875    #[prost(int32, tag = "2")]
1876    pub colno: i32,
1877    #[prost(int32, tag = "3")]
1878    pub ncolumns: i32,
1879}
1880#[derive(Clone, PartialEq, ::prost::Message)]
1881pub struct SortBy {
1882    #[prost(message, optional, boxed, tag = "1")]
1883    pub node: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1884    #[prost(enumeration = "SortByDir", tag = "2")]
1885    pub sortby_dir: i32,
1886    #[prost(enumeration = "SortByNulls", tag = "3")]
1887    pub sortby_nulls: i32,
1888    #[prost(message, repeated, tag = "4")]
1889    pub use_op: ::prost::alloc::vec::Vec<Node>,
1890    #[prost(int32, tag = "5")]
1891    pub location: i32,
1892}
1893#[derive(Clone, PartialEq, ::prost::Message)]
1894pub struct WindowDef {
1895    #[prost(string, tag = "1")]
1896    pub name: ::prost::alloc::string::String,
1897    #[prost(string, tag = "2")]
1898    pub refname: ::prost::alloc::string::String,
1899    #[prost(message, repeated, tag = "3")]
1900    pub partition_clause: ::prost::alloc::vec::Vec<Node>,
1901    #[prost(message, repeated, tag = "4")]
1902    pub order_clause: ::prost::alloc::vec::Vec<Node>,
1903    #[prost(int32, tag = "5")]
1904    pub frame_options: i32,
1905    #[prost(message, optional, boxed, tag = "6")]
1906    pub start_offset: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1907    #[prost(message, optional, boxed, tag = "7")]
1908    pub end_offset: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1909    #[prost(int32, tag = "8")]
1910    pub location: i32,
1911}
1912#[derive(Clone, PartialEq, ::prost::Message)]
1913pub struct RangeSubselect {
1914    #[prost(bool, tag = "1")]
1915    pub lateral: bool,
1916    #[prost(message, optional, boxed, tag = "2")]
1917    pub subquery: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1918    #[prost(message, optional, tag = "3")]
1919    pub alias: ::core::option::Option<Alias>,
1920}
1921#[derive(Clone, PartialEq, ::prost::Message)]
1922pub struct RangeFunction {
1923    #[prost(bool, tag = "1")]
1924    pub lateral: bool,
1925    #[prost(bool, tag = "2")]
1926    pub ordinality: bool,
1927    #[prost(bool, tag = "3")]
1928    pub is_rowsfrom: bool,
1929    #[prost(message, repeated, tag = "4")]
1930    pub functions: ::prost::alloc::vec::Vec<Node>,
1931    #[prost(message, optional, tag = "5")]
1932    pub alias: ::core::option::Option<Alias>,
1933    #[prost(message, repeated, tag = "6")]
1934    pub coldeflist: ::prost::alloc::vec::Vec<Node>,
1935}
1936#[derive(Clone, PartialEq, ::prost::Message)]
1937pub struct RangeTableFunc {
1938    #[prost(bool, tag = "1")]
1939    pub lateral: bool,
1940    #[prost(message, optional, boxed, tag = "2")]
1941    pub docexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1942    #[prost(message, optional, boxed, tag = "3")]
1943    pub rowexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1944    #[prost(message, repeated, tag = "4")]
1945    pub namespaces: ::prost::alloc::vec::Vec<Node>,
1946    #[prost(message, repeated, tag = "5")]
1947    pub columns: ::prost::alloc::vec::Vec<Node>,
1948    #[prost(message, optional, tag = "6")]
1949    pub alias: ::core::option::Option<Alias>,
1950    #[prost(int32, tag = "7")]
1951    pub location: i32,
1952}
1953#[derive(Clone, PartialEq, ::prost::Message)]
1954pub struct RangeTableFuncCol {
1955    #[prost(string, tag = "1")]
1956    pub colname: ::prost::alloc::string::String,
1957    #[prost(message, optional, tag = "2")]
1958    pub type_name: ::core::option::Option<TypeName>,
1959    #[prost(bool, tag = "3")]
1960    pub for_ordinality: bool,
1961    #[prost(bool, tag = "4")]
1962    pub is_not_null: bool,
1963    #[prost(message, optional, boxed, tag = "5")]
1964    pub colexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1965    #[prost(message, optional, boxed, tag = "6")]
1966    pub coldefexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1967    #[prost(int32, tag = "7")]
1968    pub location: i32,
1969}
1970#[derive(Clone, PartialEq, ::prost::Message)]
1971pub struct RangeTableSample {
1972    #[prost(message, optional, boxed, tag = "1")]
1973    pub relation: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1974    #[prost(message, repeated, tag = "2")]
1975    pub method: ::prost::alloc::vec::Vec<Node>,
1976    #[prost(message, repeated, tag = "3")]
1977    pub args: ::prost::alloc::vec::Vec<Node>,
1978    #[prost(message, optional, boxed, tag = "4")]
1979    pub repeatable: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1980    #[prost(int32, tag = "5")]
1981    pub location: i32,
1982}
1983#[derive(Clone, PartialEq, ::prost::Message)]
1984pub struct ColumnDef {
1985    #[prost(string, tag = "1")]
1986    pub colname: ::prost::alloc::string::String,
1987    #[prost(message, optional, tag = "2")]
1988    pub type_name: ::core::option::Option<TypeName>,
1989    #[prost(string, tag = "3")]
1990    pub compression: ::prost::alloc::string::String,
1991    #[prost(int32, tag = "4")]
1992    pub inhcount: i32,
1993    #[prost(bool, tag = "5")]
1994    pub is_local: bool,
1995    #[prost(bool, tag = "6")]
1996    pub is_not_null: bool,
1997    #[prost(bool, tag = "7")]
1998    pub is_from_type: bool,
1999    #[prost(string, tag = "8")]
2000    pub storage: ::prost::alloc::string::String,
2001    #[prost(string, tag = "9")]
2002    pub storage_name: ::prost::alloc::string::String,
2003    #[prost(message, optional, boxed, tag = "10")]
2004    pub raw_default: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2005    #[prost(message, optional, boxed, tag = "11")]
2006    pub cooked_default: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2007    #[prost(string, tag = "12")]
2008    pub identity: ::prost::alloc::string::String,
2009    #[prost(message, optional, tag = "13")]
2010    pub identity_sequence: ::core::option::Option<RangeVar>,
2011    #[prost(string, tag = "14")]
2012    pub generated: ::prost::alloc::string::String,
2013    #[prost(message, optional, boxed, tag = "15")]
2014    pub coll_clause: ::core::option::Option<::prost::alloc::boxed::Box<CollateClause>>,
2015    #[prost(uint32, tag = "16")]
2016    pub coll_oid: u32,
2017    #[prost(message, repeated, tag = "17")]
2018    pub constraints: ::prost::alloc::vec::Vec<Node>,
2019    #[prost(message, repeated, tag = "18")]
2020    pub fdwoptions: ::prost::alloc::vec::Vec<Node>,
2021    #[prost(int32, tag = "19")]
2022    pub location: i32,
2023}
2024#[derive(Clone, PartialEq, ::prost::Message)]
2025pub struct TableLikeClause {
2026    #[prost(message, optional, tag = "1")]
2027    pub relation: ::core::option::Option<RangeVar>,
2028    #[prost(uint32, tag = "2")]
2029    pub options: u32,
2030    #[prost(uint32, tag = "3")]
2031    pub relation_oid: u32,
2032}
2033#[derive(Clone, PartialEq, ::prost::Message)]
2034pub struct IndexElem {
2035    #[prost(string, tag = "1")]
2036    pub name: ::prost::alloc::string::String,
2037    #[prost(message, optional, boxed, tag = "2")]
2038    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2039    #[prost(string, tag = "3")]
2040    pub indexcolname: ::prost::alloc::string::String,
2041    #[prost(message, repeated, tag = "4")]
2042    pub collation: ::prost::alloc::vec::Vec<Node>,
2043    #[prost(message, repeated, tag = "5")]
2044    pub opclass: ::prost::alloc::vec::Vec<Node>,
2045    #[prost(message, repeated, tag = "6")]
2046    pub opclassopts: ::prost::alloc::vec::Vec<Node>,
2047    #[prost(enumeration = "SortByDir", tag = "7")]
2048    pub ordering: i32,
2049    #[prost(enumeration = "SortByNulls", tag = "8")]
2050    pub nulls_ordering: i32,
2051}
2052#[derive(Clone, PartialEq, ::prost::Message)]
2053pub struct DefElem {
2054    #[prost(string, tag = "1")]
2055    pub defnamespace: ::prost::alloc::string::String,
2056    #[prost(string, tag = "2")]
2057    pub defname: ::prost::alloc::string::String,
2058    #[prost(message, optional, boxed, tag = "3")]
2059    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2060    #[prost(enumeration = "DefElemAction", tag = "4")]
2061    pub defaction: i32,
2062    #[prost(int32, tag = "5")]
2063    pub location: i32,
2064}
2065#[derive(Clone, PartialEq, ::prost::Message)]
2066pub struct LockingClause {
2067    #[prost(message, repeated, tag = "1")]
2068    pub locked_rels: ::prost::alloc::vec::Vec<Node>,
2069    #[prost(enumeration = "LockClauseStrength", tag = "2")]
2070    pub strength: i32,
2071    #[prost(enumeration = "LockWaitPolicy", tag = "3")]
2072    pub wait_policy: i32,
2073}
2074#[derive(Clone, PartialEq, ::prost::Message)]
2075pub struct XmlSerialize {
2076    #[prost(enumeration = "XmlOptionType", tag = "1")]
2077    pub xmloption: i32,
2078    #[prost(message, optional, boxed, tag = "2")]
2079    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2080    #[prost(message, optional, tag = "3")]
2081    pub type_name: ::core::option::Option<TypeName>,
2082    #[prost(bool, tag = "4")]
2083    pub indent: bool,
2084    #[prost(int32, tag = "5")]
2085    pub location: i32,
2086}
2087#[derive(Clone, PartialEq, ::prost::Message)]
2088pub struct PartitionElem {
2089    #[prost(string, tag = "1")]
2090    pub name: ::prost::alloc::string::String,
2091    #[prost(message, optional, boxed, tag = "2")]
2092    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2093    #[prost(message, repeated, tag = "3")]
2094    pub collation: ::prost::alloc::vec::Vec<Node>,
2095    #[prost(message, repeated, tag = "4")]
2096    pub opclass: ::prost::alloc::vec::Vec<Node>,
2097    #[prost(int32, tag = "5")]
2098    pub location: i32,
2099}
2100#[derive(Clone, PartialEq, ::prost::Message)]
2101pub struct PartitionSpec {
2102    #[prost(enumeration = "PartitionStrategy", tag = "1")]
2103    pub strategy: i32,
2104    #[prost(message, repeated, tag = "2")]
2105    pub part_params: ::prost::alloc::vec::Vec<Node>,
2106    #[prost(int32, tag = "3")]
2107    pub location: i32,
2108}
2109#[derive(Clone, PartialEq, ::prost::Message)]
2110pub struct PartitionBoundSpec {
2111    #[prost(string, tag = "1")]
2112    pub strategy: ::prost::alloc::string::String,
2113    #[prost(bool, tag = "2")]
2114    pub is_default: bool,
2115    #[prost(int32, tag = "3")]
2116    pub modulus: i32,
2117    #[prost(int32, tag = "4")]
2118    pub remainder: i32,
2119    #[prost(message, repeated, tag = "5")]
2120    pub listdatums: ::prost::alloc::vec::Vec<Node>,
2121    #[prost(message, repeated, tag = "6")]
2122    pub lowerdatums: ::prost::alloc::vec::Vec<Node>,
2123    #[prost(message, repeated, tag = "7")]
2124    pub upperdatums: ::prost::alloc::vec::Vec<Node>,
2125    #[prost(int32, tag = "8")]
2126    pub location: i32,
2127}
2128#[derive(Clone, PartialEq, ::prost::Message)]
2129pub struct PartitionRangeDatum {
2130    #[prost(enumeration = "PartitionRangeDatumKind", tag = "1")]
2131    pub kind: i32,
2132    #[prost(message, optional, boxed, tag = "2")]
2133    pub value: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2134    #[prost(int32, tag = "3")]
2135    pub location: i32,
2136}
2137#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2138pub struct SinglePartitionSpec {}
2139#[derive(Clone, PartialEq, ::prost::Message)]
2140pub struct PartitionCmd {
2141    #[prost(message, optional, tag = "1")]
2142    pub name: ::core::option::Option<RangeVar>,
2143    #[prost(message, optional, tag = "2")]
2144    pub bound: ::core::option::Option<PartitionBoundSpec>,
2145    #[prost(bool, tag = "3")]
2146    pub concurrent: bool,
2147}
2148#[derive(Clone, PartialEq, ::prost::Message)]
2149pub struct RangeTblEntry {
2150    #[prost(message, optional, tag = "1")]
2151    pub alias: ::core::option::Option<Alias>,
2152    #[prost(message, optional, tag = "2")]
2153    pub eref: ::core::option::Option<Alias>,
2154    #[prost(enumeration = "RteKind", tag = "3")]
2155    pub rtekind: i32,
2156    #[prost(uint32, tag = "4")]
2157    pub relid: u32,
2158    #[prost(bool, tag = "5")]
2159    pub inh: bool,
2160    #[prost(string, tag = "6")]
2161    pub relkind: ::prost::alloc::string::String,
2162    #[prost(int32, tag = "7")]
2163    pub rellockmode: i32,
2164    #[prost(uint32, tag = "8")]
2165    pub perminfoindex: u32,
2166    #[prost(message, optional, boxed, tag = "9")]
2167    pub tablesample: ::core::option::Option<
2168        ::prost::alloc::boxed::Box<TableSampleClause>,
2169    >,
2170    #[prost(message, optional, boxed, tag = "10")]
2171    pub subquery: ::core::option::Option<::prost::alloc::boxed::Box<Query>>,
2172    #[prost(bool, tag = "11")]
2173    pub security_barrier: bool,
2174    #[prost(enumeration = "JoinType", tag = "12")]
2175    pub jointype: i32,
2176    #[prost(int32, tag = "13")]
2177    pub joinmergedcols: i32,
2178    #[prost(message, repeated, tag = "14")]
2179    pub joinaliasvars: ::prost::alloc::vec::Vec<Node>,
2180    #[prost(message, repeated, tag = "15")]
2181    pub joinleftcols: ::prost::alloc::vec::Vec<Node>,
2182    #[prost(message, repeated, tag = "16")]
2183    pub joinrightcols: ::prost::alloc::vec::Vec<Node>,
2184    #[prost(message, optional, tag = "17")]
2185    pub join_using_alias: ::core::option::Option<Alias>,
2186    #[prost(message, repeated, tag = "18")]
2187    pub functions: ::prost::alloc::vec::Vec<Node>,
2188    #[prost(bool, tag = "19")]
2189    pub funcordinality: bool,
2190    #[prost(message, optional, boxed, tag = "20")]
2191    pub tablefunc: ::core::option::Option<::prost::alloc::boxed::Box<TableFunc>>,
2192    #[prost(message, repeated, tag = "21")]
2193    pub values_lists: ::prost::alloc::vec::Vec<Node>,
2194    #[prost(string, tag = "22")]
2195    pub ctename: ::prost::alloc::string::String,
2196    #[prost(uint32, tag = "23")]
2197    pub ctelevelsup: u32,
2198    #[prost(bool, tag = "24")]
2199    pub self_reference: bool,
2200    #[prost(message, repeated, tag = "25")]
2201    pub coltypes: ::prost::alloc::vec::Vec<Node>,
2202    #[prost(message, repeated, tag = "26")]
2203    pub coltypmods: ::prost::alloc::vec::Vec<Node>,
2204    #[prost(message, repeated, tag = "27")]
2205    pub colcollations: ::prost::alloc::vec::Vec<Node>,
2206    #[prost(string, tag = "28")]
2207    pub enrname: ::prost::alloc::string::String,
2208    #[prost(double, tag = "29")]
2209    pub enrtuples: f64,
2210    #[prost(bool, tag = "30")]
2211    pub lateral: bool,
2212    #[prost(bool, tag = "31")]
2213    pub in_from_cl: bool,
2214    #[prost(message, repeated, tag = "32")]
2215    pub security_quals: ::prost::alloc::vec::Vec<Node>,
2216}
2217#[derive(Clone, PartialEq, ::prost::Message)]
2218pub struct RtePermissionInfo {
2219    #[prost(uint32, tag = "1")]
2220    pub relid: u32,
2221    #[prost(bool, tag = "2")]
2222    pub inh: bool,
2223    #[prost(uint64, tag = "3")]
2224    pub required_perms: u64,
2225    #[prost(uint32, tag = "4")]
2226    pub check_as_user: u32,
2227    #[prost(uint64, repeated, tag = "5")]
2228    pub selected_cols: ::prost::alloc::vec::Vec<u64>,
2229    #[prost(uint64, repeated, tag = "6")]
2230    pub inserted_cols: ::prost::alloc::vec::Vec<u64>,
2231    #[prost(uint64, repeated, tag = "7")]
2232    pub updated_cols: ::prost::alloc::vec::Vec<u64>,
2233}
2234#[derive(Clone, PartialEq, ::prost::Message)]
2235pub struct RangeTblFunction {
2236    #[prost(message, optional, boxed, tag = "1")]
2237    pub funcexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2238    #[prost(int32, tag = "2")]
2239    pub funccolcount: i32,
2240    #[prost(message, repeated, tag = "3")]
2241    pub funccolnames: ::prost::alloc::vec::Vec<Node>,
2242    #[prost(message, repeated, tag = "4")]
2243    pub funccoltypes: ::prost::alloc::vec::Vec<Node>,
2244    #[prost(message, repeated, tag = "5")]
2245    pub funccoltypmods: ::prost::alloc::vec::Vec<Node>,
2246    #[prost(message, repeated, tag = "6")]
2247    pub funccolcollations: ::prost::alloc::vec::Vec<Node>,
2248    #[prost(uint64, repeated, tag = "7")]
2249    pub funcparams: ::prost::alloc::vec::Vec<u64>,
2250}
2251#[derive(Clone, PartialEq, ::prost::Message)]
2252pub struct TableSampleClause {
2253    #[prost(uint32, tag = "1")]
2254    pub tsmhandler: u32,
2255    #[prost(message, repeated, tag = "2")]
2256    pub args: ::prost::alloc::vec::Vec<Node>,
2257    #[prost(message, optional, boxed, tag = "3")]
2258    pub repeatable: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2259}
2260#[derive(Clone, PartialEq, ::prost::Message)]
2261pub struct WithCheckOption {
2262    #[prost(enumeration = "WcoKind", tag = "1")]
2263    pub kind: i32,
2264    #[prost(string, tag = "2")]
2265    pub relname: ::prost::alloc::string::String,
2266    #[prost(string, tag = "3")]
2267    pub polname: ::prost::alloc::string::String,
2268    #[prost(message, optional, boxed, tag = "4")]
2269    pub qual: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2270    #[prost(bool, tag = "5")]
2271    pub cascaded: bool,
2272}
2273#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2274pub struct SortGroupClause {
2275    #[prost(uint32, tag = "1")]
2276    pub tle_sort_group_ref: u32,
2277    #[prost(uint32, tag = "2")]
2278    pub eqop: u32,
2279    #[prost(uint32, tag = "3")]
2280    pub sortop: u32,
2281    #[prost(bool, tag = "4")]
2282    pub nulls_first: bool,
2283    #[prost(bool, tag = "5")]
2284    pub hashable: bool,
2285}
2286#[derive(Clone, PartialEq, ::prost::Message)]
2287pub struct GroupingSet {
2288    #[prost(enumeration = "GroupingSetKind", tag = "1")]
2289    pub kind: i32,
2290    #[prost(message, repeated, tag = "2")]
2291    pub content: ::prost::alloc::vec::Vec<Node>,
2292    #[prost(int32, tag = "3")]
2293    pub location: i32,
2294}
2295#[derive(Clone, PartialEq, ::prost::Message)]
2296pub struct WindowClause {
2297    #[prost(string, tag = "1")]
2298    pub name: ::prost::alloc::string::String,
2299    #[prost(string, tag = "2")]
2300    pub refname: ::prost::alloc::string::String,
2301    #[prost(message, repeated, tag = "3")]
2302    pub partition_clause: ::prost::alloc::vec::Vec<Node>,
2303    #[prost(message, repeated, tag = "4")]
2304    pub order_clause: ::prost::alloc::vec::Vec<Node>,
2305    #[prost(int32, tag = "5")]
2306    pub frame_options: i32,
2307    #[prost(message, optional, boxed, tag = "6")]
2308    pub start_offset: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2309    #[prost(message, optional, boxed, tag = "7")]
2310    pub end_offset: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2311    #[prost(uint32, tag = "8")]
2312    pub start_in_range_func: u32,
2313    #[prost(uint32, tag = "9")]
2314    pub end_in_range_func: u32,
2315    #[prost(uint32, tag = "10")]
2316    pub in_range_coll: u32,
2317    #[prost(bool, tag = "11")]
2318    pub in_range_asc: bool,
2319    #[prost(bool, tag = "12")]
2320    pub in_range_nulls_first: bool,
2321    #[prost(uint32, tag = "13")]
2322    pub winref: u32,
2323    #[prost(bool, tag = "14")]
2324    pub copied_order: bool,
2325}
2326#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2327pub struct RowMarkClause {
2328    #[prost(uint32, tag = "1")]
2329    pub rti: u32,
2330    #[prost(enumeration = "LockClauseStrength", tag = "2")]
2331    pub strength: i32,
2332    #[prost(enumeration = "LockWaitPolicy", tag = "3")]
2333    pub wait_policy: i32,
2334    #[prost(bool, tag = "4")]
2335    pub pushed_down: bool,
2336}
2337#[derive(Clone, PartialEq, ::prost::Message)]
2338pub struct WithClause {
2339    #[prost(message, repeated, tag = "1")]
2340    pub ctes: ::prost::alloc::vec::Vec<Node>,
2341    #[prost(bool, tag = "2")]
2342    pub recursive: bool,
2343    #[prost(int32, tag = "3")]
2344    pub location: i32,
2345}
2346#[derive(Clone, PartialEq, ::prost::Message)]
2347pub struct InferClause {
2348    #[prost(message, repeated, tag = "1")]
2349    pub index_elems: ::prost::alloc::vec::Vec<Node>,
2350    #[prost(message, optional, boxed, tag = "2")]
2351    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2352    #[prost(string, tag = "3")]
2353    pub conname: ::prost::alloc::string::String,
2354    #[prost(int32, tag = "4")]
2355    pub location: i32,
2356}
2357#[derive(Clone, PartialEq, ::prost::Message)]
2358pub struct OnConflictClause {
2359    #[prost(enumeration = "OnConflictAction", tag = "1")]
2360    pub action: i32,
2361    #[prost(message, optional, boxed, tag = "2")]
2362    pub infer: ::core::option::Option<::prost::alloc::boxed::Box<InferClause>>,
2363    #[prost(message, repeated, tag = "3")]
2364    pub target_list: ::prost::alloc::vec::Vec<Node>,
2365    #[prost(message, optional, boxed, tag = "4")]
2366    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2367    #[prost(int32, tag = "5")]
2368    pub location: i32,
2369}
2370#[derive(Clone, PartialEq, ::prost::Message)]
2371pub struct CteSearchClause {
2372    #[prost(message, repeated, tag = "1")]
2373    pub search_col_list: ::prost::alloc::vec::Vec<Node>,
2374    #[prost(bool, tag = "2")]
2375    pub search_breadth_first: bool,
2376    #[prost(string, tag = "3")]
2377    pub search_seq_column: ::prost::alloc::string::String,
2378    #[prost(int32, tag = "4")]
2379    pub location: i32,
2380}
2381#[derive(Clone, PartialEq, ::prost::Message)]
2382pub struct CteCycleClause {
2383    #[prost(message, repeated, tag = "1")]
2384    pub cycle_col_list: ::prost::alloc::vec::Vec<Node>,
2385    #[prost(string, tag = "2")]
2386    pub cycle_mark_column: ::prost::alloc::string::String,
2387    #[prost(message, optional, boxed, tag = "3")]
2388    pub cycle_mark_value: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2389    #[prost(message, optional, boxed, tag = "4")]
2390    pub cycle_mark_default: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2391    #[prost(string, tag = "5")]
2392    pub cycle_path_column: ::prost::alloc::string::String,
2393    #[prost(int32, tag = "6")]
2394    pub location: i32,
2395    #[prost(uint32, tag = "7")]
2396    pub cycle_mark_type: u32,
2397    #[prost(int32, tag = "8")]
2398    pub cycle_mark_typmod: i32,
2399    #[prost(uint32, tag = "9")]
2400    pub cycle_mark_collation: u32,
2401    #[prost(uint32, tag = "10")]
2402    pub cycle_mark_neop: u32,
2403}
2404#[derive(Clone, PartialEq, ::prost::Message)]
2405pub struct CommonTableExpr {
2406    #[prost(string, tag = "1")]
2407    pub ctename: ::prost::alloc::string::String,
2408    #[prost(message, repeated, tag = "2")]
2409    pub aliascolnames: ::prost::alloc::vec::Vec<Node>,
2410    #[prost(enumeration = "CteMaterialize", tag = "3")]
2411    pub ctematerialized: i32,
2412    #[prost(message, optional, boxed, tag = "4")]
2413    pub ctequery: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2414    #[prost(message, optional, tag = "5")]
2415    pub search_clause: ::core::option::Option<CteSearchClause>,
2416    #[prost(message, optional, boxed, tag = "6")]
2417    pub cycle_clause: ::core::option::Option<::prost::alloc::boxed::Box<CteCycleClause>>,
2418    #[prost(int32, tag = "7")]
2419    pub location: i32,
2420    #[prost(bool, tag = "8")]
2421    pub cterecursive: bool,
2422    #[prost(int32, tag = "9")]
2423    pub cterefcount: i32,
2424    #[prost(message, repeated, tag = "10")]
2425    pub ctecolnames: ::prost::alloc::vec::Vec<Node>,
2426    #[prost(message, repeated, tag = "11")]
2427    pub ctecoltypes: ::prost::alloc::vec::Vec<Node>,
2428    #[prost(message, repeated, tag = "12")]
2429    pub ctecoltypmods: ::prost::alloc::vec::Vec<Node>,
2430    #[prost(message, repeated, tag = "13")]
2431    pub ctecolcollations: ::prost::alloc::vec::Vec<Node>,
2432}
2433#[derive(Clone, PartialEq, ::prost::Message)]
2434pub struct MergeWhenClause {
2435    #[prost(enumeration = "MergeMatchKind", tag = "1")]
2436    pub match_kind: i32,
2437    #[prost(enumeration = "CmdType", tag = "2")]
2438    pub command_type: i32,
2439    #[prost(enumeration = "OverridingKind", tag = "3")]
2440    pub r#override: i32,
2441    #[prost(message, optional, boxed, tag = "4")]
2442    pub condition: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2443    #[prost(message, repeated, tag = "5")]
2444    pub target_list: ::prost::alloc::vec::Vec<Node>,
2445    #[prost(message, repeated, tag = "6")]
2446    pub values: ::prost::alloc::vec::Vec<Node>,
2447}
2448#[derive(Clone, PartialEq, ::prost::Message)]
2449pub struct TriggerTransition {
2450    #[prost(string, tag = "1")]
2451    pub name: ::prost::alloc::string::String,
2452    #[prost(bool, tag = "2")]
2453    pub is_new: bool,
2454    #[prost(bool, tag = "3")]
2455    pub is_table: bool,
2456}
2457#[derive(Clone, PartialEq, ::prost::Message)]
2458pub struct JsonOutput {
2459    #[prost(message, optional, tag = "1")]
2460    pub type_name: ::core::option::Option<TypeName>,
2461    #[prost(message, optional, tag = "2")]
2462    pub returning: ::core::option::Option<JsonReturning>,
2463}
2464#[derive(Clone, PartialEq, ::prost::Message)]
2465pub struct JsonArgument {
2466    #[prost(message, optional, boxed, tag = "1")]
2467    pub val: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2468    #[prost(string, tag = "2")]
2469    pub name: ::prost::alloc::string::String,
2470}
2471#[derive(Clone, PartialEq, ::prost::Message)]
2472pub struct JsonFuncExpr {
2473    #[prost(enumeration = "JsonExprOp", tag = "1")]
2474    pub op: i32,
2475    #[prost(string, tag = "2")]
2476    pub column_name: ::prost::alloc::string::String,
2477    #[prost(message, optional, boxed, tag = "3")]
2478    pub context_item: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2479    #[prost(message, optional, boxed, tag = "4")]
2480    pub pathspec: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2481    #[prost(message, repeated, tag = "5")]
2482    pub passing: ::prost::alloc::vec::Vec<Node>,
2483    #[prost(message, optional, tag = "6")]
2484    pub output: ::core::option::Option<JsonOutput>,
2485    #[prost(message, optional, boxed, tag = "7")]
2486    pub on_empty: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
2487    #[prost(message, optional, boxed, tag = "8")]
2488    pub on_error: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
2489    #[prost(enumeration = "JsonWrapper", tag = "9")]
2490    pub wrapper: i32,
2491    #[prost(enumeration = "JsonQuotes", tag = "10")]
2492    pub quotes: i32,
2493    #[prost(int32, tag = "11")]
2494    pub location: i32,
2495}
2496#[derive(Clone, PartialEq, ::prost::Message)]
2497pub struct JsonTablePathSpec {
2498    #[prost(message, optional, boxed, tag = "1")]
2499    pub string: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2500    #[prost(string, tag = "2")]
2501    pub name: ::prost::alloc::string::String,
2502    #[prost(int32, tag = "3")]
2503    pub name_location: i32,
2504    #[prost(int32, tag = "4")]
2505    pub location: i32,
2506}
2507#[derive(Clone, PartialEq, ::prost::Message)]
2508pub struct JsonTable {
2509    #[prost(message, optional, boxed, tag = "1")]
2510    pub context_item: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2511    #[prost(message, optional, boxed, tag = "2")]
2512    pub pathspec: ::core::option::Option<::prost::alloc::boxed::Box<JsonTablePathSpec>>,
2513    #[prost(message, repeated, tag = "3")]
2514    pub passing: ::prost::alloc::vec::Vec<Node>,
2515    #[prost(message, repeated, tag = "4")]
2516    pub columns: ::prost::alloc::vec::Vec<Node>,
2517    #[prost(message, optional, boxed, tag = "5")]
2518    pub on_error: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
2519    #[prost(message, optional, tag = "6")]
2520    pub alias: ::core::option::Option<Alias>,
2521    #[prost(bool, tag = "7")]
2522    pub lateral: bool,
2523    #[prost(int32, tag = "8")]
2524    pub location: i32,
2525}
2526#[derive(Clone, PartialEq, ::prost::Message)]
2527pub struct JsonTableColumn {
2528    #[prost(enumeration = "JsonTableColumnType", tag = "1")]
2529    pub coltype: i32,
2530    #[prost(string, tag = "2")]
2531    pub name: ::prost::alloc::string::String,
2532    #[prost(message, optional, tag = "3")]
2533    pub type_name: ::core::option::Option<TypeName>,
2534    #[prost(message, optional, boxed, tag = "4")]
2535    pub pathspec: ::core::option::Option<::prost::alloc::boxed::Box<JsonTablePathSpec>>,
2536    #[prost(message, optional, tag = "5")]
2537    pub format: ::core::option::Option<JsonFormat>,
2538    #[prost(enumeration = "JsonWrapper", tag = "6")]
2539    pub wrapper: i32,
2540    #[prost(enumeration = "JsonQuotes", tag = "7")]
2541    pub quotes: i32,
2542    #[prost(message, repeated, tag = "8")]
2543    pub columns: ::prost::alloc::vec::Vec<Node>,
2544    #[prost(message, optional, boxed, tag = "9")]
2545    pub on_empty: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
2546    #[prost(message, optional, boxed, tag = "10")]
2547    pub on_error: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
2548    #[prost(int32, tag = "11")]
2549    pub location: i32,
2550}
2551#[derive(Clone, PartialEq, ::prost::Message)]
2552pub struct JsonKeyValue {
2553    #[prost(message, optional, boxed, tag = "1")]
2554    pub key: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2555    #[prost(message, optional, boxed, tag = "2")]
2556    pub value: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2557}
2558#[derive(Clone, PartialEq, ::prost::Message)]
2559pub struct JsonParseExpr {
2560    #[prost(message, optional, boxed, tag = "1")]
2561    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2562    #[prost(message, optional, tag = "2")]
2563    pub output: ::core::option::Option<JsonOutput>,
2564    #[prost(bool, tag = "3")]
2565    pub unique_keys: bool,
2566    #[prost(int32, tag = "4")]
2567    pub location: i32,
2568}
2569#[derive(Clone, PartialEq, ::prost::Message)]
2570pub struct JsonScalarExpr {
2571    #[prost(message, optional, boxed, tag = "1")]
2572    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2573    #[prost(message, optional, tag = "2")]
2574    pub output: ::core::option::Option<JsonOutput>,
2575    #[prost(int32, tag = "3")]
2576    pub location: i32,
2577}
2578#[derive(Clone, PartialEq, ::prost::Message)]
2579pub struct JsonSerializeExpr {
2580    #[prost(message, optional, boxed, tag = "1")]
2581    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2582    #[prost(message, optional, tag = "2")]
2583    pub output: ::core::option::Option<JsonOutput>,
2584    #[prost(int32, tag = "3")]
2585    pub location: i32,
2586}
2587#[derive(Clone, PartialEq, ::prost::Message)]
2588pub struct JsonObjectConstructor {
2589    #[prost(message, repeated, tag = "1")]
2590    pub exprs: ::prost::alloc::vec::Vec<Node>,
2591    #[prost(message, optional, tag = "2")]
2592    pub output: ::core::option::Option<JsonOutput>,
2593    #[prost(bool, tag = "3")]
2594    pub absent_on_null: bool,
2595    #[prost(bool, tag = "4")]
2596    pub unique: bool,
2597    #[prost(int32, tag = "5")]
2598    pub location: i32,
2599}
2600#[derive(Clone, PartialEq, ::prost::Message)]
2601pub struct JsonArrayConstructor {
2602    #[prost(message, repeated, tag = "1")]
2603    pub exprs: ::prost::alloc::vec::Vec<Node>,
2604    #[prost(message, optional, tag = "2")]
2605    pub output: ::core::option::Option<JsonOutput>,
2606    #[prost(bool, tag = "3")]
2607    pub absent_on_null: bool,
2608    #[prost(int32, tag = "4")]
2609    pub location: i32,
2610}
2611#[derive(Clone, PartialEq, ::prost::Message)]
2612pub struct JsonArrayQueryConstructor {
2613    #[prost(message, optional, boxed, tag = "1")]
2614    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2615    #[prost(message, optional, tag = "2")]
2616    pub output: ::core::option::Option<JsonOutput>,
2617    #[prost(message, optional, tag = "3")]
2618    pub format: ::core::option::Option<JsonFormat>,
2619    #[prost(bool, tag = "4")]
2620    pub absent_on_null: bool,
2621    #[prost(int32, tag = "5")]
2622    pub location: i32,
2623}
2624#[derive(Clone, PartialEq, ::prost::Message)]
2625pub struct JsonAggConstructor {
2626    #[prost(message, optional, tag = "1")]
2627    pub output: ::core::option::Option<JsonOutput>,
2628    #[prost(message, optional, boxed, tag = "2")]
2629    pub agg_filter: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2630    #[prost(message, repeated, tag = "3")]
2631    pub agg_order: ::prost::alloc::vec::Vec<Node>,
2632    #[prost(message, optional, boxed, tag = "4")]
2633    pub over: ::core::option::Option<::prost::alloc::boxed::Box<WindowDef>>,
2634    #[prost(int32, tag = "5")]
2635    pub location: i32,
2636}
2637#[derive(Clone, PartialEq, ::prost::Message)]
2638pub struct JsonObjectAgg {
2639    #[prost(message, optional, boxed, tag = "1")]
2640    pub constructor: ::core::option::Option<
2641        ::prost::alloc::boxed::Box<JsonAggConstructor>,
2642    >,
2643    #[prost(message, optional, boxed, tag = "2")]
2644    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<JsonKeyValue>>,
2645    #[prost(bool, tag = "3")]
2646    pub absent_on_null: bool,
2647    #[prost(bool, tag = "4")]
2648    pub unique: bool,
2649}
2650#[derive(Clone, PartialEq, ::prost::Message)]
2651pub struct JsonArrayAgg {
2652    #[prost(message, optional, boxed, tag = "1")]
2653    pub constructor: ::core::option::Option<
2654        ::prost::alloc::boxed::Box<JsonAggConstructor>,
2655    >,
2656    #[prost(message, optional, boxed, tag = "2")]
2657    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2658    #[prost(bool, tag = "3")]
2659    pub absent_on_null: bool,
2660}
2661#[derive(Clone, PartialEq, ::prost::Message)]
2662pub struct RawStmt {
2663    #[prost(message, optional, boxed, tag = "1")]
2664    pub stmt: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2665    #[prost(int32, tag = "2")]
2666    pub stmt_location: i32,
2667    #[prost(int32, tag = "3")]
2668    pub stmt_len: i32,
2669}
2670#[derive(Clone, PartialEq, ::prost::Message)]
2671pub struct InsertStmt {
2672    #[prost(message, optional, tag = "1")]
2673    pub relation: ::core::option::Option<RangeVar>,
2674    #[prost(message, repeated, tag = "2")]
2675    pub cols: ::prost::alloc::vec::Vec<Node>,
2676    #[prost(message, optional, boxed, tag = "3")]
2677    pub select_stmt: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2678    #[prost(message, optional, boxed, tag = "4")]
2679    pub on_conflict_clause: ::core::option::Option<
2680        ::prost::alloc::boxed::Box<OnConflictClause>,
2681    >,
2682    #[prost(message, repeated, tag = "5")]
2683    pub returning_list: ::prost::alloc::vec::Vec<Node>,
2684    #[prost(message, optional, tag = "6")]
2685    pub with_clause: ::core::option::Option<WithClause>,
2686    #[prost(enumeration = "OverridingKind", tag = "7")]
2687    pub r#override: i32,
2688}
2689#[derive(Clone, PartialEq, ::prost::Message)]
2690pub struct DeleteStmt {
2691    #[prost(message, optional, tag = "1")]
2692    pub relation: ::core::option::Option<RangeVar>,
2693    #[prost(message, repeated, tag = "2")]
2694    pub using_clause: ::prost::alloc::vec::Vec<Node>,
2695    #[prost(message, optional, boxed, tag = "3")]
2696    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2697    #[prost(message, repeated, tag = "4")]
2698    pub returning_list: ::prost::alloc::vec::Vec<Node>,
2699    #[prost(message, optional, tag = "5")]
2700    pub with_clause: ::core::option::Option<WithClause>,
2701}
2702#[derive(Clone, PartialEq, ::prost::Message)]
2703pub struct UpdateStmt {
2704    #[prost(message, optional, tag = "1")]
2705    pub relation: ::core::option::Option<RangeVar>,
2706    #[prost(message, repeated, tag = "2")]
2707    pub target_list: ::prost::alloc::vec::Vec<Node>,
2708    #[prost(message, optional, boxed, tag = "3")]
2709    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2710    #[prost(message, repeated, tag = "4")]
2711    pub from_clause: ::prost::alloc::vec::Vec<Node>,
2712    #[prost(message, repeated, tag = "5")]
2713    pub returning_list: ::prost::alloc::vec::Vec<Node>,
2714    #[prost(message, optional, tag = "6")]
2715    pub with_clause: ::core::option::Option<WithClause>,
2716}
2717#[derive(Clone, PartialEq, ::prost::Message)]
2718pub struct MergeStmt {
2719    #[prost(message, optional, tag = "1")]
2720    pub relation: ::core::option::Option<RangeVar>,
2721    #[prost(message, optional, boxed, tag = "2")]
2722    pub source_relation: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2723    #[prost(message, optional, boxed, tag = "3")]
2724    pub join_condition: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2725    #[prost(message, repeated, tag = "4")]
2726    pub merge_when_clauses: ::prost::alloc::vec::Vec<Node>,
2727    #[prost(message, repeated, tag = "5")]
2728    pub returning_list: ::prost::alloc::vec::Vec<Node>,
2729    #[prost(message, optional, tag = "6")]
2730    pub with_clause: ::core::option::Option<WithClause>,
2731}
2732#[derive(Clone, PartialEq, ::prost::Message)]
2733pub struct SelectStmt {
2734    #[prost(message, repeated, tag = "1")]
2735    pub distinct_clause: ::prost::alloc::vec::Vec<Node>,
2736    #[prost(message, optional, boxed, tag = "2")]
2737    pub into_clause: ::core::option::Option<::prost::alloc::boxed::Box<IntoClause>>,
2738    #[prost(message, repeated, tag = "3")]
2739    pub target_list: ::prost::alloc::vec::Vec<Node>,
2740    #[prost(message, repeated, tag = "4")]
2741    pub from_clause: ::prost::alloc::vec::Vec<Node>,
2742    #[prost(message, optional, boxed, tag = "5")]
2743    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2744    #[prost(message, repeated, tag = "6")]
2745    pub group_clause: ::prost::alloc::vec::Vec<Node>,
2746    #[prost(bool, tag = "7")]
2747    pub group_distinct: bool,
2748    #[prost(message, optional, boxed, tag = "8")]
2749    pub having_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2750    #[prost(message, repeated, tag = "9")]
2751    pub window_clause: ::prost::alloc::vec::Vec<Node>,
2752    #[prost(message, repeated, tag = "10")]
2753    pub values_lists: ::prost::alloc::vec::Vec<Node>,
2754    #[prost(message, repeated, tag = "11")]
2755    pub sort_clause: ::prost::alloc::vec::Vec<Node>,
2756    #[prost(message, optional, boxed, tag = "12")]
2757    pub limit_offset: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2758    #[prost(message, optional, boxed, tag = "13")]
2759    pub limit_count: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2760    #[prost(enumeration = "LimitOption", tag = "14")]
2761    pub limit_option: i32,
2762    #[prost(message, repeated, tag = "15")]
2763    pub locking_clause: ::prost::alloc::vec::Vec<Node>,
2764    #[prost(message, optional, tag = "16")]
2765    pub with_clause: ::core::option::Option<WithClause>,
2766    #[prost(enumeration = "SetOperation", tag = "17")]
2767    pub op: i32,
2768    #[prost(bool, tag = "18")]
2769    pub all: bool,
2770    #[prost(message, optional, boxed, tag = "19")]
2771    pub larg: ::core::option::Option<::prost::alloc::boxed::Box<SelectStmt>>,
2772    #[prost(message, optional, boxed, tag = "20")]
2773    pub rarg: ::core::option::Option<::prost::alloc::boxed::Box<SelectStmt>>,
2774}
2775#[derive(Clone, PartialEq, ::prost::Message)]
2776pub struct SetOperationStmt {
2777    #[prost(enumeration = "SetOperation", tag = "1")]
2778    pub op: i32,
2779    #[prost(bool, tag = "2")]
2780    pub all: bool,
2781    #[prost(message, optional, boxed, tag = "3")]
2782    pub larg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2783    #[prost(message, optional, boxed, tag = "4")]
2784    pub rarg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2785    #[prost(message, repeated, tag = "5")]
2786    pub col_types: ::prost::alloc::vec::Vec<Node>,
2787    #[prost(message, repeated, tag = "6")]
2788    pub col_typmods: ::prost::alloc::vec::Vec<Node>,
2789    #[prost(message, repeated, tag = "7")]
2790    pub col_collations: ::prost::alloc::vec::Vec<Node>,
2791    #[prost(message, repeated, tag = "8")]
2792    pub group_clauses: ::prost::alloc::vec::Vec<Node>,
2793}
2794#[derive(Clone, PartialEq, ::prost::Message)]
2795pub struct ReturnStmt {
2796    #[prost(message, optional, boxed, tag = "1")]
2797    pub returnval: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2798}
2799#[derive(Clone, PartialEq, ::prost::Message)]
2800pub struct PlAssignStmt {
2801    #[prost(string, tag = "1")]
2802    pub name: ::prost::alloc::string::String,
2803    #[prost(message, repeated, tag = "2")]
2804    pub indirection: ::prost::alloc::vec::Vec<Node>,
2805    #[prost(int32, tag = "3")]
2806    pub nnames: i32,
2807    #[prost(message, optional, boxed, tag = "4")]
2808    pub val: ::core::option::Option<::prost::alloc::boxed::Box<SelectStmt>>,
2809    #[prost(int32, tag = "5")]
2810    pub location: i32,
2811}
2812#[derive(Clone, PartialEq, ::prost::Message)]
2813pub struct CreateSchemaStmt {
2814    #[prost(string, tag = "1")]
2815    pub schemaname: ::prost::alloc::string::String,
2816    #[prost(message, optional, tag = "2")]
2817    pub authrole: ::core::option::Option<RoleSpec>,
2818    #[prost(message, repeated, tag = "3")]
2819    pub schema_elts: ::prost::alloc::vec::Vec<Node>,
2820    #[prost(bool, tag = "4")]
2821    pub if_not_exists: bool,
2822}
2823#[derive(Clone, PartialEq, ::prost::Message)]
2824pub struct AlterTableStmt {
2825    #[prost(message, optional, tag = "1")]
2826    pub relation: ::core::option::Option<RangeVar>,
2827    #[prost(message, repeated, tag = "2")]
2828    pub cmds: ::prost::alloc::vec::Vec<Node>,
2829    #[prost(enumeration = "ObjectType", tag = "3")]
2830    pub objtype: i32,
2831    #[prost(bool, tag = "4")]
2832    pub missing_ok: bool,
2833}
2834#[derive(Clone, PartialEq, ::prost::Message)]
2835pub struct ReplicaIdentityStmt {
2836    #[prost(string, tag = "1")]
2837    pub identity_type: ::prost::alloc::string::String,
2838    #[prost(string, tag = "2")]
2839    pub name: ::prost::alloc::string::String,
2840}
2841#[derive(Clone, PartialEq, ::prost::Message)]
2842pub struct AlterTableCmd {
2843    #[prost(enumeration = "AlterTableType", tag = "1")]
2844    pub subtype: i32,
2845    #[prost(string, tag = "2")]
2846    pub name: ::prost::alloc::string::String,
2847    #[prost(int32, tag = "3")]
2848    pub num: i32,
2849    #[prost(message, optional, tag = "4")]
2850    pub newowner: ::core::option::Option<RoleSpec>,
2851    #[prost(message, optional, boxed, tag = "5")]
2852    pub def: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2853    #[prost(enumeration = "DropBehavior", tag = "6")]
2854    pub behavior: i32,
2855    #[prost(bool, tag = "7")]
2856    pub missing_ok: bool,
2857    #[prost(bool, tag = "8")]
2858    pub recurse: bool,
2859}
2860#[derive(Clone, PartialEq, ::prost::Message)]
2861pub struct AlterCollationStmt {
2862    #[prost(message, repeated, tag = "1")]
2863    pub collname: ::prost::alloc::vec::Vec<Node>,
2864}
2865#[derive(Clone, PartialEq, ::prost::Message)]
2866pub struct AlterDomainStmt {
2867    #[prost(string, tag = "1")]
2868    pub subtype: ::prost::alloc::string::String,
2869    #[prost(message, repeated, tag = "2")]
2870    pub type_name: ::prost::alloc::vec::Vec<Node>,
2871    #[prost(string, tag = "3")]
2872    pub name: ::prost::alloc::string::String,
2873    #[prost(message, optional, boxed, tag = "4")]
2874    pub def: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2875    #[prost(enumeration = "DropBehavior", tag = "5")]
2876    pub behavior: i32,
2877    #[prost(bool, tag = "6")]
2878    pub missing_ok: bool,
2879}
2880#[derive(Clone, PartialEq, ::prost::Message)]
2881pub struct GrantStmt {
2882    #[prost(bool, tag = "1")]
2883    pub is_grant: bool,
2884    #[prost(enumeration = "GrantTargetType", tag = "2")]
2885    pub targtype: i32,
2886    #[prost(enumeration = "ObjectType", tag = "3")]
2887    pub objtype: i32,
2888    #[prost(message, repeated, tag = "4")]
2889    pub objects: ::prost::alloc::vec::Vec<Node>,
2890    #[prost(message, repeated, tag = "5")]
2891    pub privileges: ::prost::alloc::vec::Vec<Node>,
2892    #[prost(message, repeated, tag = "6")]
2893    pub grantees: ::prost::alloc::vec::Vec<Node>,
2894    #[prost(bool, tag = "7")]
2895    pub grant_option: bool,
2896    #[prost(message, optional, tag = "8")]
2897    pub grantor: ::core::option::Option<RoleSpec>,
2898    #[prost(enumeration = "DropBehavior", tag = "9")]
2899    pub behavior: i32,
2900}
2901#[derive(Clone, PartialEq, ::prost::Message)]
2902pub struct ObjectWithArgs {
2903    #[prost(message, repeated, tag = "1")]
2904    pub objname: ::prost::alloc::vec::Vec<Node>,
2905    #[prost(message, repeated, tag = "2")]
2906    pub objargs: ::prost::alloc::vec::Vec<Node>,
2907    #[prost(message, repeated, tag = "3")]
2908    pub objfuncargs: ::prost::alloc::vec::Vec<Node>,
2909    #[prost(bool, tag = "4")]
2910    pub args_unspecified: bool,
2911}
2912#[derive(Clone, PartialEq, ::prost::Message)]
2913pub struct AccessPriv {
2914    #[prost(string, tag = "1")]
2915    pub priv_name: ::prost::alloc::string::String,
2916    #[prost(message, repeated, tag = "2")]
2917    pub cols: ::prost::alloc::vec::Vec<Node>,
2918}
2919#[derive(Clone, PartialEq, ::prost::Message)]
2920pub struct GrantRoleStmt {
2921    #[prost(message, repeated, tag = "1")]
2922    pub granted_roles: ::prost::alloc::vec::Vec<Node>,
2923    #[prost(message, repeated, tag = "2")]
2924    pub grantee_roles: ::prost::alloc::vec::Vec<Node>,
2925    #[prost(bool, tag = "3")]
2926    pub is_grant: bool,
2927    #[prost(message, repeated, tag = "4")]
2928    pub opt: ::prost::alloc::vec::Vec<Node>,
2929    #[prost(message, optional, tag = "5")]
2930    pub grantor: ::core::option::Option<RoleSpec>,
2931    #[prost(enumeration = "DropBehavior", tag = "6")]
2932    pub behavior: i32,
2933}
2934#[derive(Clone, PartialEq, ::prost::Message)]
2935pub struct AlterDefaultPrivilegesStmt {
2936    #[prost(message, repeated, tag = "1")]
2937    pub options: ::prost::alloc::vec::Vec<Node>,
2938    #[prost(message, optional, tag = "2")]
2939    pub action: ::core::option::Option<GrantStmt>,
2940}
2941#[derive(Clone, PartialEq, ::prost::Message)]
2942pub struct CopyStmt {
2943    #[prost(message, optional, tag = "1")]
2944    pub relation: ::core::option::Option<RangeVar>,
2945    #[prost(message, optional, boxed, tag = "2")]
2946    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2947    #[prost(message, repeated, tag = "3")]
2948    pub attlist: ::prost::alloc::vec::Vec<Node>,
2949    #[prost(bool, tag = "4")]
2950    pub is_from: bool,
2951    #[prost(bool, tag = "5")]
2952    pub is_program: bool,
2953    #[prost(string, tag = "6")]
2954    pub filename: ::prost::alloc::string::String,
2955    #[prost(message, repeated, tag = "7")]
2956    pub options: ::prost::alloc::vec::Vec<Node>,
2957    #[prost(message, optional, boxed, tag = "8")]
2958    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2959}
2960#[derive(Clone, PartialEq, ::prost::Message)]
2961pub struct VariableSetStmt {
2962    #[prost(enumeration = "VariableSetKind", tag = "1")]
2963    pub kind: i32,
2964    #[prost(string, tag = "2")]
2965    pub name: ::prost::alloc::string::String,
2966    #[prost(message, repeated, tag = "3")]
2967    pub args: ::prost::alloc::vec::Vec<Node>,
2968    #[prost(bool, tag = "4")]
2969    pub is_local: bool,
2970}
2971#[derive(Clone, PartialEq, ::prost::Message)]
2972pub struct VariableShowStmt {
2973    #[prost(string, tag = "1")]
2974    pub name: ::prost::alloc::string::String,
2975}
2976#[derive(Clone, PartialEq, ::prost::Message)]
2977pub struct CreateStmt {
2978    #[prost(message, optional, tag = "1")]
2979    pub relation: ::core::option::Option<RangeVar>,
2980    #[prost(message, repeated, tag = "2")]
2981    pub table_elts: ::prost::alloc::vec::Vec<Node>,
2982    #[prost(message, repeated, tag = "3")]
2983    pub inh_relations: ::prost::alloc::vec::Vec<Node>,
2984    #[prost(message, optional, tag = "4")]
2985    pub partbound: ::core::option::Option<PartitionBoundSpec>,
2986    #[prost(message, optional, tag = "5")]
2987    pub partspec: ::core::option::Option<PartitionSpec>,
2988    #[prost(message, optional, tag = "6")]
2989    pub of_typename: ::core::option::Option<TypeName>,
2990    #[prost(message, repeated, tag = "7")]
2991    pub constraints: ::prost::alloc::vec::Vec<Node>,
2992    #[prost(message, repeated, tag = "8")]
2993    pub options: ::prost::alloc::vec::Vec<Node>,
2994    #[prost(enumeration = "OnCommitAction", tag = "9")]
2995    pub oncommit: i32,
2996    #[prost(string, tag = "10")]
2997    pub tablespacename: ::prost::alloc::string::String,
2998    #[prost(string, tag = "11")]
2999    pub access_method: ::prost::alloc::string::String,
3000    #[prost(bool, tag = "12")]
3001    pub if_not_exists: bool,
3002}
3003#[derive(Clone, PartialEq, ::prost::Message)]
3004pub struct Constraint {
3005    #[prost(enumeration = "ConstrType", tag = "1")]
3006    pub contype: i32,
3007    #[prost(string, tag = "2")]
3008    pub conname: ::prost::alloc::string::String,
3009    #[prost(bool, tag = "3")]
3010    pub deferrable: bool,
3011    #[prost(bool, tag = "4")]
3012    pub initdeferred: bool,
3013    #[prost(bool, tag = "5")]
3014    pub skip_validation: bool,
3015    #[prost(bool, tag = "6")]
3016    pub initially_valid: bool,
3017    #[prost(bool, tag = "7")]
3018    pub is_no_inherit: bool,
3019    #[prost(message, optional, boxed, tag = "8")]
3020    pub raw_expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3021    #[prost(string, tag = "9")]
3022    pub cooked_expr: ::prost::alloc::string::String,
3023    #[prost(string, tag = "10")]
3024    pub generated_when: ::prost::alloc::string::String,
3025    #[prost(int32, tag = "11")]
3026    pub inhcount: i32,
3027    #[prost(bool, tag = "12")]
3028    pub nulls_not_distinct: bool,
3029    #[prost(message, repeated, tag = "13")]
3030    pub keys: ::prost::alloc::vec::Vec<Node>,
3031    #[prost(message, repeated, tag = "14")]
3032    pub including: ::prost::alloc::vec::Vec<Node>,
3033    #[prost(message, repeated, tag = "15")]
3034    pub exclusions: ::prost::alloc::vec::Vec<Node>,
3035    #[prost(message, repeated, tag = "16")]
3036    pub options: ::prost::alloc::vec::Vec<Node>,
3037    #[prost(string, tag = "17")]
3038    pub indexname: ::prost::alloc::string::String,
3039    #[prost(string, tag = "18")]
3040    pub indexspace: ::prost::alloc::string::String,
3041    #[prost(bool, tag = "19")]
3042    pub reset_default_tblspc: bool,
3043    #[prost(string, tag = "20")]
3044    pub access_method: ::prost::alloc::string::String,
3045    #[prost(message, optional, boxed, tag = "21")]
3046    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3047    #[prost(message, optional, tag = "22")]
3048    pub pktable: ::core::option::Option<RangeVar>,
3049    #[prost(message, repeated, tag = "23")]
3050    pub fk_attrs: ::prost::alloc::vec::Vec<Node>,
3051    #[prost(message, repeated, tag = "24")]
3052    pub pk_attrs: ::prost::alloc::vec::Vec<Node>,
3053    #[prost(string, tag = "25")]
3054    pub fk_matchtype: ::prost::alloc::string::String,
3055    #[prost(string, tag = "26")]
3056    pub fk_upd_action: ::prost::alloc::string::String,
3057    #[prost(string, tag = "27")]
3058    pub fk_del_action: ::prost::alloc::string::String,
3059    #[prost(message, repeated, tag = "28")]
3060    pub fk_del_set_cols: ::prost::alloc::vec::Vec<Node>,
3061    #[prost(message, repeated, tag = "29")]
3062    pub old_conpfeqop: ::prost::alloc::vec::Vec<Node>,
3063    #[prost(uint32, tag = "30")]
3064    pub old_pktable_oid: u32,
3065    #[prost(int32, tag = "31")]
3066    pub location: i32,
3067}
3068#[derive(Clone, PartialEq, ::prost::Message)]
3069pub struct CreateTableSpaceStmt {
3070    #[prost(string, tag = "1")]
3071    pub tablespacename: ::prost::alloc::string::String,
3072    #[prost(message, optional, tag = "2")]
3073    pub owner: ::core::option::Option<RoleSpec>,
3074    #[prost(string, tag = "3")]
3075    pub location: ::prost::alloc::string::String,
3076    #[prost(message, repeated, tag = "4")]
3077    pub options: ::prost::alloc::vec::Vec<Node>,
3078}
3079#[derive(Clone, PartialEq, ::prost::Message)]
3080pub struct DropTableSpaceStmt {
3081    #[prost(string, tag = "1")]
3082    pub tablespacename: ::prost::alloc::string::String,
3083    #[prost(bool, tag = "2")]
3084    pub missing_ok: bool,
3085}
3086#[derive(Clone, PartialEq, ::prost::Message)]
3087pub struct AlterTableSpaceOptionsStmt {
3088    #[prost(string, tag = "1")]
3089    pub tablespacename: ::prost::alloc::string::String,
3090    #[prost(message, repeated, tag = "2")]
3091    pub options: ::prost::alloc::vec::Vec<Node>,
3092    #[prost(bool, tag = "3")]
3093    pub is_reset: bool,
3094}
3095#[derive(Clone, PartialEq, ::prost::Message)]
3096pub struct AlterTableMoveAllStmt {
3097    #[prost(string, tag = "1")]
3098    pub orig_tablespacename: ::prost::alloc::string::String,
3099    #[prost(enumeration = "ObjectType", tag = "2")]
3100    pub objtype: i32,
3101    #[prost(message, repeated, tag = "3")]
3102    pub roles: ::prost::alloc::vec::Vec<Node>,
3103    #[prost(string, tag = "4")]
3104    pub new_tablespacename: ::prost::alloc::string::String,
3105    #[prost(bool, tag = "5")]
3106    pub nowait: bool,
3107}
3108#[derive(Clone, PartialEq, ::prost::Message)]
3109pub struct CreateExtensionStmt {
3110    #[prost(string, tag = "1")]
3111    pub extname: ::prost::alloc::string::String,
3112    #[prost(bool, tag = "2")]
3113    pub if_not_exists: bool,
3114    #[prost(message, repeated, tag = "3")]
3115    pub options: ::prost::alloc::vec::Vec<Node>,
3116}
3117#[derive(Clone, PartialEq, ::prost::Message)]
3118pub struct AlterExtensionStmt {
3119    #[prost(string, tag = "1")]
3120    pub extname: ::prost::alloc::string::String,
3121    #[prost(message, repeated, tag = "2")]
3122    pub options: ::prost::alloc::vec::Vec<Node>,
3123}
3124#[derive(Clone, PartialEq, ::prost::Message)]
3125pub struct AlterExtensionContentsStmt {
3126    #[prost(string, tag = "1")]
3127    pub extname: ::prost::alloc::string::String,
3128    #[prost(int32, tag = "2")]
3129    pub action: i32,
3130    #[prost(enumeration = "ObjectType", tag = "3")]
3131    pub objtype: i32,
3132    #[prost(message, optional, boxed, tag = "4")]
3133    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3134}
3135#[derive(Clone, PartialEq, ::prost::Message)]
3136pub struct CreateFdwStmt {
3137    #[prost(string, tag = "1")]
3138    pub fdwname: ::prost::alloc::string::String,
3139    #[prost(message, repeated, tag = "2")]
3140    pub func_options: ::prost::alloc::vec::Vec<Node>,
3141    #[prost(message, repeated, tag = "3")]
3142    pub options: ::prost::alloc::vec::Vec<Node>,
3143}
3144#[derive(Clone, PartialEq, ::prost::Message)]
3145pub struct AlterFdwStmt {
3146    #[prost(string, tag = "1")]
3147    pub fdwname: ::prost::alloc::string::String,
3148    #[prost(message, repeated, tag = "2")]
3149    pub func_options: ::prost::alloc::vec::Vec<Node>,
3150    #[prost(message, repeated, tag = "3")]
3151    pub options: ::prost::alloc::vec::Vec<Node>,
3152}
3153#[derive(Clone, PartialEq, ::prost::Message)]
3154pub struct CreateForeignServerStmt {
3155    #[prost(string, tag = "1")]
3156    pub servername: ::prost::alloc::string::String,
3157    #[prost(string, tag = "2")]
3158    pub servertype: ::prost::alloc::string::String,
3159    #[prost(string, tag = "3")]
3160    pub version: ::prost::alloc::string::String,
3161    #[prost(string, tag = "4")]
3162    pub fdwname: ::prost::alloc::string::String,
3163    #[prost(bool, tag = "5")]
3164    pub if_not_exists: bool,
3165    #[prost(message, repeated, tag = "6")]
3166    pub options: ::prost::alloc::vec::Vec<Node>,
3167}
3168#[derive(Clone, PartialEq, ::prost::Message)]
3169pub struct AlterForeignServerStmt {
3170    #[prost(string, tag = "1")]
3171    pub servername: ::prost::alloc::string::String,
3172    #[prost(string, tag = "2")]
3173    pub version: ::prost::alloc::string::String,
3174    #[prost(message, repeated, tag = "3")]
3175    pub options: ::prost::alloc::vec::Vec<Node>,
3176    #[prost(bool, tag = "4")]
3177    pub has_version: bool,
3178}
3179#[derive(Clone, PartialEq, ::prost::Message)]
3180pub struct CreateForeignTableStmt {
3181    #[prost(message, optional, tag = "1")]
3182    pub base_stmt: ::core::option::Option<CreateStmt>,
3183    #[prost(string, tag = "2")]
3184    pub servername: ::prost::alloc::string::String,
3185    #[prost(message, repeated, tag = "3")]
3186    pub options: ::prost::alloc::vec::Vec<Node>,
3187}
3188#[derive(Clone, PartialEq, ::prost::Message)]
3189pub struct CreateUserMappingStmt {
3190    #[prost(message, optional, tag = "1")]
3191    pub user: ::core::option::Option<RoleSpec>,
3192    #[prost(string, tag = "2")]
3193    pub servername: ::prost::alloc::string::String,
3194    #[prost(bool, tag = "3")]
3195    pub if_not_exists: bool,
3196    #[prost(message, repeated, tag = "4")]
3197    pub options: ::prost::alloc::vec::Vec<Node>,
3198}
3199#[derive(Clone, PartialEq, ::prost::Message)]
3200pub struct AlterUserMappingStmt {
3201    #[prost(message, optional, tag = "1")]
3202    pub user: ::core::option::Option<RoleSpec>,
3203    #[prost(string, tag = "2")]
3204    pub servername: ::prost::alloc::string::String,
3205    #[prost(message, repeated, tag = "3")]
3206    pub options: ::prost::alloc::vec::Vec<Node>,
3207}
3208#[derive(Clone, PartialEq, ::prost::Message)]
3209pub struct DropUserMappingStmt {
3210    #[prost(message, optional, tag = "1")]
3211    pub user: ::core::option::Option<RoleSpec>,
3212    #[prost(string, tag = "2")]
3213    pub servername: ::prost::alloc::string::String,
3214    #[prost(bool, tag = "3")]
3215    pub missing_ok: bool,
3216}
3217#[derive(Clone, PartialEq, ::prost::Message)]
3218pub struct ImportForeignSchemaStmt {
3219    #[prost(string, tag = "1")]
3220    pub server_name: ::prost::alloc::string::String,
3221    #[prost(string, tag = "2")]
3222    pub remote_schema: ::prost::alloc::string::String,
3223    #[prost(string, tag = "3")]
3224    pub local_schema: ::prost::alloc::string::String,
3225    #[prost(enumeration = "ImportForeignSchemaType", tag = "4")]
3226    pub list_type: i32,
3227    #[prost(message, repeated, tag = "5")]
3228    pub table_list: ::prost::alloc::vec::Vec<Node>,
3229    #[prost(message, repeated, tag = "6")]
3230    pub options: ::prost::alloc::vec::Vec<Node>,
3231}
3232#[derive(Clone, PartialEq, ::prost::Message)]
3233pub struct CreatePolicyStmt {
3234    #[prost(string, tag = "1")]
3235    pub policy_name: ::prost::alloc::string::String,
3236    #[prost(message, optional, tag = "2")]
3237    pub table: ::core::option::Option<RangeVar>,
3238    #[prost(string, tag = "3")]
3239    pub cmd_name: ::prost::alloc::string::String,
3240    #[prost(bool, tag = "4")]
3241    pub permissive: bool,
3242    #[prost(message, repeated, tag = "5")]
3243    pub roles: ::prost::alloc::vec::Vec<Node>,
3244    #[prost(message, optional, boxed, tag = "6")]
3245    pub qual: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3246    #[prost(message, optional, boxed, tag = "7")]
3247    pub with_check: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3248}
3249#[derive(Clone, PartialEq, ::prost::Message)]
3250pub struct AlterPolicyStmt {
3251    #[prost(string, tag = "1")]
3252    pub policy_name: ::prost::alloc::string::String,
3253    #[prost(message, optional, tag = "2")]
3254    pub table: ::core::option::Option<RangeVar>,
3255    #[prost(message, repeated, tag = "3")]
3256    pub roles: ::prost::alloc::vec::Vec<Node>,
3257    #[prost(message, optional, boxed, tag = "4")]
3258    pub qual: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3259    #[prost(message, optional, boxed, tag = "5")]
3260    pub with_check: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3261}
3262#[derive(Clone, PartialEq, ::prost::Message)]
3263pub struct CreateAmStmt {
3264    #[prost(string, tag = "1")]
3265    pub amname: ::prost::alloc::string::String,
3266    #[prost(message, repeated, tag = "2")]
3267    pub handler_name: ::prost::alloc::vec::Vec<Node>,
3268    #[prost(string, tag = "3")]
3269    pub amtype: ::prost::alloc::string::String,
3270}
3271#[derive(Clone, PartialEq, ::prost::Message)]
3272pub struct CreateTrigStmt {
3273    #[prost(bool, tag = "1")]
3274    pub replace: bool,
3275    #[prost(bool, tag = "2")]
3276    pub isconstraint: bool,
3277    #[prost(string, tag = "3")]
3278    pub trigname: ::prost::alloc::string::String,
3279    #[prost(message, optional, tag = "4")]
3280    pub relation: ::core::option::Option<RangeVar>,
3281    #[prost(message, repeated, tag = "5")]
3282    pub funcname: ::prost::alloc::vec::Vec<Node>,
3283    #[prost(message, repeated, tag = "6")]
3284    pub args: ::prost::alloc::vec::Vec<Node>,
3285    #[prost(bool, tag = "7")]
3286    pub row: bool,
3287    #[prost(int32, tag = "8")]
3288    pub timing: i32,
3289    #[prost(int32, tag = "9")]
3290    pub events: i32,
3291    #[prost(message, repeated, tag = "10")]
3292    pub columns: ::prost::alloc::vec::Vec<Node>,
3293    #[prost(message, optional, boxed, tag = "11")]
3294    pub when_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3295    #[prost(message, repeated, tag = "12")]
3296    pub transition_rels: ::prost::alloc::vec::Vec<Node>,
3297    #[prost(bool, tag = "13")]
3298    pub deferrable: bool,
3299    #[prost(bool, tag = "14")]
3300    pub initdeferred: bool,
3301    #[prost(message, optional, tag = "15")]
3302    pub constrrel: ::core::option::Option<RangeVar>,
3303}
3304#[derive(Clone, PartialEq, ::prost::Message)]
3305pub struct CreateEventTrigStmt {
3306    #[prost(string, tag = "1")]
3307    pub trigname: ::prost::alloc::string::String,
3308    #[prost(string, tag = "2")]
3309    pub eventname: ::prost::alloc::string::String,
3310    #[prost(message, repeated, tag = "3")]
3311    pub whenclause: ::prost::alloc::vec::Vec<Node>,
3312    #[prost(message, repeated, tag = "4")]
3313    pub funcname: ::prost::alloc::vec::Vec<Node>,
3314}
3315#[derive(Clone, PartialEq, ::prost::Message)]
3316pub struct AlterEventTrigStmt {
3317    #[prost(string, tag = "1")]
3318    pub trigname: ::prost::alloc::string::String,
3319    #[prost(string, tag = "2")]
3320    pub tgenabled: ::prost::alloc::string::String,
3321}
3322#[derive(Clone, PartialEq, ::prost::Message)]
3323pub struct CreatePLangStmt {
3324    #[prost(bool, tag = "1")]
3325    pub replace: bool,
3326    #[prost(string, tag = "2")]
3327    pub plname: ::prost::alloc::string::String,
3328    #[prost(message, repeated, tag = "3")]
3329    pub plhandler: ::prost::alloc::vec::Vec<Node>,
3330    #[prost(message, repeated, tag = "4")]
3331    pub plinline: ::prost::alloc::vec::Vec<Node>,
3332    #[prost(message, repeated, tag = "5")]
3333    pub plvalidator: ::prost::alloc::vec::Vec<Node>,
3334    #[prost(bool, tag = "6")]
3335    pub pltrusted: bool,
3336}
3337#[derive(Clone, PartialEq, ::prost::Message)]
3338pub struct CreateRoleStmt {
3339    #[prost(enumeration = "RoleStmtType", tag = "1")]
3340    pub stmt_type: i32,
3341    #[prost(string, tag = "2")]
3342    pub role: ::prost::alloc::string::String,
3343    #[prost(message, repeated, tag = "3")]
3344    pub options: ::prost::alloc::vec::Vec<Node>,
3345}
3346#[derive(Clone, PartialEq, ::prost::Message)]
3347pub struct AlterRoleStmt {
3348    #[prost(message, optional, tag = "1")]
3349    pub role: ::core::option::Option<RoleSpec>,
3350    #[prost(message, repeated, tag = "2")]
3351    pub options: ::prost::alloc::vec::Vec<Node>,
3352    #[prost(int32, tag = "3")]
3353    pub action: i32,
3354}
3355#[derive(Clone, PartialEq, ::prost::Message)]
3356pub struct AlterRoleSetStmt {
3357    #[prost(message, optional, tag = "1")]
3358    pub role: ::core::option::Option<RoleSpec>,
3359    #[prost(string, tag = "2")]
3360    pub database: ::prost::alloc::string::String,
3361    #[prost(message, optional, tag = "3")]
3362    pub setstmt: ::core::option::Option<VariableSetStmt>,
3363}
3364#[derive(Clone, PartialEq, ::prost::Message)]
3365pub struct DropRoleStmt {
3366    #[prost(message, repeated, tag = "1")]
3367    pub roles: ::prost::alloc::vec::Vec<Node>,
3368    #[prost(bool, tag = "2")]
3369    pub missing_ok: bool,
3370}
3371#[derive(Clone, PartialEq, ::prost::Message)]
3372pub struct CreateSeqStmt {
3373    #[prost(message, optional, tag = "1")]
3374    pub sequence: ::core::option::Option<RangeVar>,
3375    #[prost(message, repeated, tag = "2")]
3376    pub options: ::prost::alloc::vec::Vec<Node>,
3377    #[prost(uint32, tag = "3")]
3378    pub owner_id: u32,
3379    #[prost(bool, tag = "4")]
3380    pub for_identity: bool,
3381    #[prost(bool, tag = "5")]
3382    pub if_not_exists: bool,
3383}
3384#[derive(Clone, PartialEq, ::prost::Message)]
3385pub struct AlterSeqStmt {
3386    #[prost(message, optional, tag = "1")]
3387    pub sequence: ::core::option::Option<RangeVar>,
3388    #[prost(message, repeated, tag = "2")]
3389    pub options: ::prost::alloc::vec::Vec<Node>,
3390    #[prost(bool, tag = "3")]
3391    pub for_identity: bool,
3392    #[prost(bool, tag = "4")]
3393    pub missing_ok: bool,
3394}
3395#[derive(Clone, PartialEq, ::prost::Message)]
3396pub struct DefineStmt {
3397    #[prost(enumeration = "ObjectType", tag = "1")]
3398    pub kind: i32,
3399    #[prost(bool, tag = "2")]
3400    pub oldstyle: bool,
3401    #[prost(message, repeated, tag = "3")]
3402    pub defnames: ::prost::alloc::vec::Vec<Node>,
3403    #[prost(message, repeated, tag = "4")]
3404    pub args: ::prost::alloc::vec::Vec<Node>,
3405    #[prost(message, repeated, tag = "5")]
3406    pub definition: ::prost::alloc::vec::Vec<Node>,
3407    #[prost(bool, tag = "6")]
3408    pub if_not_exists: bool,
3409    #[prost(bool, tag = "7")]
3410    pub replace: bool,
3411}
3412#[derive(Clone, PartialEq, ::prost::Message)]
3413pub struct CreateDomainStmt {
3414    #[prost(message, repeated, tag = "1")]
3415    pub domainname: ::prost::alloc::vec::Vec<Node>,
3416    #[prost(message, optional, tag = "2")]
3417    pub type_name: ::core::option::Option<TypeName>,
3418    #[prost(message, optional, boxed, tag = "3")]
3419    pub coll_clause: ::core::option::Option<::prost::alloc::boxed::Box<CollateClause>>,
3420    #[prost(message, repeated, tag = "4")]
3421    pub constraints: ::prost::alloc::vec::Vec<Node>,
3422}
3423#[derive(Clone, PartialEq, ::prost::Message)]
3424pub struct CreateOpClassStmt {
3425    #[prost(message, repeated, tag = "1")]
3426    pub opclassname: ::prost::alloc::vec::Vec<Node>,
3427    #[prost(message, repeated, tag = "2")]
3428    pub opfamilyname: ::prost::alloc::vec::Vec<Node>,
3429    #[prost(string, tag = "3")]
3430    pub amname: ::prost::alloc::string::String,
3431    #[prost(message, optional, tag = "4")]
3432    pub datatype: ::core::option::Option<TypeName>,
3433    #[prost(message, repeated, tag = "5")]
3434    pub items: ::prost::alloc::vec::Vec<Node>,
3435    #[prost(bool, tag = "6")]
3436    pub is_default: bool,
3437}
3438#[derive(Clone, PartialEq, ::prost::Message)]
3439pub struct CreateOpClassItem {
3440    #[prost(int32, tag = "1")]
3441    pub itemtype: i32,
3442    #[prost(message, optional, tag = "2")]
3443    pub name: ::core::option::Option<ObjectWithArgs>,
3444    #[prost(int32, tag = "3")]
3445    pub number: i32,
3446    #[prost(message, repeated, tag = "4")]
3447    pub order_family: ::prost::alloc::vec::Vec<Node>,
3448    #[prost(message, repeated, tag = "5")]
3449    pub class_args: ::prost::alloc::vec::Vec<Node>,
3450    #[prost(message, optional, tag = "6")]
3451    pub storedtype: ::core::option::Option<TypeName>,
3452}
3453#[derive(Clone, PartialEq, ::prost::Message)]
3454pub struct CreateOpFamilyStmt {
3455    #[prost(message, repeated, tag = "1")]
3456    pub opfamilyname: ::prost::alloc::vec::Vec<Node>,
3457    #[prost(string, tag = "2")]
3458    pub amname: ::prost::alloc::string::String,
3459}
3460#[derive(Clone, PartialEq, ::prost::Message)]
3461pub struct AlterOpFamilyStmt {
3462    #[prost(message, repeated, tag = "1")]
3463    pub opfamilyname: ::prost::alloc::vec::Vec<Node>,
3464    #[prost(string, tag = "2")]
3465    pub amname: ::prost::alloc::string::String,
3466    #[prost(bool, tag = "3")]
3467    pub is_drop: bool,
3468    #[prost(message, repeated, tag = "4")]
3469    pub items: ::prost::alloc::vec::Vec<Node>,
3470}
3471#[derive(Clone, PartialEq, ::prost::Message)]
3472pub struct DropStmt {
3473    #[prost(message, repeated, tag = "1")]
3474    pub objects: ::prost::alloc::vec::Vec<Node>,
3475    #[prost(enumeration = "ObjectType", tag = "2")]
3476    pub remove_type: i32,
3477    #[prost(enumeration = "DropBehavior", tag = "3")]
3478    pub behavior: i32,
3479    #[prost(bool, tag = "4")]
3480    pub missing_ok: bool,
3481    #[prost(bool, tag = "5")]
3482    pub concurrent: bool,
3483}
3484#[derive(Clone, PartialEq, ::prost::Message)]
3485pub struct TruncateStmt {
3486    #[prost(message, repeated, tag = "1")]
3487    pub relations: ::prost::alloc::vec::Vec<Node>,
3488    #[prost(bool, tag = "2")]
3489    pub restart_seqs: bool,
3490    #[prost(enumeration = "DropBehavior", tag = "3")]
3491    pub behavior: i32,
3492}
3493#[derive(Clone, PartialEq, ::prost::Message)]
3494pub struct CommentStmt {
3495    #[prost(enumeration = "ObjectType", tag = "1")]
3496    pub objtype: i32,
3497    #[prost(message, optional, boxed, tag = "2")]
3498    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3499    #[prost(string, tag = "3")]
3500    pub comment: ::prost::alloc::string::String,
3501}
3502#[derive(Clone, PartialEq, ::prost::Message)]
3503pub struct SecLabelStmt {
3504    #[prost(enumeration = "ObjectType", tag = "1")]
3505    pub objtype: i32,
3506    #[prost(message, optional, boxed, tag = "2")]
3507    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3508    #[prost(string, tag = "3")]
3509    pub provider: ::prost::alloc::string::String,
3510    #[prost(string, tag = "4")]
3511    pub label: ::prost::alloc::string::String,
3512}
3513#[derive(Clone, PartialEq, ::prost::Message)]
3514pub struct DeclareCursorStmt {
3515    #[prost(string, tag = "1")]
3516    pub portalname: ::prost::alloc::string::String,
3517    #[prost(int32, tag = "2")]
3518    pub options: i32,
3519    #[prost(message, optional, boxed, tag = "3")]
3520    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3521}
3522#[derive(Clone, PartialEq, ::prost::Message)]
3523pub struct ClosePortalStmt {
3524    #[prost(string, tag = "1")]
3525    pub portalname: ::prost::alloc::string::String,
3526}
3527#[derive(Clone, PartialEq, ::prost::Message)]
3528pub struct FetchStmt {
3529    #[prost(enumeration = "FetchDirection", tag = "1")]
3530    pub direction: i32,
3531    #[prost(int64, tag = "2")]
3532    pub how_many: i64,
3533    #[prost(string, tag = "3")]
3534    pub portalname: ::prost::alloc::string::String,
3535    #[prost(bool, tag = "4")]
3536    pub ismove: bool,
3537}
3538#[derive(Clone, PartialEq, ::prost::Message)]
3539pub struct IndexStmt {
3540    #[prost(string, tag = "1")]
3541    pub idxname: ::prost::alloc::string::String,
3542    #[prost(message, optional, tag = "2")]
3543    pub relation: ::core::option::Option<RangeVar>,
3544    #[prost(string, tag = "3")]
3545    pub access_method: ::prost::alloc::string::String,
3546    #[prost(string, tag = "4")]
3547    pub table_space: ::prost::alloc::string::String,
3548    #[prost(message, repeated, tag = "5")]
3549    pub index_params: ::prost::alloc::vec::Vec<Node>,
3550    #[prost(message, repeated, tag = "6")]
3551    pub index_including_params: ::prost::alloc::vec::Vec<Node>,
3552    #[prost(message, repeated, tag = "7")]
3553    pub options: ::prost::alloc::vec::Vec<Node>,
3554    #[prost(message, optional, boxed, tag = "8")]
3555    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3556    #[prost(message, repeated, tag = "9")]
3557    pub exclude_op_names: ::prost::alloc::vec::Vec<Node>,
3558    #[prost(string, tag = "10")]
3559    pub idxcomment: ::prost::alloc::string::String,
3560    #[prost(uint32, tag = "11")]
3561    pub index_oid: u32,
3562    #[prost(uint32, tag = "12")]
3563    pub old_number: u32,
3564    #[prost(uint32, tag = "13")]
3565    pub old_create_subid: u32,
3566    #[prost(uint32, tag = "14")]
3567    pub old_first_relfilelocator_subid: u32,
3568    #[prost(bool, tag = "15")]
3569    pub unique: bool,
3570    #[prost(bool, tag = "16")]
3571    pub nulls_not_distinct: bool,
3572    #[prost(bool, tag = "17")]
3573    pub primary: bool,
3574    #[prost(bool, tag = "18")]
3575    pub isconstraint: bool,
3576    #[prost(bool, tag = "19")]
3577    pub deferrable: bool,
3578    #[prost(bool, tag = "20")]
3579    pub initdeferred: bool,
3580    #[prost(bool, tag = "21")]
3581    pub transformed: bool,
3582    #[prost(bool, tag = "22")]
3583    pub concurrent: bool,
3584    #[prost(bool, tag = "23")]
3585    pub if_not_exists: bool,
3586    #[prost(bool, tag = "24")]
3587    pub reset_default_tblspc: bool,
3588}
3589#[derive(Clone, PartialEq, ::prost::Message)]
3590pub struct CreateStatsStmt {
3591    #[prost(message, repeated, tag = "1")]
3592    pub defnames: ::prost::alloc::vec::Vec<Node>,
3593    #[prost(message, repeated, tag = "2")]
3594    pub stat_types: ::prost::alloc::vec::Vec<Node>,
3595    #[prost(message, repeated, tag = "3")]
3596    pub exprs: ::prost::alloc::vec::Vec<Node>,
3597    #[prost(message, repeated, tag = "4")]
3598    pub relations: ::prost::alloc::vec::Vec<Node>,
3599    #[prost(string, tag = "5")]
3600    pub stxcomment: ::prost::alloc::string::String,
3601    #[prost(bool, tag = "6")]
3602    pub transformed: bool,
3603    #[prost(bool, tag = "7")]
3604    pub if_not_exists: bool,
3605}
3606#[derive(Clone, PartialEq, ::prost::Message)]
3607pub struct StatsElem {
3608    #[prost(string, tag = "1")]
3609    pub name: ::prost::alloc::string::String,
3610    #[prost(message, optional, boxed, tag = "2")]
3611    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3612}
3613#[derive(Clone, PartialEq, ::prost::Message)]
3614pub struct AlterStatsStmt {
3615    #[prost(message, repeated, tag = "1")]
3616    pub defnames: ::prost::alloc::vec::Vec<Node>,
3617    #[prost(message, optional, boxed, tag = "2")]
3618    pub stxstattarget: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3619    #[prost(bool, tag = "3")]
3620    pub missing_ok: bool,
3621}
3622#[derive(Clone, PartialEq, ::prost::Message)]
3623pub struct CreateFunctionStmt {
3624    #[prost(bool, tag = "1")]
3625    pub is_procedure: bool,
3626    #[prost(bool, tag = "2")]
3627    pub replace: bool,
3628    #[prost(message, repeated, tag = "3")]
3629    pub funcname: ::prost::alloc::vec::Vec<Node>,
3630    #[prost(message, repeated, tag = "4")]
3631    pub parameters: ::prost::alloc::vec::Vec<Node>,
3632    #[prost(message, optional, tag = "5")]
3633    pub return_type: ::core::option::Option<TypeName>,
3634    #[prost(message, repeated, tag = "6")]
3635    pub options: ::prost::alloc::vec::Vec<Node>,
3636    #[prost(message, optional, boxed, tag = "7")]
3637    pub sql_body: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3638}
3639#[derive(Clone, PartialEq, ::prost::Message)]
3640pub struct FunctionParameter {
3641    #[prost(string, tag = "1")]
3642    pub name: ::prost::alloc::string::String,
3643    #[prost(message, optional, tag = "2")]
3644    pub arg_type: ::core::option::Option<TypeName>,
3645    #[prost(enumeration = "FunctionParameterMode", tag = "3")]
3646    pub mode: i32,
3647    #[prost(message, optional, boxed, tag = "4")]
3648    pub defexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3649}
3650#[derive(Clone, PartialEq, ::prost::Message)]
3651pub struct AlterFunctionStmt {
3652    #[prost(enumeration = "ObjectType", tag = "1")]
3653    pub objtype: i32,
3654    #[prost(message, optional, tag = "2")]
3655    pub func: ::core::option::Option<ObjectWithArgs>,
3656    #[prost(message, repeated, tag = "3")]
3657    pub actions: ::prost::alloc::vec::Vec<Node>,
3658}
3659#[derive(Clone, PartialEq, ::prost::Message)]
3660pub struct DoStmt {
3661    #[prost(message, repeated, tag = "1")]
3662    pub args: ::prost::alloc::vec::Vec<Node>,
3663}
3664#[derive(Clone, PartialEq, ::prost::Message)]
3665pub struct InlineCodeBlock {
3666    #[prost(string, tag = "1")]
3667    pub source_text: ::prost::alloc::string::String,
3668    #[prost(uint32, tag = "2")]
3669    pub lang_oid: u32,
3670    #[prost(bool, tag = "3")]
3671    pub lang_is_trusted: bool,
3672    #[prost(bool, tag = "4")]
3673    pub atomic: bool,
3674}
3675#[derive(Clone, PartialEq, ::prost::Message)]
3676pub struct CallStmt {
3677    #[prost(message, optional, boxed, tag = "1")]
3678    pub funccall: ::core::option::Option<::prost::alloc::boxed::Box<FuncCall>>,
3679    #[prost(message, optional, boxed, tag = "2")]
3680    pub funcexpr: ::core::option::Option<::prost::alloc::boxed::Box<FuncExpr>>,
3681    #[prost(message, repeated, tag = "3")]
3682    pub outargs: ::prost::alloc::vec::Vec<Node>,
3683}
3684#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3685pub struct CallContext {
3686    #[prost(bool, tag = "1")]
3687    pub atomic: bool,
3688}
3689#[derive(Clone, PartialEq, ::prost::Message)]
3690pub struct RenameStmt {
3691    #[prost(enumeration = "ObjectType", tag = "1")]
3692    pub rename_type: i32,
3693    #[prost(enumeration = "ObjectType", tag = "2")]
3694    pub relation_type: i32,
3695    #[prost(message, optional, tag = "3")]
3696    pub relation: ::core::option::Option<RangeVar>,
3697    #[prost(message, optional, boxed, tag = "4")]
3698    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3699    #[prost(string, tag = "5")]
3700    pub subname: ::prost::alloc::string::String,
3701    #[prost(string, tag = "6")]
3702    pub newname: ::prost::alloc::string::String,
3703    #[prost(enumeration = "DropBehavior", tag = "7")]
3704    pub behavior: i32,
3705    #[prost(bool, tag = "8")]
3706    pub missing_ok: bool,
3707}
3708#[derive(Clone, PartialEq, ::prost::Message)]
3709pub struct AlterObjectDependsStmt {
3710    #[prost(enumeration = "ObjectType", tag = "1")]
3711    pub object_type: i32,
3712    #[prost(message, optional, tag = "2")]
3713    pub relation: ::core::option::Option<RangeVar>,
3714    #[prost(message, optional, boxed, tag = "3")]
3715    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3716    #[prost(message, optional, tag = "4")]
3717    pub extname: ::core::option::Option<String>,
3718    #[prost(bool, tag = "5")]
3719    pub remove: bool,
3720}
3721#[derive(Clone, PartialEq, ::prost::Message)]
3722pub struct AlterObjectSchemaStmt {
3723    #[prost(enumeration = "ObjectType", tag = "1")]
3724    pub object_type: i32,
3725    #[prost(message, optional, tag = "2")]
3726    pub relation: ::core::option::Option<RangeVar>,
3727    #[prost(message, optional, boxed, tag = "3")]
3728    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3729    #[prost(string, tag = "4")]
3730    pub newschema: ::prost::alloc::string::String,
3731    #[prost(bool, tag = "5")]
3732    pub missing_ok: bool,
3733}
3734#[derive(Clone, PartialEq, ::prost::Message)]
3735pub struct AlterOwnerStmt {
3736    #[prost(enumeration = "ObjectType", tag = "1")]
3737    pub object_type: i32,
3738    #[prost(message, optional, tag = "2")]
3739    pub relation: ::core::option::Option<RangeVar>,
3740    #[prost(message, optional, boxed, tag = "3")]
3741    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3742    #[prost(message, optional, tag = "4")]
3743    pub newowner: ::core::option::Option<RoleSpec>,
3744}
3745#[derive(Clone, PartialEq, ::prost::Message)]
3746pub struct AlterOperatorStmt {
3747    #[prost(message, optional, tag = "1")]
3748    pub opername: ::core::option::Option<ObjectWithArgs>,
3749    #[prost(message, repeated, tag = "2")]
3750    pub options: ::prost::alloc::vec::Vec<Node>,
3751}
3752#[derive(Clone, PartialEq, ::prost::Message)]
3753pub struct AlterTypeStmt {
3754    #[prost(message, repeated, tag = "1")]
3755    pub type_name: ::prost::alloc::vec::Vec<Node>,
3756    #[prost(message, repeated, tag = "2")]
3757    pub options: ::prost::alloc::vec::Vec<Node>,
3758}
3759#[derive(Clone, PartialEq, ::prost::Message)]
3760pub struct RuleStmt {
3761    #[prost(message, optional, tag = "1")]
3762    pub relation: ::core::option::Option<RangeVar>,
3763    #[prost(string, tag = "2")]
3764    pub rulename: ::prost::alloc::string::String,
3765    #[prost(message, optional, boxed, tag = "3")]
3766    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3767    #[prost(enumeration = "CmdType", tag = "4")]
3768    pub event: i32,
3769    #[prost(bool, tag = "5")]
3770    pub instead: bool,
3771    #[prost(message, repeated, tag = "6")]
3772    pub actions: ::prost::alloc::vec::Vec<Node>,
3773    #[prost(bool, tag = "7")]
3774    pub replace: bool,
3775}
3776#[derive(Clone, PartialEq, ::prost::Message)]
3777pub struct NotifyStmt {
3778    #[prost(string, tag = "1")]
3779    pub conditionname: ::prost::alloc::string::String,
3780    #[prost(string, tag = "2")]
3781    pub payload: ::prost::alloc::string::String,
3782}
3783#[derive(Clone, PartialEq, ::prost::Message)]
3784pub struct ListenStmt {
3785    #[prost(string, tag = "1")]
3786    pub conditionname: ::prost::alloc::string::String,
3787}
3788#[derive(Clone, PartialEq, ::prost::Message)]
3789pub struct UnlistenStmt {
3790    #[prost(string, tag = "1")]
3791    pub conditionname: ::prost::alloc::string::String,
3792}
3793#[derive(Clone, PartialEq, ::prost::Message)]
3794pub struct TransactionStmt {
3795    #[prost(enumeration = "TransactionStmtKind", tag = "1")]
3796    pub kind: i32,
3797    #[prost(message, repeated, tag = "2")]
3798    pub options: ::prost::alloc::vec::Vec<Node>,
3799    #[prost(string, tag = "3")]
3800    pub savepoint_name: ::prost::alloc::string::String,
3801    #[prost(string, tag = "4")]
3802    pub gid: ::prost::alloc::string::String,
3803    #[prost(bool, tag = "5")]
3804    pub chain: bool,
3805    #[prost(int32, tag = "6")]
3806    pub location: i32,
3807}
3808#[derive(Clone, PartialEq, ::prost::Message)]
3809pub struct CompositeTypeStmt {
3810    #[prost(message, optional, tag = "1")]
3811    pub typevar: ::core::option::Option<RangeVar>,
3812    #[prost(message, repeated, tag = "2")]
3813    pub coldeflist: ::prost::alloc::vec::Vec<Node>,
3814}
3815#[derive(Clone, PartialEq, ::prost::Message)]
3816pub struct CreateEnumStmt {
3817    #[prost(message, repeated, tag = "1")]
3818    pub type_name: ::prost::alloc::vec::Vec<Node>,
3819    #[prost(message, repeated, tag = "2")]
3820    pub vals: ::prost::alloc::vec::Vec<Node>,
3821}
3822#[derive(Clone, PartialEq, ::prost::Message)]
3823pub struct CreateRangeStmt {
3824    #[prost(message, repeated, tag = "1")]
3825    pub type_name: ::prost::alloc::vec::Vec<Node>,
3826    #[prost(message, repeated, tag = "2")]
3827    pub params: ::prost::alloc::vec::Vec<Node>,
3828}
3829#[derive(Clone, PartialEq, ::prost::Message)]
3830pub struct AlterEnumStmt {
3831    #[prost(message, repeated, tag = "1")]
3832    pub type_name: ::prost::alloc::vec::Vec<Node>,
3833    #[prost(string, tag = "2")]
3834    pub old_val: ::prost::alloc::string::String,
3835    #[prost(string, tag = "3")]
3836    pub new_val: ::prost::alloc::string::String,
3837    #[prost(string, tag = "4")]
3838    pub new_val_neighbor: ::prost::alloc::string::String,
3839    #[prost(bool, tag = "5")]
3840    pub new_val_is_after: bool,
3841    #[prost(bool, tag = "6")]
3842    pub skip_if_new_val_exists: bool,
3843}
3844#[derive(Clone, PartialEq, ::prost::Message)]
3845pub struct ViewStmt {
3846    #[prost(message, optional, tag = "1")]
3847    pub view: ::core::option::Option<RangeVar>,
3848    #[prost(message, repeated, tag = "2")]
3849    pub aliases: ::prost::alloc::vec::Vec<Node>,
3850    #[prost(message, optional, boxed, tag = "3")]
3851    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3852    #[prost(bool, tag = "4")]
3853    pub replace: bool,
3854    #[prost(message, repeated, tag = "5")]
3855    pub options: ::prost::alloc::vec::Vec<Node>,
3856    #[prost(enumeration = "ViewCheckOption", tag = "6")]
3857    pub with_check_option: i32,
3858}
3859#[derive(Clone, PartialEq, ::prost::Message)]
3860pub struct LoadStmt {
3861    #[prost(string, tag = "1")]
3862    pub filename: ::prost::alloc::string::String,
3863}
3864#[derive(Clone, PartialEq, ::prost::Message)]
3865pub struct CreatedbStmt {
3866    #[prost(string, tag = "1")]
3867    pub dbname: ::prost::alloc::string::String,
3868    #[prost(message, repeated, tag = "2")]
3869    pub options: ::prost::alloc::vec::Vec<Node>,
3870}
3871#[derive(Clone, PartialEq, ::prost::Message)]
3872pub struct AlterDatabaseStmt {
3873    #[prost(string, tag = "1")]
3874    pub dbname: ::prost::alloc::string::String,
3875    #[prost(message, repeated, tag = "2")]
3876    pub options: ::prost::alloc::vec::Vec<Node>,
3877}
3878#[derive(Clone, PartialEq, ::prost::Message)]
3879pub struct AlterDatabaseRefreshCollStmt {
3880    #[prost(string, tag = "1")]
3881    pub dbname: ::prost::alloc::string::String,
3882}
3883#[derive(Clone, PartialEq, ::prost::Message)]
3884pub struct AlterDatabaseSetStmt {
3885    #[prost(string, tag = "1")]
3886    pub dbname: ::prost::alloc::string::String,
3887    #[prost(message, optional, tag = "2")]
3888    pub setstmt: ::core::option::Option<VariableSetStmt>,
3889}
3890#[derive(Clone, PartialEq, ::prost::Message)]
3891pub struct DropdbStmt {
3892    #[prost(string, tag = "1")]
3893    pub dbname: ::prost::alloc::string::String,
3894    #[prost(bool, tag = "2")]
3895    pub missing_ok: bool,
3896    #[prost(message, repeated, tag = "3")]
3897    pub options: ::prost::alloc::vec::Vec<Node>,
3898}
3899#[derive(Clone, PartialEq, ::prost::Message)]
3900pub struct AlterSystemStmt {
3901    #[prost(message, optional, tag = "1")]
3902    pub setstmt: ::core::option::Option<VariableSetStmt>,
3903}
3904#[derive(Clone, PartialEq, ::prost::Message)]
3905pub struct ClusterStmt {
3906    #[prost(message, optional, tag = "1")]
3907    pub relation: ::core::option::Option<RangeVar>,
3908    #[prost(string, tag = "2")]
3909    pub indexname: ::prost::alloc::string::String,
3910    #[prost(message, repeated, tag = "3")]
3911    pub params: ::prost::alloc::vec::Vec<Node>,
3912}
3913#[derive(Clone, PartialEq, ::prost::Message)]
3914pub struct VacuumStmt {
3915    #[prost(message, repeated, tag = "1")]
3916    pub options: ::prost::alloc::vec::Vec<Node>,
3917    #[prost(message, repeated, tag = "2")]
3918    pub rels: ::prost::alloc::vec::Vec<Node>,
3919    #[prost(bool, tag = "3")]
3920    pub is_vacuumcmd: bool,
3921}
3922#[derive(Clone, PartialEq, ::prost::Message)]
3923pub struct VacuumRelation {
3924    #[prost(message, optional, tag = "1")]
3925    pub relation: ::core::option::Option<RangeVar>,
3926    #[prost(uint32, tag = "2")]
3927    pub oid: u32,
3928    #[prost(message, repeated, tag = "3")]
3929    pub va_cols: ::prost::alloc::vec::Vec<Node>,
3930}
3931#[derive(Clone, PartialEq, ::prost::Message)]
3932pub struct ExplainStmt {
3933    #[prost(message, optional, boxed, tag = "1")]
3934    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3935    #[prost(message, repeated, tag = "2")]
3936    pub options: ::prost::alloc::vec::Vec<Node>,
3937}
3938#[derive(Clone, PartialEq, ::prost::Message)]
3939pub struct CreateTableAsStmt {
3940    #[prost(message, optional, boxed, tag = "1")]
3941    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3942    #[prost(message, optional, boxed, tag = "2")]
3943    pub into: ::core::option::Option<::prost::alloc::boxed::Box<IntoClause>>,
3944    #[prost(enumeration = "ObjectType", tag = "3")]
3945    pub objtype: i32,
3946    #[prost(bool, tag = "4")]
3947    pub is_select_into: bool,
3948    #[prost(bool, tag = "5")]
3949    pub if_not_exists: bool,
3950}
3951#[derive(Clone, PartialEq, ::prost::Message)]
3952pub struct RefreshMatViewStmt {
3953    #[prost(bool, tag = "1")]
3954    pub concurrent: bool,
3955    #[prost(bool, tag = "2")]
3956    pub skip_data: bool,
3957    #[prost(message, optional, tag = "3")]
3958    pub relation: ::core::option::Option<RangeVar>,
3959}
3960#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3961pub struct CheckPointStmt {}
3962#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3963pub struct DiscardStmt {
3964    #[prost(enumeration = "DiscardMode", tag = "1")]
3965    pub target: i32,
3966}
3967#[derive(Clone, PartialEq, ::prost::Message)]
3968pub struct LockStmt {
3969    #[prost(message, repeated, tag = "1")]
3970    pub relations: ::prost::alloc::vec::Vec<Node>,
3971    #[prost(int32, tag = "2")]
3972    pub mode: i32,
3973    #[prost(bool, tag = "3")]
3974    pub nowait: bool,
3975}
3976#[derive(Clone, PartialEq, ::prost::Message)]
3977pub struct ConstraintsSetStmt {
3978    #[prost(message, repeated, tag = "1")]
3979    pub constraints: ::prost::alloc::vec::Vec<Node>,
3980    #[prost(bool, tag = "2")]
3981    pub deferred: bool,
3982}
3983#[derive(Clone, PartialEq, ::prost::Message)]
3984pub struct ReindexStmt {
3985    #[prost(enumeration = "ReindexObjectType", tag = "1")]
3986    pub kind: i32,
3987    #[prost(message, optional, tag = "2")]
3988    pub relation: ::core::option::Option<RangeVar>,
3989    #[prost(string, tag = "3")]
3990    pub name: ::prost::alloc::string::String,
3991    #[prost(message, repeated, tag = "4")]
3992    pub params: ::prost::alloc::vec::Vec<Node>,
3993}
3994#[derive(Clone, PartialEq, ::prost::Message)]
3995pub struct CreateConversionStmt {
3996    #[prost(message, repeated, tag = "1")]
3997    pub conversion_name: ::prost::alloc::vec::Vec<Node>,
3998    #[prost(string, tag = "2")]
3999    pub for_encoding_name: ::prost::alloc::string::String,
4000    #[prost(string, tag = "3")]
4001    pub to_encoding_name: ::prost::alloc::string::String,
4002    #[prost(message, repeated, tag = "4")]
4003    pub func_name: ::prost::alloc::vec::Vec<Node>,
4004    #[prost(bool, tag = "5")]
4005    pub def: bool,
4006}
4007#[derive(Clone, PartialEq, ::prost::Message)]
4008pub struct CreateCastStmt {
4009    #[prost(message, optional, tag = "1")]
4010    pub sourcetype: ::core::option::Option<TypeName>,
4011    #[prost(message, optional, tag = "2")]
4012    pub targettype: ::core::option::Option<TypeName>,
4013    #[prost(message, optional, tag = "3")]
4014    pub func: ::core::option::Option<ObjectWithArgs>,
4015    #[prost(enumeration = "CoercionContext", tag = "4")]
4016    pub context: i32,
4017    #[prost(bool, tag = "5")]
4018    pub inout: bool,
4019}
4020#[derive(Clone, PartialEq, ::prost::Message)]
4021pub struct CreateTransformStmt {
4022    #[prost(bool, tag = "1")]
4023    pub replace: bool,
4024    #[prost(message, optional, tag = "2")]
4025    pub type_name: ::core::option::Option<TypeName>,
4026    #[prost(string, tag = "3")]
4027    pub lang: ::prost::alloc::string::String,
4028    #[prost(message, optional, tag = "4")]
4029    pub fromsql: ::core::option::Option<ObjectWithArgs>,
4030    #[prost(message, optional, tag = "5")]
4031    pub tosql: ::core::option::Option<ObjectWithArgs>,
4032}
4033#[derive(Clone, PartialEq, ::prost::Message)]
4034pub struct PrepareStmt {
4035    #[prost(string, tag = "1")]
4036    pub name: ::prost::alloc::string::String,
4037    #[prost(message, repeated, tag = "2")]
4038    pub argtypes: ::prost::alloc::vec::Vec<Node>,
4039    #[prost(message, optional, boxed, tag = "3")]
4040    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
4041}
4042#[derive(Clone, PartialEq, ::prost::Message)]
4043pub struct ExecuteStmt {
4044    #[prost(string, tag = "1")]
4045    pub name: ::prost::alloc::string::String,
4046    #[prost(message, repeated, tag = "2")]
4047    pub params: ::prost::alloc::vec::Vec<Node>,
4048}
4049#[derive(Clone, PartialEq, ::prost::Message)]
4050pub struct DeallocateStmt {
4051    #[prost(string, tag = "1")]
4052    pub name: ::prost::alloc::string::String,
4053    #[prost(bool, tag = "2")]
4054    pub isall: bool,
4055    #[prost(int32, tag = "3")]
4056    pub location: i32,
4057}
4058#[derive(Clone, PartialEq, ::prost::Message)]
4059pub struct DropOwnedStmt {
4060    #[prost(message, repeated, tag = "1")]
4061    pub roles: ::prost::alloc::vec::Vec<Node>,
4062    #[prost(enumeration = "DropBehavior", tag = "2")]
4063    pub behavior: i32,
4064}
4065#[derive(Clone, PartialEq, ::prost::Message)]
4066pub struct ReassignOwnedStmt {
4067    #[prost(message, repeated, tag = "1")]
4068    pub roles: ::prost::alloc::vec::Vec<Node>,
4069    #[prost(message, optional, tag = "2")]
4070    pub newrole: ::core::option::Option<RoleSpec>,
4071}
4072#[derive(Clone, PartialEq, ::prost::Message)]
4073pub struct AlterTsDictionaryStmt {
4074    #[prost(message, repeated, tag = "1")]
4075    pub dictname: ::prost::alloc::vec::Vec<Node>,
4076    #[prost(message, repeated, tag = "2")]
4077    pub options: ::prost::alloc::vec::Vec<Node>,
4078}
4079#[derive(Clone, PartialEq, ::prost::Message)]
4080pub struct AlterTsConfigurationStmt {
4081    #[prost(enumeration = "AlterTsConfigType", tag = "1")]
4082    pub kind: i32,
4083    #[prost(message, repeated, tag = "2")]
4084    pub cfgname: ::prost::alloc::vec::Vec<Node>,
4085    #[prost(message, repeated, tag = "3")]
4086    pub tokentype: ::prost::alloc::vec::Vec<Node>,
4087    #[prost(message, repeated, tag = "4")]
4088    pub dicts: ::prost::alloc::vec::Vec<Node>,
4089    #[prost(bool, tag = "5")]
4090    pub r#override: bool,
4091    #[prost(bool, tag = "6")]
4092    pub replace: bool,
4093    #[prost(bool, tag = "7")]
4094    pub missing_ok: bool,
4095}
4096#[derive(Clone, PartialEq, ::prost::Message)]
4097pub struct PublicationTable {
4098    #[prost(message, optional, tag = "1")]
4099    pub relation: ::core::option::Option<RangeVar>,
4100    #[prost(message, optional, boxed, tag = "2")]
4101    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
4102    #[prost(message, repeated, tag = "3")]
4103    pub columns: ::prost::alloc::vec::Vec<Node>,
4104}
4105#[derive(Clone, PartialEq, ::prost::Message)]
4106pub struct PublicationObjSpec {
4107    #[prost(enumeration = "PublicationObjSpecType", tag = "1")]
4108    pub pubobjtype: i32,
4109    #[prost(string, tag = "2")]
4110    pub name: ::prost::alloc::string::String,
4111    #[prost(message, optional, boxed, tag = "3")]
4112    pub pubtable: ::core::option::Option<::prost::alloc::boxed::Box<PublicationTable>>,
4113    #[prost(int32, tag = "4")]
4114    pub location: i32,
4115}
4116#[derive(Clone, PartialEq, ::prost::Message)]
4117pub struct CreatePublicationStmt {
4118    #[prost(string, tag = "1")]
4119    pub pubname: ::prost::alloc::string::String,
4120    #[prost(message, repeated, tag = "2")]
4121    pub options: ::prost::alloc::vec::Vec<Node>,
4122    #[prost(message, repeated, tag = "3")]
4123    pub pubobjects: ::prost::alloc::vec::Vec<Node>,
4124    #[prost(bool, tag = "4")]
4125    pub for_all_tables: bool,
4126}
4127#[derive(Clone, PartialEq, ::prost::Message)]
4128pub struct AlterPublicationStmt {
4129    #[prost(string, tag = "1")]
4130    pub pubname: ::prost::alloc::string::String,
4131    #[prost(message, repeated, tag = "2")]
4132    pub options: ::prost::alloc::vec::Vec<Node>,
4133    #[prost(message, repeated, tag = "3")]
4134    pub pubobjects: ::prost::alloc::vec::Vec<Node>,
4135    #[prost(bool, tag = "4")]
4136    pub for_all_tables: bool,
4137    #[prost(enumeration = "AlterPublicationAction", tag = "5")]
4138    pub action: i32,
4139}
4140#[derive(Clone, PartialEq, ::prost::Message)]
4141pub struct CreateSubscriptionStmt {
4142    #[prost(string, tag = "1")]
4143    pub subname: ::prost::alloc::string::String,
4144    #[prost(string, tag = "2")]
4145    pub conninfo: ::prost::alloc::string::String,
4146    #[prost(message, repeated, tag = "3")]
4147    pub publication: ::prost::alloc::vec::Vec<Node>,
4148    #[prost(message, repeated, tag = "4")]
4149    pub options: ::prost::alloc::vec::Vec<Node>,
4150}
4151#[derive(Clone, PartialEq, ::prost::Message)]
4152pub struct AlterSubscriptionStmt {
4153    #[prost(enumeration = "AlterSubscriptionType", tag = "1")]
4154    pub kind: i32,
4155    #[prost(string, tag = "2")]
4156    pub subname: ::prost::alloc::string::String,
4157    #[prost(string, tag = "3")]
4158    pub conninfo: ::prost::alloc::string::String,
4159    #[prost(message, repeated, tag = "4")]
4160    pub publication: ::prost::alloc::vec::Vec<Node>,
4161    #[prost(message, repeated, tag = "5")]
4162    pub options: ::prost::alloc::vec::Vec<Node>,
4163}
4164#[derive(Clone, PartialEq, ::prost::Message)]
4165pub struct DropSubscriptionStmt {
4166    #[prost(string, tag = "1")]
4167    pub subname: ::prost::alloc::string::String,
4168    #[prost(bool, tag = "2")]
4169    pub missing_ok: bool,
4170    #[prost(enumeration = "DropBehavior", tag = "3")]
4171    pub behavior: i32,
4172}
4173#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4174pub struct ScanToken {
4175    #[prost(int32, tag = "1")]
4176    pub start: i32,
4177    #[prost(int32, tag = "2")]
4178    pub end: i32,
4179    #[prost(enumeration = "Token", tag = "4")]
4180    pub token: i32,
4181    #[prost(enumeration = "KeywordKind", tag = "5")]
4182    pub keyword_kind: i32,
4183}
4184#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4185#[repr(i32)]
4186pub enum QuerySource {
4187    Undefined = 0,
4188    QsrcOriginal = 1,
4189    QsrcParser = 2,
4190    QsrcInsteadRule = 3,
4191    QsrcQualInsteadRule = 4,
4192    QsrcNonInsteadRule = 5,
4193}
4194impl QuerySource {
4195    /// String value of the enum field names used in the ProtoBuf definition.
4196    ///
4197    /// The values are not transformed in any way and thus are considered stable
4198    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4199    pub fn as_str_name(&self) -> &'static str {
4200        match self {
4201            Self::Undefined => "QUERY_SOURCE_UNDEFINED",
4202            Self::QsrcOriginal => "QSRC_ORIGINAL",
4203            Self::QsrcParser => "QSRC_PARSER",
4204            Self::QsrcInsteadRule => "QSRC_INSTEAD_RULE",
4205            Self::QsrcQualInsteadRule => "QSRC_QUAL_INSTEAD_RULE",
4206            Self::QsrcNonInsteadRule => "QSRC_NON_INSTEAD_RULE",
4207        }
4208    }
4209    /// Creates an enum from field names used in the ProtoBuf definition.
4210    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4211        match value {
4212            "QUERY_SOURCE_UNDEFINED" => Some(Self::Undefined),
4213            "QSRC_ORIGINAL" => Some(Self::QsrcOriginal),
4214            "QSRC_PARSER" => Some(Self::QsrcParser),
4215            "QSRC_INSTEAD_RULE" => Some(Self::QsrcInsteadRule),
4216            "QSRC_QUAL_INSTEAD_RULE" => Some(Self::QsrcQualInsteadRule),
4217            "QSRC_NON_INSTEAD_RULE" => Some(Self::QsrcNonInsteadRule),
4218            _ => None,
4219        }
4220    }
4221}
4222#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4223#[repr(i32)]
4224pub enum SortByDir {
4225    Undefined = 0,
4226    SortbyDefault = 1,
4227    SortbyAsc = 2,
4228    SortbyDesc = 3,
4229    SortbyUsing = 4,
4230}
4231impl SortByDir {
4232    /// String value of the enum field names used in the ProtoBuf definition.
4233    ///
4234    /// The values are not transformed in any way and thus are considered stable
4235    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4236    pub fn as_str_name(&self) -> &'static str {
4237        match self {
4238            Self::Undefined => "SORT_BY_DIR_UNDEFINED",
4239            Self::SortbyDefault => "SORTBY_DEFAULT",
4240            Self::SortbyAsc => "SORTBY_ASC",
4241            Self::SortbyDesc => "SORTBY_DESC",
4242            Self::SortbyUsing => "SORTBY_USING",
4243        }
4244    }
4245    /// Creates an enum from field names used in the ProtoBuf definition.
4246    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4247        match value {
4248            "SORT_BY_DIR_UNDEFINED" => Some(Self::Undefined),
4249            "SORTBY_DEFAULT" => Some(Self::SortbyDefault),
4250            "SORTBY_ASC" => Some(Self::SortbyAsc),
4251            "SORTBY_DESC" => Some(Self::SortbyDesc),
4252            "SORTBY_USING" => Some(Self::SortbyUsing),
4253            _ => None,
4254        }
4255    }
4256}
4257#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4258#[repr(i32)]
4259pub enum SortByNulls {
4260    Undefined = 0,
4261    SortbyNullsDefault = 1,
4262    SortbyNullsFirst = 2,
4263    SortbyNullsLast = 3,
4264}
4265impl SortByNulls {
4266    /// String value of the enum field names used in the ProtoBuf definition.
4267    ///
4268    /// The values are not transformed in any way and thus are considered stable
4269    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4270    pub fn as_str_name(&self) -> &'static str {
4271        match self {
4272            Self::Undefined => "SORT_BY_NULLS_UNDEFINED",
4273            Self::SortbyNullsDefault => "SORTBY_NULLS_DEFAULT",
4274            Self::SortbyNullsFirst => "SORTBY_NULLS_FIRST",
4275            Self::SortbyNullsLast => "SORTBY_NULLS_LAST",
4276        }
4277    }
4278    /// Creates an enum from field names used in the ProtoBuf definition.
4279    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4280        match value {
4281            "SORT_BY_NULLS_UNDEFINED" => Some(Self::Undefined),
4282            "SORTBY_NULLS_DEFAULT" => Some(Self::SortbyNullsDefault),
4283            "SORTBY_NULLS_FIRST" => Some(Self::SortbyNullsFirst),
4284            "SORTBY_NULLS_LAST" => Some(Self::SortbyNullsLast),
4285            _ => None,
4286        }
4287    }
4288}
4289#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4290#[repr(i32)]
4291pub enum SetQuantifier {
4292    Undefined = 0,
4293    Default = 1,
4294    All = 2,
4295    Distinct = 3,
4296}
4297impl SetQuantifier {
4298    /// String value of the enum field names used in the ProtoBuf definition.
4299    ///
4300    /// The values are not transformed in any way and thus are considered stable
4301    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4302    pub fn as_str_name(&self) -> &'static str {
4303        match self {
4304            Self::Undefined => "SET_QUANTIFIER_UNDEFINED",
4305            Self::Default => "SET_QUANTIFIER_DEFAULT",
4306            Self::All => "SET_QUANTIFIER_ALL",
4307            Self::Distinct => "SET_QUANTIFIER_DISTINCT",
4308        }
4309    }
4310    /// Creates an enum from field names used in the ProtoBuf definition.
4311    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4312        match value {
4313            "SET_QUANTIFIER_UNDEFINED" => Some(Self::Undefined),
4314            "SET_QUANTIFIER_DEFAULT" => Some(Self::Default),
4315            "SET_QUANTIFIER_ALL" => Some(Self::All),
4316            "SET_QUANTIFIER_DISTINCT" => Some(Self::Distinct),
4317            _ => None,
4318        }
4319    }
4320}
4321#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4322#[repr(i32)]
4323pub enum AExprKind {
4324    Undefined = 0,
4325    AexprOp = 1,
4326    AexprOpAny = 2,
4327    AexprOpAll = 3,
4328    AexprDistinct = 4,
4329    AexprNotDistinct = 5,
4330    AexprNullif = 6,
4331    AexprIn = 7,
4332    AexprLike = 8,
4333    AexprIlike = 9,
4334    AexprSimilar = 10,
4335    AexprBetween = 11,
4336    AexprNotBetween = 12,
4337    AexprBetweenSym = 13,
4338    AexprNotBetweenSym = 14,
4339}
4340impl AExprKind {
4341    /// String value of the enum field names used in the ProtoBuf definition.
4342    ///
4343    /// The values are not transformed in any way and thus are considered stable
4344    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4345    pub fn as_str_name(&self) -> &'static str {
4346        match self {
4347            Self::Undefined => "A_EXPR_KIND_UNDEFINED",
4348            Self::AexprOp => "AEXPR_OP",
4349            Self::AexprOpAny => "AEXPR_OP_ANY",
4350            Self::AexprOpAll => "AEXPR_OP_ALL",
4351            Self::AexprDistinct => "AEXPR_DISTINCT",
4352            Self::AexprNotDistinct => "AEXPR_NOT_DISTINCT",
4353            Self::AexprNullif => "AEXPR_NULLIF",
4354            Self::AexprIn => "AEXPR_IN",
4355            Self::AexprLike => "AEXPR_LIKE",
4356            Self::AexprIlike => "AEXPR_ILIKE",
4357            Self::AexprSimilar => "AEXPR_SIMILAR",
4358            Self::AexprBetween => "AEXPR_BETWEEN",
4359            Self::AexprNotBetween => "AEXPR_NOT_BETWEEN",
4360            Self::AexprBetweenSym => "AEXPR_BETWEEN_SYM",
4361            Self::AexprNotBetweenSym => "AEXPR_NOT_BETWEEN_SYM",
4362        }
4363    }
4364    /// Creates an enum from field names used in the ProtoBuf definition.
4365    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4366        match value {
4367            "A_EXPR_KIND_UNDEFINED" => Some(Self::Undefined),
4368            "AEXPR_OP" => Some(Self::AexprOp),
4369            "AEXPR_OP_ANY" => Some(Self::AexprOpAny),
4370            "AEXPR_OP_ALL" => Some(Self::AexprOpAll),
4371            "AEXPR_DISTINCT" => Some(Self::AexprDistinct),
4372            "AEXPR_NOT_DISTINCT" => Some(Self::AexprNotDistinct),
4373            "AEXPR_NULLIF" => Some(Self::AexprNullif),
4374            "AEXPR_IN" => Some(Self::AexprIn),
4375            "AEXPR_LIKE" => Some(Self::AexprLike),
4376            "AEXPR_ILIKE" => Some(Self::AexprIlike),
4377            "AEXPR_SIMILAR" => Some(Self::AexprSimilar),
4378            "AEXPR_BETWEEN" => Some(Self::AexprBetween),
4379            "AEXPR_NOT_BETWEEN" => Some(Self::AexprNotBetween),
4380            "AEXPR_BETWEEN_SYM" => Some(Self::AexprBetweenSym),
4381            "AEXPR_NOT_BETWEEN_SYM" => Some(Self::AexprNotBetweenSym),
4382            _ => None,
4383        }
4384    }
4385}
4386#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4387#[repr(i32)]
4388pub enum RoleSpecType {
4389    Undefined = 0,
4390    RolespecCstring = 1,
4391    RolespecCurrentRole = 2,
4392    RolespecCurrentUser = 3,
4393    RolespecSessionUser = 4,
4394    RolespecPublic = 5,
4395}
4396impl RoleSpecType {
4397    /// String value of the enum field names used in the ProtoBuf definition.
4398    ///
4399    /// The values are not transformed in any way and thus are considered stable
4400    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4401    pub fn as_str_name(&self) -> &'static str {
4402        match self {
4403            Self::Undefined => "ROLE_SPEC_TYPE_UNDEFINED",
4404            Self::RolespecCstring => "ROLESPEC_CSTRING",
4405            Self::RolespecCurrentRole => "ROLESPEC_CURRENT_ROLE",
4406            Self::RolespecCurrentUser => "ROLESPEC_CURRENT_USER",
4407            Self::RolespecSessionUser => "ROLESPEC_SESSION_USER",
4408            Self::RolespecPublic => "ROLESPEC_PUBLIC",
4409        }
4410    }
4411    /// Creates an enum from field names used in the ProtoBuf definition.
4412    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4413        match value {
4414            "ROLE_SPEC_TYPE_UNDEFINED" => Some(Self::Undefined),
4415            "ROLESPEC_CSTRING" => Some(Self::RolespecCstring),
4416            "ROLESPEC_CURRENT_ROLE" => Some(Self::RolespecCurrentRole),
4417            "ROLESPEC_CURRENT_USER" => Some(Self::RolespecCurrentUser),
4418            "ROLESPEC_SESSION_USER" => Some(Self::RolespecSessionUser),
4419            "ROLESPEC_PUBLIC" => Some(Self::RolespecPublic),
4420            _ => None,
4421        }
4422    }
4423}
4424#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4425#[repr(i32)]
4426pub enum TableLikeOption {
4427    Undefined = 0,
4428    CreateTableLikeComments = 1,
4429    CreateTableLikeCompression = 2,
4430    CreateTableLikeConstraints = 3,
4431    CreateTableLikeDefaults = 4,
4432    CreateTableLikeGenerated = 5,
4433    CreateTableLikeIdentity = 6,
4434    CreateTableLikeIndexes = 7,
4435    CreateTableLikeStatistics = 8,
4436    CreateTableLikeStorage = 9,
4437    CreateTableLikeAll = 10,
4438}
4439impl TableLikeOption {
4440    /// String value of the enum field names used in the ProtoBuf definition.
4441    ///
4442    /// The values are not transformed in any way and thus are considered stable
4443    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4444    pub fn as_str_name(&self) -> &'static str {
4445        match self {
4446            Self::Undefined => "TABLE_LIKE_OPTION_UNDEFINED",
4447            Self::CreateTableLikeComments => "CREATE_TABLE_LIKE_COMMENTS",
4448            Self::CreateTableLikeCompression => "CREATE_TABLE_LIKE_COMPRESSION",
4449            Self::CreateTableLikeConstraints => "CREATE_TABLE_LIKE_CONSTRAINTS",
4450            Self::CreateTableLikeDefaults => "CREATE_TABLE_LIKE_DEFAULTS",
4451            Self::CreateTableLikeGenerated => "CREATE_TABLE_LIKE_GENERATED",
4452            Self::CreateTableLikeIdentity => "CREATE_TABLE_LIKE_IDENTITY",
4453            Self::CreateTableLikeIndexes => "CREATE_TABLE_LIKE_INDEXES",
4454            Self::CreateTableLikeStatistics => "CREATE_TABLE_LIKE_STATISTICS",
4455            Self::CreateTableLikeStorage => "CREATE_TABLE_LIKE_STORAGE",
4456            Self::CreateTableLikeAll => "CREATE_TABLE_LIKE_ALL",
4457        }
4458    }
4459    /// Creates an enum from field names used in the ProtoBuf definition.
4460    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4461        match value {
4462            "TABLE_LIKE_OPTION_UNDEFINED" => Some(Self::Undefined),
4463            "CREATE_TABLE_LIKE_COMMENTS" => Some(Self::CreateTableLikeComments),
4464            "CREATE_TABLE_LIKE_COMPRESSION" => Some(Self::CreateTableLikeCompression),
4465            "CREATE_TABLE_LIKE_CONSTRAINTS" => Some(Self::CreateTableLikeConstraints),
4466            "CREATE_TABLE_LIKE_DEFAULTS" => Some(Self::CreateTableLikeDefaults),
4467            "CREATE_TABLE_LIKE_GENERATED" => Some(Self::CreateTableLikeGenerated),
4468            "CREATE_TABLE_LIKE_IDENTITY" => Some(Self::CreateTableLikeIdentity),
4469            "CREATE_TABLE_LIKE_INDEXES" => Some(Self::CreateTableLikeIndexes),
4470            "CREATE_TABLE_LIKE_STATISTICS" => Some(Self::CreateTableLikeStatistics),
4471            "CREATE_TABLE_LIKE_STORAGE" => Some(Self::CreateTableLikeStorage),
4472            "CREATE_TABLE_LIKE_ALL" => Some(Self::CreateTableLikeAll),
4473            _ => None,
4474        }
4475    }
4476}
4477#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4478#[repr(i32)]
4479pub enum DefElemAction {
4480    Undefined = 0,
4481    DefelemUnspec = 1,
4482    DefelemSet = 2,
4483    DefelemAdd = 3,
4484    DefelemDrop = 4,
4485}
4486impl DefElemAction {
4487    /// String value of the enum field names used in the ProtoBuf definition.
4488    ///
4489    /// The values are not transformed in any way and thus are considered stable
4490    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4491    pub fn as_str_name(&self) -> &'static str {
4492        match self {
4493            Self::Undefined => "DEF_ELEM_ACTION_UNDEFINED",
4494            Self::DefelemUnspec => "DEFELEM_UNSPEC",
4495            Self::DefelemSet => "DEFELEM_SET",
4496            Self::DefelemAdd => "DEFELEM_ADD",
4497            Self::DefelemDrop => "DEFELEM_DROP",
4498        }
4499    }
4500    /// Creates an enum from field names used in the ProtoBuf definition.
4501    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4502        match value {
4503            "DEF_ELEM_ACTION_UNDEFINED" => Some(Self::Undefined),
4504            "DEFELEM_UNSPEC" => Some(Self::DefelemUnspec),
4505            "DEFELEM_SET" => Some(Self::DefelemSet),
4506            "DEFELEM_ADD" => Some(Self::DefelemAdd),
4507            "DEFELEM_DROP" => Some(Self::DefelemDrop),
4508            _ => None,
4509        }
4510    }
4511}
4512#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4513#[repr(i32)]
4514pub enum PartitionStrategy {
4515    Undefined = 0,
4516    List = 1,
4517    Range = 2,
4518    Hash = 3,
4519}
4520impl PartitionStrategy {
4521    /// String value of the enum field names used in the ProtoBuf definition.
4522    ///
4523    /// The values are not transformed in any way and thus are considered stable
4524    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4525    pub fn as_str_name(&self) -> &'static str {
4526        match self {
4527            Self::Undefined => "PARTITION_STRATEGY_UNDEFINED",
4528            Self::List => "PARTITION_STRATEGY_LIST",
4529            Self::Range => "PARTITION_STRATEGY_RANGE",
4530            Self::Hash => "PARTITION_STRATEGY_HASH",
4531        }
4532    }
4533    /// Creates an enum from field names used in the ProtoBuf definition.
4534    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4535        match value {
4536            "PARTITION_STRATEGY_UNDEFINED" => Some(Self::Undefined),
4537            "PARTITION_STRATEGY_LIST" => Some(Self::List),
4538            "PARTITION_STRATEGY_RANGE" => Some(Self::Range),
4539            "PARTITION_STRATEGY_HASH" => Some(Self::Hash),
4540            _ => None,
4541        }
4542    }
4543}
4544#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4545#[repr(i32)]
4546pub enum PartitionRangeDatumKind {
4547    Undefined = 0,
4548    PartitionRangeDatumMinvalue = 1,
4549    PartitionRangeDatumValue = 2,
4550    PartitionRangeDatumMaxvalue = 3,
4551}
4552impl PartitionRangeDatumKind {
4553    /// String value of the enum field names used in the ProtoBuf definition.
4554    ///
4555    /// The values are not transformed in any way and thus are considered stable
4556    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4557    pub fn as_str_name(&self) -> &'static str {
4558        match self {
4559            Self::Undefined => "PARTITION_RANGE_DATUM_KIND_UNDEFINED",
4560            Self::PartitionRangeDatumMinvalue => "PARTITION_RANGE_DATUM_MINVALUE",
4561            Self::PartitionRangeDatumValue => "PARTITION_RANGE_DATUM_VALUE",
4562            Self::PartitionRangeDatumMaxvalue => "PARTITION_RANGE_DATUM_MAXVALUE",
4563        }
4564    }
4565    /// Creates an enum from field names used in the ProtoBuf definition.
4566    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4567        match value {
4568            "PARTITION_RANGE_DATUM_KIND_UNDEFINED" => Some(Self::Undefined),
4569            "PARTITION_RANGE_DATUM_MINVALUE" => Some(Self::PartitionRangeDatumMinvalue),
4570            "PARTITION_RANGE_DATUM_VALUE" => Some(Self::PartitionRangeDatumValue),
4571            "PARTITION_RANGE_DATUM_MAXVALUE" => Some(Self::PartitionRangeDatumMaxvalue),
4572            _ => None,
4573        }
4574    }
4575}
4576#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4577#[repr(i32)]
4578pub enum RteKind {
4579    RtekindUndefined = 0,
4580    RteRelation = 1,
4581    RteSubquery = 2,
4582    RteJoin = 3,
4583    RteFunction = 4,
4584    RteTablefunc = 5,
4585    RteValues = 6,
4586    RteCte = 7,
4587    RteNamedtuplestore = 8,
4588    RteResult = 9,
4589}
4590impl RteKind {
4591    /// String value of the enum field names used in the ProtoBuf definition.
4592    ///
4593    /// The values are not transformed in any way and thus are considered stable
4594    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4595    pub fn as_str_name(&self) -> &'static str {
4596        match self {
4597            Self::RtekindUndefined => "RTEKIND_UNDEFINED",
4598            Self::RteRelation => "RTE_RELATION",
4599            Self::RteSubquery => "RTE_SUBQUERY",
4600            Self::RteJoin => "RTE_JOIN",
4601            Self::RteFunction => "RTE_FUNCTION",
4602            Self::RteTablefunc => "RTE_TABLEFUNC",
4603            Self::RteValues => "RTE_VALUES",
4604            Self::RteCte => "RTE_CTE",
4605            Self::RteNamedtuplestore => "RTE_NAMEDTUPLESTORE",
4606            Self::RteResult => "RTE_RESULT",
4607        }
4608    }
4609    /// Creates an enum from field names used in the ProtoBuf definition.
4610    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4611        match value {
4612            "RTEKIND_UNDEFINED" => Some(Self::RtekindUndefined),
4613            "RTE_RELATION" => Some(Self::RteRelation),
4614            "RTE_SUBQUERY" => Some(Self::RteSubquery),
4615            "RTE_JOIN" => Some(Self::RteJoin),
4616            "RTE_FUNCTION" => Some(Self::RteFunction),
4617            "RTE_TABLEFUNC" => Some(Self::RteTablefunc),
4618            "RTE_VALUES" => Some(Self::RteValues),
4619            "RTE_CTE" => Some(Self::RteCte),
4620            "RTE_NAMEDTUPLESTORE" => Some(Self::RteNamedtuplestore),
4621            "RTE_RESULT" => Some(Self::RteResult),
4622            _ => None,
4623        }
4624    }
4625}
4626#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4627#[repr(i32)]
4628pub enum WcoKind {
4629    WcokindUndefined = 0,
4630    WcoViewCheck = 1,
4631    WcoRlsInsertCheck = 2,
4632    WcoRlsUpdateCheck = 3,
4633    WcoRlsConflictCheck = 4,
4634    WcoRlsMergeUpdateCheck = 5,
4635    WcoRlsMergeDeleteCheck = 6,
4636}
4637impl WcoKind {
4638    /// String value of the enum field names used in the ProtoBuf definition.
4639    ///
4640    /// The values are not transformed in any way and thus are considered stable
4641    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4642    pub fn as_str_name(&self) -> &'static str {
4643        match self {
4644            Self::WcokindUndefined => "WCOKIND_UNDEFINED",
4645            Self::WcoViewCheck => "WCO_VIEW_CHECK",
4646            Self::WcoRlsInsertCheck => "WCO_RLS_INSERT_CHECK",
4647            Self::WcoRlsUpdateCheck => "WCO_RLS_UPDATE_CHECK",
4648            Self::WcoRlsConflictCheck => "WCO_RLS_CONFLICT_CHECK",
4649            Self::WcoRlsMergeUpdateCheck => "WCO_RLS_MERGE_UPDATE_CHECK",
4650            Self::WcoRlsMergeDeleteCheck => "WCO_RLS_MERGE_DELETE_CHECK",
4651        }
4652    }
4653    /// Creates an enum from field names used in the ProtoBuf definition.
4654    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4655        match value {
4656            "WCOKIND_UNDEFINED" => Some(Self::WcokindUndefined),
4657            "WCO_VIEW_CHECK" => Some(Self::WcoViewCheck),
4658            "WCO_RLS_INSERT_CHECK" => Some(Self::WcoRlsInsertCheck),
4659            "WCO_RLS_UPDATE_CHECK" => Some(Self::WcoRlsUpdateCheck),
4660            "WCO_RLS_CONFLICT_CHECK" => Some(Self::WcoRlsConflictCheck),
4661            "WCO_RLS_MERGE_UPDATE_CHECK" => Some(Self::WcoRlsMergeUpdateCheck),
4662            "WCO_RLS_MERGE_DELETE_CHECK" => Some(Self::WcoRlsMergeDeleteCheck),
4663            _ => None,
4664        }
4665    }
4666}
4667#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4668#[repr(i32)]
4669pub enum GroupingSetKind {
4670    Undefined = 0,
4671    GroupingSetEmpty = 1,
4672    GroupingSetSimple = 2,
4673    GroupingSetRollup = 3,
4674    GroupingSetCube = 4,
4675    GroupingSetSets = 5,
4676}
4677impl GroupingSetKind {
4678    /// String value of the enum field names used in the ProtoBuf definition.
4679    ///
4680    /// The values are not transformed in any way and thus are considered stable
4681    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4682    pub fn as_str_name(&self) -> &'static str {
4683        match self {
4684            Self::Undefined => "GROUPING_SET_KIND_UNDEFINED",
4685            Self::GroupingSetEmpty => "GROUPING_SET_EMPTY",
4686            Self::GroupingSetSimple => "GROUPING_SET_SIMPLE",
4687            Self::GroupingSetRollup => "GROUPING_SET_ROLLUP",
4688            Self::GroupingSetCube => "GROUPING_SET_CUBE",
4689            Self::GroupingSetSets => "GROUPING_SET_SETS",
4690        }
4691    }
4692    /// Creates an enum from field names used in the ProtoBuf definition.
4693    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4694        match value {
4695            "GROUPING_SET_KIND_UNDEFINED" => Some(Self::Undefined),
4696            "GROUPING_SET_EMPTY" => Some(Self::GroupingSetEmpty),
4697            "GROUPING_SET_SIMPLE" => Some(Self::GroupingSetSimple),
4698            "GROUPING_SET_ROLLUP" => Some(Self::GroupingSetRollup),
4699            "GROUPING_SET_CUBE" => Some(Self::GroupingSetCube),
4700            "GROUPING_SET_SETS" => Some(Self::GroupingSetSets),
4701            _ => None,
4702        }
4703    }
4704}
4705#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4706#[repr(i32)]
4707pub enum CteMaterialize {
4708    CtematerializeUndefined = 0,
4709    Default = 1,
4710    Always = 2,
4711    Never = 3,
4712}
4713impl CteMaterialize {
4714    /// String value of the enum field names used in the ProtoBuf definition.
4715    ///
4716    /// The values are not transformed in any way and thus are considered stable
4717    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4718    pub fn as_str_name(&self) -> &'static str {
4719        match self {
4720            Self::CtematerializeUndefined => "CTEMATERIALIZE_UNDEFINED",
4721            Self::Default => "CTEMaterializeDefault",
4722            Self::Always => "CTEMaterializeAlways",
4723            Self::Never => "CTEMaterializeNever",
4724        }
4725    }
4726    /// Creates an enum from field names used in the ProtoBuf definition.
4727    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4728        match value {
4729            "CTEMATERIALIZE_UNDEFINED" => Some(Self::CtematerializeUndefined),
4730            "CTEMaterializeDefault" => Some(Self::Default),
4731            "CTEMaterializeAlways" => Some(Self::Always),
4732            "CTEMaterializeNever" => Some(Self::Never),
4733            _ => None,
4734        }
4735    }
4736}
4737#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4738#[repr(i32)]
4739pub enum JsonQuotes {
4740    Undefined = 0,
4741    JsQuotesUnspec = 1,
4742    JsQuotesKeep = 2,
4743    JsQuotesOmit = 3,
4744}
4745impl JsonQuotes {
4746    /// String value of the enum field names used in the ProtoBuf definition.
4747    ///
4748    /// The values are not transformed in any way and thus are considered stable
4749    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4750    pub fn as_str_name(&self) -> &'static str {
4751        match self {
4752            Self::Undefined => "JSON_QUOTES_UNDEFINED",
4753            Self::JsQuotesUnspec => "JS_QUOTES_UNSPEC",
4754            Self::JsQuotesKeep => "JS_QUOTES_KEEP",
4755            Self::JsQuotesOmit => "JS_QUOTES_OMIT",
4756        }
4757    }
4758    /// Creates an enum from field names used in the ProtoBuf definition.
4759    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4760        match value {
4761            "JSON_QUOTES_UNDEFINED" => Some(Self::Undefined),
4762            "JS_QUOTES_UNSPEC" => Some(Self::JsQuotesUnspec),
4763            "JS_QUOTES_KEEP" => Some(Self::JsQuotesKeep),
4764            "JS_QUOTES_OMIT" => Some(Self::JsQuotesOmit),
4765            _ => None,
4766        }
4767    }
4768}
4769#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4770#[repr(i32)]
4771pub enum JsonTableColumnType {
4772    Undefined = 0,
4773    JtcForOrdinality = 1,
4774    JtcRegular = 2,
4775    JtcExists = 3,
4776    JtcFormatted = 4,
4777    JtcNested = 5,
4778}
4779impl JsonTableColumnType {
4780    /// String value of the enum field names used in the ProtoBuf definition.
4781    ///
4782    /// The values are not transformed in any way and thus are considered stable
4783    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4784    pub fn as_str_name(&self) -> &'static str {
4785        match self {
4786            Self::Undefined => "JSON_TABLE_COLUMN_TYPE_UNDEFINED",
4787            Self::JtcForOrdinality => "JTC_FOR_ORDINALITY",
4788            Self::JtcRegular => "JTC_REGULAR",
4789            Self::JtcExists => "JTC_EXISTS",
4790            Self::JtcFormatted => "JTC_FORMATTED",
4791            Self::JtcNested => "JTC_NESTED",
4792        }
4793    }
4794    /// Creates an enum from field names used in the ProtoBuf definition.
4795    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4796        match value {
4797            "JSON_TABLE_COLUMN_TYPE_UNDEFINED" => Some(Self::Undefined),
4798            "JTC_FOR_ORDINALITY" => Some(Self::JtcForOrdinality),
4799            "JTC_REGULAR" => Some(Self::JtcRegular),
4800            "JTC_EXISTS" => Some(Self::JtcExists),
4801            "JTC_FORMATTED" => Some(Self::JtcFormatted),
4802            "JTC_NESTED" => Some(Self::JtcNested),
4803            _ => None,
4804        }
4805    }
4806}
4807#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4808#[repr(i32)]
4809pub enum SetOperation {
4810    Undefined = 0,
4811    SetopNone = 1,
4812    SetopUnion = 2,
4813    SetopIntersect = 3,
4814    SetopExcept = 4,
4815}
4816impl SetOperation {
4817    /// String value of the enum field names used in the ProtoBuf definition.
4818    ///
4819    /// The values are not transformed in any way and thus are considered stable
4820    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4821    pub fn as_str_name(&self) -> &'static str {
4822        match self {
4823            Self::Undefined => "SET_OPERATION_UNDEFINED",
4824            Self::SetopNone => "SETOP_NONE",
4825            Self::SetopUnion => "SETOP_UNION",
4826            Self::SetopIntersect => "SETOP_INTERSECT",
4827            Self::SetopExcept => "SETOP_EXCEPT",
4828        }
4829    }
4830    /// Creates an enum from field names used in the ProtoBuf definition.
4831    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4832        match value {
4833            "SET_OPERATION_UNDEFINED" => Some(Self::Undefined),
4834            "SETOP_NONE" => Some(Self::SetopNone),
4835            "SETOP_UNION" => Some(Self::SetopUnion),
4836            "SETOP_INTERSECT" => Some(Self::SetopIntersect),
4837            "SETOP_EXCEPT" => Some(Self::SetopExcept),
4838            _ => None,
4839        }
4840    }
4841}
4842#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4843#[repr(i32)]
4844pub enum ObjectType {
4845    Undefined = 0,
4846    ObjectAccessMethod = 1,
4847    ObjectAggregate = 2,
4848    ObjectAmop = 3,
4849    ObjectAmproc = 4,
4850    ObjectAttribute = 5,
4851    ObjectCast = 6,
4852    ObjectColumn = 7,
4853    ObjectCollation = 8,
4854    ObjectConversion = 9,
4855    ObjectDatabase = 10,
4856    ObjectDefault = 11,
4857    ObjectDefacl = 12,
4858    ObjectDomain = 13,
4859    ObjectDomconstraint = 14,
4860    ObjectEventTrigger = 15,
4861    ObjectExtension = 16,
4862    ObjectFdw = 17,
4863    ObjectForeignServer = 18,
4864    ObjectForeignTable = 19,
4865    ObjectFunction = 20,
4866    ObjectIndex = 21,
4867    ObjectLanguage = 22,
4868    ObjectLargeobject = 23,
4869    ObjectMatview = 24,
4870    ObjectOpclass = 25,
4871    ObjectOperator = 26,
4872    ObjectOpfamily = 27,
4873    ObjectParameterAcl = 28,
4874    ObjectPolicy = 29,
4875    ObjectProcedure = 30,
4876    ObjectPublication = 31,
4877    ObjectPublicationNamespace = 32,
4878    ObjectPublicationRel = 33,
4879    ObjectRole = 34,
4880    ObjectRoutine = 35,
4881    ObjectRule = 36,
4882    ObjectSchema = 37,
4883    ObjectSequence = 38,
4884    ObjectSubscription = 39,
4885    ObjectStatisticExt = 40,
4886    ObjectTabconstraint = 41,
4887    ObjectTable = 42,
4888    ObjectTablespace = 43,
4889    ObjectTransform = 44,
4890    ObjectTrigger = 45,
4891    ObjectTsconfiguration = 46,
4892    ObjectTsdictionary = 47,
4893    ObjectTsparser = 48,
4894    ObjectTstemplate = 49,
4895    ObjectType = 50,
4896    ObjectUserMapping = 51,
4897    ObjectView = 52,
4898}
4899impl ObjectType {
4900    /// String value of the enum field names used in the ProtoBuf definition.
4901    ///
4902    /// The values are not transformed in any way and thus are considered stable
4903    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4904    pub fn as_str_name(&self) -> &'static str {
4905        match self {
4906            Self::Undefined => "OBJECT_TYPE_UNDEFINED",
4907            Self::ObjectAccessMethod => "OBJECT_ACCESS_METHOD",
4908            Self::ObjectAggregate => "OBJECT_AGGREGATE",
4909            Self::ObjectAmop => "OBJECT_AMOP",
4910            Self::ObjectAmproc => "OBJECT_AMPROC",
4911            Self::ObjectAttribute => "OBJECT_ATTRIBUTE",
4912            Self::ObjectCast => "OBJECT_CAST",
4913            Self::ObjectColumn => "OBJECT_COLUMN",
4914            Self::ObjectCollation => "OBJECT_COLLATION",
4915            Self::ObjectConversion => "OBJECT_CONVERSION",
4916            Self::ObjectDatabase => "OBJECT_DATABASE",
4917            Self::ObjectDefault => "OBJECT_DEFAULT",
4918            Self::ObjectDefacl => "OBJECT_DEFACL",
4919            Self::ObjectDomain => "OBJECT_DOMAIN",
4920            Self::ObjectDomconstraint => "OBJECT_DOMCONSTRAINT",
4921            Self::ObjectEventTrigger => "OBJECT_EVENT_TRIGGER",
4922            Self::ObjectExtension => "OBJECT_EXTENSION",
4923            Self::ObjectFdw => "OBJECT_FDW",
4924            Self::ObjectForeignServer => "OBJECT_FOREIGN_SERVER",
4925            Self::ObjectForeignTable => "OBJECT_FOREIGN_TABLE",
4926            Self::ObjectFunction => "OBJECT_FUNCTION",
4927            Self::ObjectIndex => "OBJECT_INDEX",
4928            Self::ObjectLanguage => "OBJECT_LANGUAGE",
4929            Self::ObjectLargeobject => "OBJECT_LARGEOBJECT",
4930            Self::ObjectMatview => "OBJECT_MATVIEW",
4931            Self::ObjectOpclass => "OBJECT_OPCLASS",
4932            Self::ObjectOperator => "OBJECT_OPERATOR",
4933            Self::ObjectOpfamily => "OBJECT_OPFAMILY",
4934            Self::ObjectParameterAcl => "OBJECT_PARAMETER_ACL",
4935            Self::ObjectPolicy => "OBJECT_POLICY",
4936            Self::ObjectProcedure => "OBJECT_PROCEDURE",
4937            Self::ObjectPublication => "OBJECT_PUBLICATION",
4938            Self::ObjectPublicationNamespace => "OBJECT_PUBLICATION_NAMESPACE",
4939            Self::ObjectPublicationRel => "OBJECT_PUBLICATION_REL",
4940            Self::ObjectRole => "OBJECT_ROLE",
4941            Self::ObjectRoutine => "OBJECT_ROUTINE",
4942            Self::ObjectRule => "OBJECT_RULE",
4943            Self::ObjectSchema => "OBJECT_SCHEMA",
4944            Self::ObjectSequence => "OBJECT_SEQUENCE",
4945            Self::ObjectSubscription => "OBJECT_SUBSCRIPTION",
4946            Self::ObjectStatisticExt => "OBJECT_STATISTIC_EXT",
4947            Self::ObjectTabconstraint => "OBJECT_TABCONSTRAINT",
4948            Self::ObjectTable => "OBJECT_TABLE",
4949            Self::ObjectTablespace => "OBJECT_TABLESPACE",
4950            Self::ObjectTransform => "OBJECT_TRANSFORM",
4951            Self::ObjectTrigger => "OBJECT_TRIGGER",
4952            Self::ObjectTsconfiguration => "OBJECT_TSCONFIGURATION",
4953            Self::ObjectTsdictionary => "OBJECT_TSDICTIONARY",
4954            Self::ObjectTsparser => "OBJECT_TSPARSER",
4955            Self::ObjectTstemplate => "OBJECT_TSTEMPLATE",
4956            Self::ObjectType => "OBJECT_TYPE",
4957            Self::ObjectUserMapping => "OBJECT_USER_MAPPING",
4958            Self::ObjectView => "OBJECT_VIEW",
4959        }
4960    }
4961    /// Creates an enum from field names used in the ProtoBuf definition.
4962    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4963        match value {
4964            "OBJECT_TYPE_UNDEFINED" => Some(Self::Undefined),
4965            "OBJECT_ACCESS_METHOD" => Some(Self::ObjectAccessMethod),
4966            "OBJECT_AGGREGATE" => Some(Self::ObjectAggregate),
4967            "OBJECT_AMOP" => Some(Self::ObjectAmop),
4968            "OBJECT_AMPROC" => Some(Self::ObjectAmproc),
4969            "OBJECT_ATTRIBUTE" => Some(Self::ObjectAttribute),
4970            "OBJECT_CAST" => Some(Self::ObjectCast),
4971            "OBJECT_COLUMN" => Some(Self::ObjectColumn),
4972            "OBJECT_COLLATION" => Some(Self::ObjectCollation),
4973            "OBJECT_CONVERSION" => Some(Self::ObjectConversion),
4974            "OBJECT_DATABASE" => Some(Self::ObjectDatabase),
4975            "OBJECT_DEFAULT" => Some(Self::ObjectDefault),
4976            "OBJECT_DEFACL" => Some(Self::ObjectDefacl),
4977            "OBJECT_DOMAIN" => Some(Self::ObjectDomain),
4978            "OBJECT_DOMCONSTRAINT" => Some(Self::ObjectDomconstraint),
4979            "OBJECT_EVENT_TRIGGER" => Some(Self::ObjectEventTrigger),
4980            "OBJECT_EXTENSION" => Some(Self::ObjectExtension),
4981            "OBJECT_FDW" => Some(Self::ObjectFdw),
4982            "OBJECT_FOREIGN_SERVER" => Some(Self::ObjectForeignServer),
4983            "OBJECT_FOREIGN_TABLE" => Some(Self::ObjectForeignTable),
4984            "OBJECT_FUNCTION" => Some(Self::ObjectFunction),
4985            "OBJECT_INDEX" => Some(Self::ObjectIndex),
4986            "OBJECT_LANGUAGE" => Some(Self::ObjectLanguage),
4987            "OBJECT_LARGEOBJECT" => Some(Self::ObjectLargeobject),
4988            "OBJECT_MATVIEW" => Some(Self::ObjectMatview),
4989            "OBJECT_OPCLASS" => Some(Self::ObjectOpclass),
4990            "OBJECT_OPERATOR" => Some(Self::ObjectOperator),
4991            "OBJECT_OPFAMILY" => Some(Self::ObjectOpfamily),
4992            "OBJECT_PARAMETER_ACL" => Some(Self::ObjectParameterAcl),
4993            "OBJECT_POLICY" => Some(Self::ObjectPolicy),
4994            "OBJECT_PROCEDURE" => Some(Self::ObjectProcedure),
4995            "OBJECT_PUBLICATION" => Some(Self::ObjectPublication),
4996            "OBJECT_PUBLICATION_NAMESPACE" => Some(Self::ObjectPublicationNamespace),
4997            "OBJECT_PUBLICATION_REL" => Some(Self::ObjectPublicationRel),
4998            "OBJECT_ROLE" => Some(Self::ObjectRole),
4999            "OBJECT_ROUTINE" => Some(Self::ObjectRoutine),
5000            "OBJECT_RULE" => Some(Self::ObjectRule),
5001            "OBJECT_SCHEMA" => Some(Self::ObjectSchema),
5002            "OBJECT_SEQUENCE" => Some(Self::ObjectSequence),
5003            "OBJECT_SUBSCRIPTION" => Some(Self::ObjectSubscription),
5004            "OBJECT_STATISTIC_EXT" => Some(Self::ObjectStatisticExt),
5005            "OBJECT_TABCONSTRAINT" => Some(Self::ObjectTabconstraint),
5006            "OBJECT_TABLE" => Some(Self::ObjectTable),
5007            "OBJECT_TABLESPACE" => Some(Self::ObjectTablespace),
5008            "OBJECT_TRANSFORM" => Some(Self::ObjectTransform),
5009            "OBJECT_TRIGGER" => Some(Self::ObjectTrigger),
5010            "OBJECT_TSCONFIGURATION" => Some(Self::ObjectTsconfiguration),
5011            "OBJECT_TSDICTIONARY" => Some(Self::ObjectTsdictionary),
5012            "OBJECT_TSPARSER" => Some(Self::ObjectTsparser),
5013            "OBJECT_TSTEMPLATE" => Some(Self::ObjectTstemplate),
5014            "OBJECT_TYPE" => Some(Self::ObjectType),
5015            "OBJECT_USER_MAPPING" => Some(Self::ObjectUserMapping),
5016            "OBJECT_VIEW" => Some(Self::ObjectView),
5017            _ => None,
5018        }
5019    }
5020}
5021#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5022#[repr(i32)]
5023pub enum DropBehavior {
5024    Undefined = 0,
5025    DropRestrict = 1,
5026    DropCascade = 2,
5027}
5028impl DropBehavior {
5029    /// String value of the enum field names used in the ProtoBuf definition.
5030    ///
5031    /// The values are not transformed in any way and thus are considered stable
5032    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5033    pub fn as_str_name(&self) -> &'static str {
5034        match self {
5035            Self::Undefined => "DROP_BEHAVIOR_UNDEFINED",
5036            Self::DropRestrict => "DROP_RESTRICT",
5037            Self::DropCascade => "DROP_CASCADE",
5038        }
5039    }
5040    /// Creates an enum from field names used in the ProtoBuf definition.
5041    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5042        match value {
5043            "DROP_BEHAVIOR_UNDEFINED" => Some(Self::Undefined),
5044            "DROP_RESTRICT" => Some(Self::DropRestrict),
5045            "DROP_CASCADE" => Some(Self::DropCascade),
5046            _ => None,
5047        }
5048    }
5049}
5050#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5051#[repr(i32)]
5052pub enum AlterTableType {
5053    Undefined = 0,
5054    AtAddColumn = 1,
5055    AtAddColumnToView = 2,
5056    AtColumnDefault = 3,
5057    AtCookedColumnDefault = 4,
5058    AtDropNotNull = 5,
5059    AtSetNotNull = 6,
5060    AtSetExpression = 7,
5061    AtDropExpression = 8,
5062    AtCheckNotNull = 9,
5063    AtSetStatistics = 10,
5064    AtSetOptions = 11,
5065    AtResetOptions = 12,
5066    AtSetStorage = 13,
5067    AtSetCompression = 14,
5068    AtDropColumn = 15,
5069    AtAddIndex = 16,
5070    AtReAddIndex = 17,
5071    AtAddConstraint = 18,
5072    AtReAddConstraint = 19,
5073    AtReAddDomainConstraint = 20,
5074    AtAlterConstraint = 21,
5075    AtValidateConstraint = 22,
5076    AtAddIndexConstraint = 23,
5077    AtDropConstraint = 24,
5078    AtReAddComment = 25,
5079    AtAlterColumnType = 26,
5080    AtAlterColumnGenericOptions = 27,
5081    AtChangeOwner = 28,
5082    AtClusterOn = 29,
5083    AtDropCluster = 30,
5084    AtSetLogged = 31,
5085    AtSetUnLogged = 32,
5086    AtDropOids = 33,
5087    AtSetAccessMethod = 34,
5088    AtSetTableSpace = 35,
5089    AtSetRelOptions = 36,
5090    AtResetRelOptions = 37,
5091    AtReplaceRelOptions = 38,
5092    AtEnableTrig = 39,
5093    AtEnableAlwaysTrig = 40,
5094    AtEnableReplicaTrig = 41,
5095    AtDisableTrig = 42,
5096    AtEnableTrigAll = 43,
5097    AtDisableTrigAll = 44,
5098    AtEnableTrigUser = 45,
5099    AtDisableTrigUser = 46,
5100    AtEnableRule = 47,
5101    AtEnableAlwaysRule = 48,
5102    AtEnableReplicaRule = 49,
5103    AtDisableRule = 50,
5104    AtAddInherit = 51,
5105    AtDropInherit = 52,
5106    AtAddOf = 53,
5107    AtDropOf = 54,
5108    AtReplicaIdentity = 55,
5109    AtEnableRowSecurity = 56,
5110    AtDisableRowSecurity = 57,
5111    AtForceRowSecurity = 58,
5112    AtNoForceRowSecurity = 59,
5113    AtGenericOptions = 60,
5114    AtAttachPartition = 61,
5115    AtDetachPartition = 62,
5116    AtDetachPartitionFinalize = 63,
5117    AtAddIdentity = 64,
5118    AtSetIdentity = 65,
5119    AtDropIdentity = 66,
5120    AtReAddStatistics = 67,
5121}
5122impl AlterTableType {
5123    /// String value of the enum field names used in the ProtoBuf definition.
5124    ///
5125    /// The values are not transformed in any way and thus are considered stable
5126    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5127    pub fn as_str_name(&self) -> &'static str {
5128        match self {
5129            Self::Undefined => "ALTER_TABLE_TYPE_UNDEFINED",
5130            Self::AtAddColumn => "AT_AddColumn",
5131            Self::AtAddColumnToView => "AT_AddColumnToView",
5132            Self::AtColumnDefault => "AT_ColumnDefault",
5133            Self::AtCookedColumnDefault => "AT_CookedColumnDefault",
5134            Self::AtDropNotNull => "AT_DropNotNull",
5135            Self::AtSetNotNull => "AT_SetNotNull",
5136            Self::AtSetExpression => "AT_SetExpression",
5137            Self::AtDropExpression => "AT_DropExpression",
5138            Self::AtCheckNotNull => "AT_CheckNotNull",
5139            Self::AtSetStatistics => "AT_SetStatistics",
5140            Self::AtSetOptions => "AT_SetOptions",
5141            Self::AtResetOptions => "AT_ResetOptions",
5142            Self::AtSetStorage => "AT_SetStorage",
5143            Self::AtSetCompression => "AT_SetCompression",
5144            Self::AtDropColumn => "AT_DropColumn",
5145            Self::AtAddIndex => "AT_AddIndex",
5146            Self::AtReAddIndex => "AT_ReAddIndex",
5147            Self::AtAddConstraint => "AT_AddConstraint",
5148            Self::AtReAddConstraint => "AT_ReAddConstraint",
5149            Self::AtReAddDomainConstraint => "AT_ReAddDomainConstraint",
5150            Self::AtAlterConstraint => "AT_AlterConstraint",
5151            Self::AtValidateConstraint => "AT_ValidateConstraint",
5152            Self::AtAddIndexConstraint => "AT_AddIndexConstraint",
5153            Self::AtDropConstraint => "AT_DropConstraint",
5154            Self::AtReAddComment => "AT_ReAddComment",
5155            Self::AtAlterColumnType => "AT_AlterColumnType",
5156            Self::AtAlterColumnGenericOptions => "AT_AlterColumnGenericOptions",
5157            Self::AtChangeOwner => "AT_ChangeOwner",
5158            Self::AtClusterOn => "AT_ClusterOn",
5159            Self::AtDropCluster => "AT_DropCluster",
5160            Self::AtSetLogged => "AT_SetLogged",
5161            Self::AtSetUnLogged => "AT_SetUnLogged",
5162            Self::AtDropOids => "AT_DropOids",
5163            Self::AtSetAccessMethod => "AT_SetAccessMethod",
5164            Self::AtSetTableSpace => "AT_SetTableSpace",
5165            Self::AtSetRelOptions => "AT_SetRelOptions",
5166            Self::AtResetRelOptions => "AT_ResetRelOptions",
5167            Self::AtReplaceRelOptions => "AT_ReplaceRelOptions",
5168            Self::AtEnableTrig => "AT_EnableTrig",
5169            Self::AtEnableAlwaysTrig => "AT_EnableAlwaysTrig",
5170            Self::AtEnableReplicaTrig => "AT_EnableReplicaTrig",
5171            Self::AtDisableTrig => "AT_DisableTrig",
5172            Self::AtEnableTrigAll => "AT_EnableTrigAll",
5173            Self::AtDisableTrigAll => "AT_DisableTrigAll",
5174            Self::AtEnableTrigUser => "AT_EnableTrigUser",
5175            Self::AtDisableTrigUser => "AT_DisableTrigUser",
5176            Self::AtEnableRule => "AT_EnableRule",
5177            Self::AtEnableAlwaysRule => "AT_EnableAlwaysRule",
5178            Self::AtEnableReplicaRule => "AT_EnableReplicaRule",
5179            Self::AtDisableRule => "AT_DisableRule",
5180            Self::AtAddInherit => "AT_AddInherit",
5181            Self::AtDropInherit => "AT_DropInherit",
5182            Self::AtAddOf => "AT_AddOf",
5183            Self::AtDropOf => "AT_DropOf",
5184            Self::AtReplicaIdentity => "AT_ReplicaIdentity",
5185            Self::AtEnableRowSecurity => "AT_EnableRowSecurity",
5186            Self::AtDisableRowSecurity => "AT_DisableRowSecurity",
5187            Self::AtForceRowSecurity => "AT_ForceRowSecurity",
5188            Self::AtNoForceRowSecurity => "AT_NoForceRowSecurity",
5189            Self::AtGenericOptions => "AT_GenericOptions",
5190            Self::AtAttachPartition => "AT_AttachPartition",
5191            Self::AtDetachPartition => "AT_DetachPartition",
5192            Self::AtDetachPartitionFinalize => "AT_DetachPartitionFinalize",
5193            Self::AtAddIdentity => "AT_AddIdentity",
5194            Self::AtSetIdentity => "AT_SetIdentity",
5195            Self::AtDropIdentity => "AT_DropIdentity",
5196            Self::AtReAddStatistics => "AT_ReAddStatistics",
5197        }
5198    }
5199    /// Creates an enum from field names used in the ProtoBuf definition.
5200    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5201        match value {
5202            "ALTER_TABLE_TYPE_UNDEFINED" => Some(Self::Undefined),
5203            "AT_AddColumn" => Some(Self::AtAddColumn),
5204            "AT_AddColumnToView" => Some(Self::AtAddColumnToView),
5205            "AT_ColumnDefault" => Some(Self::AtColumnDefault),
5206            "AT_CookedColumnDefault" => Some(Self::AtCookedColumnDefault),
5207            "AT_DropNotNull" => Some(Self::AtDropNotNull),
5208            "AT_SetNotNull" => Some(Self::AtSetNotNull),
5209            "AT_SetExpression" => Some(Self::AtSetExpression),
5210            "AT_DropExpression" => Some(Self::AtDropExpression),
5211            "AT_CheckNotNull" => Some(Self::AtCheckNotNull),
5212            "AT_SetStatistics" => Some(Self::AtSetStatistics),
5213            "AT_SetOptions" => Some(Self::AtSetOptions),
5214            "AT_ResetOptions" => Some(Self::AtResetOptions),
5215            "AT_SetStorage" => Some(Self::AtSetStorage),
5216            "AT_SetCompression" => Some(Self::AtSetCompression),
5217            "AT_DropColumn" => Some(Self::AtDropColumn),
5218            "AT_AddIndex" => Some(Self::AtAddIndex),
5219            "AT_ReAddIndex" => Some(Self::AtReAddIndex),
5220            "AT_AddConstraint" => Some(Self::AtAddConstraint),
5221            "AT_ReAddConstraint" => Some(Self::AtReAddConstraint),
5222            "AT_ReAddDomainConstraint" => Some(Self::AtReAddDomainConstraint),
5223            "AT_AlterConstraint" => Some(Self::AtAlterConstraint),
5224            "AT_ValidateConstraint" => Some(Self::AtValidateConstraint),
5225            "AT_AddIndexConstraint" => Some(Self::AtAddIndexConstraint),
5226            "AT_DropConstraint" => Some(Self::AtDropConstraint),
5227            "AT_ReAddComment" => Some(Self::AtReAddComment),
5228            "AT_AlterColumnType" => Some(Self::AtAlterColumnType),
5229            "AT_AlterColumnGenericOptions" => Some(Self::AtAlterColumnGenericOptions),
5230            "AT_ChangeOwner" => Some(Self::AtChangeOwner),
5231            "AT_ClusterOn" => Some(Self::AtClusterOn),
5232            "AT_DropCluster" => Some(Self::AtDropCluster),
5233            "AT_SetLogged" => Some(Self::AtSetLogged),
5234            "AT_SetUnLogged" => Some(Self::AtSetUnLogged),
5235            "AT_DropOids" => Some(Self::AtDropOids),
5236            "AT_SetAccessMethod" => Some(Self::AtSetAccessMethod),
5237            "AT_SetTableSpace" => Some(Self::AtSetTableSpace),
5238            "AT_SetRelOptions" => Some(Self::AtSetRelOptions),
5239            "AT_ResetRelOptions" => Some(Self::AtResetRelOptions),
5240            "AT_ReplaceRelOptions" => Some(Self::AtReplaceRelOptions),
5241            "AT_EnableTrig" => Some(Self::AtEnableTrig),
5242            "AT_EnableAlwaysTrig" => Some(Self::AtEnableAlwaysTrig),
5243            "AT_EnableReplicaTrig" => Some(Self::AtEnableReplicaTrig),
5244            "AT_DisableTrig" => Some(Self::AtDisableTrig),
5245            "AT_EnableTrigAll" => Some(Self::AtEnableTrigAll),
5246            "AT_DisableTrigAll" => Some(Self::AtDisableTrigAll),
5247            "AT_EnableTrigUser" => Some(Self::AtEnableTrigUser),
5248            "AT_DisableTrigUser" => Some(Self::AtDisableTrigUser),
5249            "AT_EnableRule" => Some(Self::AtEnableRule),
5250            "AT_EnableAlwaysRule" => Some(Self::AtEnableAlwaysRule),
5251            "AT_EnableReplicaRule" => Some(Self::AtEnableReplicaRule),
5252            "AT_DisableRule" => Some(Self::AtDisableRule),
5253            "AT_AddInherit" => Some(Self::AtAddInherit),
5254            "AT_DropInherit" => Some(Self::AtDropInherit),
5255            "AT_AddOf" => Some(Self::AtAddOf),
5256            "AT_DropOf" => Some(Self::AtDropOf),
5257            "AT_ReplicaIdentity" => Some(Self::AtReplicaIdentity),
5258            "AT_EnableRowSecurity" => Some(Self::AtEnableRowSecurity),
5259            "AT_DisableRowSecurity" => Some(Self::AtDisableRowSecurity),
5260            "AT_ForceRowSecurity" => Some(Self::AtForceRowSecurity),
5261            "AT_NoForceRowSecurity" => Some(Self::AtNoForceRowSecurity),
5262            "AT_GenericOptions" => Some(Self::AtGenericOptions),
5263            "AT_AttachPartition" => Some(Self::AtAttachPartition),
5264            "AT_DetachPartition" => Some(Self::AtDetachPartition),
5265            "AT_DetachPartitionFinalize" => Some(Self::AtDetachPartitionFinalize),
5266            "AT_AddIdentity" => Some(Self::AtAddIdentity),
5267            "AT_SetIdentity" => Some(Self::AtSetIdentity),
5268            "AT_DropIdentity" => Some(Self::AtDropIdentity),
5269            "AT_ReAddStatistics" => Some(Self::AtReAddStatistics),
5270            _ => None,
5271        }
5272    }
5273}
5274#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5275#[repr(i32)]
5276pub enum GrantTargetType {
5277    Undefined = 0,
5278    AclTargetObject = 1,
5279    AclTargetAllInSchema = 2,
5280    AclTargetDefaults = 3,
5281}
5282impl GrantTargetType {
5283    /// String value of the enum field names used in the ProtoBuf definition.
5284    ///
5285    /// The values are not transformed in any way and thus are considered stable
5286    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5287    pub fn as_str_name(&self) -> &'static str {
5288        match self {
5289            Self::Undefined => "GRANT_TARGET_TYPE_UNDEFINED",
5290            Self::AclTargetObject => "ACL_TARGET_OBJECT",
5291            Self::AclTargetAllInSchema => "ACL_TARGET_ALL_IN_SCHEMA",
5292            Self::AclTargetDefaults => "ACL_TARGET_DEFAULTS",
5293        }
5294    }
5295    /// Creates an enum from field names used in the ProtoBuf definition.
5296    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5297        match value {
5298            "GRANT_TARGET_TYPE_UNDEFINED" => Some(Self::Undefined),
5299            "ACL_TARGET_OBJECT" => Some(Self::AclTargetObject),
5300            "ACL_TARGET_ALL_IN_SCHEMA" => Some(Self::AclTargetAllInSchema),
5301            "ACL_TARGET_DEFAULTS" => Some(Self::AclTargetDefaults),
5302            _ => None,
5303        }
5304    }
5305}
5306#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5307#[repr(i32)]
5308pub enum VariableSetKind {
5309    Undefined = 0,
5310    VarSetValue = 1,
5311    VarSetDefault = 2,
5312    VarSetCurrent = 3,
5313    VarSetMulti = 4,
5314    VarReset = 5,
5315    VarResetAll = 6,
5316}
5317impl VariableSetKind {
5318    /// String value of the enum field names used in the ProtoBuf definition.
5319    ///
5320    /// The values are not transformed in any way and thus are considered stable
5321    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5322    pub fn as_str_name(&self) -> &'static str {
5323        match self {
5324            Self::Undefined => "VARIABLE_SET_KIND_UNDEFINED",
5325            Self::VarSetValue => "VAR_SET_VALUE",
5326            Self::VarSetDefault => "VAR_SET_DEFAULT",
5327            Self::VarSetCurrent => "VAR_SET_CURRENT",
5328            Self::VarSetMulti => "VAR_SET_MULTI",
5329            Self::VarReset => "VAR_RESET",
5330            Self::VarResetAll => "VAR_RESET_ALL",
5331        }
5332    }
5333    /// Creates an enum from field names used in the ProtoBuf definition.
5334    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5335        match value {
5336            "VARIABLE_SET_KIND_UNDEFINED" => Some(Self::Undefined),
5337            "VAR_SET_VALUE" => Some(Self::VarSetValue),
5338            "VAR_SET_DEFAULT" => Some(Self::VarSetDefault),
5339            "VAR_SET_CURRENT" => Some(Self::VarSetCurrent),
5340            "VAR_SET_MULTI" => Some(Self::VarSetMulti),
5341            "VAR_RESET" => Some(Self::VarReset),
5342            "VAR_RESET_ALL" => Some(Self::VarResetAll),
5343            _ => None,
5344        }
5345    }
5346}
5347#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5348#[repr(i32)]
5349pub enum ConstrType {
5350    Undefined = 0,
5351    ConstrNull = 1,
5352    ConstrNotnull = 2,
5353    ConstrDefault = 3,
5354    ConstrIdentity = 4,
5355    ConstrGenerated = 5,
5356    ConstrCheck = 6,
5357    ConstrPrimary = 7,
5358    ConstrUnique = 8,
5359    ConstrExclusion = 9,
5360    ConstrForeign = 10,
5361    ConstrAttrDeferrable = 11,
5362    ConstrAttrNotDeferrable = 12,
5363    ConstrAttrDeferred = 13,
5364    ConstrAttrImmediate = 14,
5365}
5366impl ConstrType {
5367    /// String value of the enum field names used in the ProtoBuf definition.
5368    ///
5369    /// The values are not transformed in any way and thus are considered stable
5370    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5371    pub fn as_str_name(&self) -> &'static str {
5372        match self {
5373            Self::Undefined => "CONSTR_TYPE_UNDEFINED",
5374            Self::ConstrNull => "CONSTR_NULL",
5375            Self::ConstrNotnull => "CONSTR_NOTNULL",
5376            Self::ConstrDefault => "CONSTR_DEFAULT",
5377            Self::ConstrIdentity => "CONSTR_IDENTITY",
5378            Self::ConstrGenerated => "CONSTR_GENERATED",
5379            Self::ConstrCheck => "CONSTR_CHECK",
5380            Self::ConstrPrimary => "CONSTR_PRIMARY",
5381            Self::ConstrUnique => "CONSTR_UNIQUE",
5382            Self::ConstrExclusion => "CONSTR_EXCLUSION",
5383            Self::ConstrForeign => "CONSTR_FOREIGN",
5384            Self::ConstrAttrDeferrable => "CONSTR_ATTR_DEFERRABLE",
5385            Self::ConstrAttrNotDeferrable => "CONSTR_ATTR_NOT_DEFERRABLE",
5386            Self::ConstrAttrDeferred => "CONSTR_ATTR_DEFERRED",
5387            Self::ConstrAttrImmediate => "CONSTR_ATTR_IMMEDIATE",
5388        }
5389    }
5390    /// Creates an enum from field names used in the ProtoBuf definition.
5391    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5392        match value {
5393            "CONSTR_TYPE_UNDEFINED" => Some(Self::Undefined),
5394            "CONSTR_NULL" => Some(Self::ConstrNull),
5395            "CONSTR_NOTNULL" => Some(Self::ConstrNotnull),
5396            "CONSTR_DEFAULT" => Some(Self::ConstrDefault),
5397            "CONSTR_IDENTITY" => Some(Self::ConstrIdentity),
5398            "CONSTR_GENERATED" => Some(Self::ConstrGenerated),
5399            "CONSTR_CHECK" => Some(Self::ConstrCheck),
5400            "CONSTR_PRIMARY" => Some(Self::ConstrPrimary),
5401            "CONSTR_UNIQUE" => Some(Self::ConstrUnique),
5402            "CONSTR_EXCLUSION" => Some(Self::ConstrExclusion),
5403            "CONSTR_FOREIGN" => Some(Self::ConstrForeign),
5404            "CONSTR_ATTR_DEFERRABLE" => Some(Self::ConstrAttrDeferrable),
5405            "CONSTR_ATTR_NOT_DEFERRABLE" => Some(Self::ConstrAttrNotDeferrable),
5406            "CONSTR_ATTR_DEFERRED" => Some(Self::ConstrAttrDeferred),
5407            "CONSTR_ATTR_IMMEDIATE" => Some(Self::ConstrAttrImmediate),
5408            _ => None,
5409        }
5410    }
5411}
5412#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5413#[repr(i32)]
5414pub enum ImportForeignSchemaType {
5415    Undefined = 0,
5416    FdwImportSchemaAll = 1,
5417    FdwImportSchemaLimitTo = 2,
5418    FdwImportSchemaExcept = 3,
5419}
5420impl ImportForeignSchemaType {
5421    /// String value of the enum field names used in the ProtoBuf definition.
5422    ///
5423    /// The values are not transformed in any way and thus are considered stable
5424    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5425    pub fn as_str_name(&self) -> &'static str {
5426        match self {
5427            Self::Undefined => "IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED",
5428            Self::FdwImportSchemaAll => "FDW_IMPORT_SCHEMA_ALL",
5429            Self::FdwImportSchemaLimitTo => "FDW_IMPORT_SCHEMA_LIMIT_TO",
5430            Self::FdwImportSchemaExcept => "FDW_IMPORT_SCHEMA_EXCEPT",
5431        }
5432    }
5433    /// Creates an enum from field names used in the ProtoBuf definition.
5434    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5435        match value {
5436            "IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED" => Some(Self::Undefined),
5437            "FDW_IMPORT_SCHEMA_ALL" => Some(Self::FdwImportSchemaAll),
5438            "FDW_IMPORT_SCHEMA_LIMIT_TO" => Some(Self::FdwImportSchemaLimitTo),
5439            "FDW_IMPORT_SCHEMA_EXCEPT" => Some(Self::FdwImportSchemaExcept),
5440            _ => None,
5441        }
5442    }
5443}
5444#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5445#[repr(i32)]
5446pub enum RoleStmtType {
5447    Undefined = 0,
5448    RolestmtRole = 1,
5449    RolestmtUser = 2,
5450    RolestmtGroup = 3,
5451}
5452impl RoleStmtType {
5453    /// String value of the enum field names used in the ProtoBuf definition.
5454    ///
5455    /// The values are not transformed in any way and thus are considered stable
5456    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5457    pub fn as_str_name(&self) -> &'static str {
5458        match self {
5459            Self::Undefined => "ROLE_STMT_TYPE_UNDEFINED",
5460            Self::RolestmtRole => "ROLESTMT_ROLE",
5461            Self::RolestmtUser => "ROLESTMT_USER",
5462            Self::RolestmtGroup => "ROLESTMT_GROUP",
5463        }
5464    }
5465    /// Creates an enum from field names used in the ProtoBuf definition.
5466    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5467        match value {
5468            "ROLE_STMT_TYPE_UNDEFINED" => Some(Self::Undefined),
5469            "ROLESTMT_ROLE" => Some(Self::RolestmtRole),
5470            "ROLESTMT_USER" => Some(Self::RolestmtUser),
5471            "ROLESTMT_GROUP" => Some(Self::RolestmtGroup),
5472            _ => None,
5473        }
5474    }
5475}
5476#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5477#[repr(i32)]
5478pub enum FetchDirection {
5479    Undefined = 0,
5480    FetchForward = 1,
5481    FetchBackward = 2,
5482    FetchAbsolute = 3,
5483    FetchRelative = 4,
5484}
5485impl FetchDirection {
5486    /// String value of the enum field names used in the ProtoBuf definition.
5487    ///
5488    /// The values are not transformed in any way and thus are considered stable
5489    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5490    pub fn as_str_name(&self) -> &'static str {
5491        match self {
5492            Self::Undefined => "FETCH_DIRECTION_UNDEFINED",
5493            Self::FetchForward => "FETCH_FORWARD",
5494            Self::FetchBackward => "FETCH_BACKWARD",
5495            Self::FetchAbsolute => "FETCH_ABSOLUTE",
5496            Self::FetchRelative => "FETCH_RELATIVE",
5497        }
5498    }
5499    /// Creates an enum from field names used in the ProtoBuf definition.
5500    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5501        match value {
5502            "FETCH_DIRECTION_UNDEFINED" => Some(Self::Undefined),
5503            "FETCH_FORWARD" => Some(Self::FetchForward),
5504            "FETCH_BACKWARD" => Some(Self::FetchBackward),
5505            "FETCH_ABSOLUTE" => Some(Self::FetchAbsolute),
5506            "FETCH_RELATIVE" => Some(Self::FetchRelative),
5507            _ => None,
5508        }
5509    }
5510}
5511#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5512#[repr(i32)]
5513pub enum FunctionParameterMode {
5514    Undefined = 0,
5515    FuncParamIn = 1,
5516    FuncParamOut = 2,
5517    FuncParamInout = 3,
5518    FuncParamVariadic = 4,
5519    FuncParamTable = 5,
5520    FuncParamDefault = 6,
5521}
5522impl FunctionParameterMode {
5523    /// String value of the enum field names used in the ProtoBuf definition.
5524    ///
5525    /// The values are not transformed in any way and thus are considered stable
5526    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5527    pub fn as_str_name(&self) -> &'static str {
5528        match self {
5529            Self::Undefined => "FUNCTION_PARAMETER_MODE_UNDEFINED",
5530            Self::FuncParamIn => "FUNC_PARAM_IN",
5531            Self::FuncParamOut => "FUNC_PARAM_OUT",
5532            Self::FuncParamInout => "FUNC_PARAM_INOUT",
5533            Self::FuncParamVariadic => "FUNC_PARAM_VARIADIC",
5534            Self::FuncParamTable => "FUNC_PARAM_TABLE",
5535            Self::FuncParamDefault => "FUNC_PARAM_DEFAULT",
5536        }
5537    }
5538    /// Creates an enum from field names used in the ProtoBuf definition.
5539    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5540        match value {
5541            "FUNCTION_PARAMETER_MODE_UNDEFINED" => Some(Self::Undefined),
5542            "FUNC_PARAM_IN" => Some(Self::FuncParamIn),
5543            "FUNC_PARAM_OUT" => Some(Self::FuncParamOut),
5544            "FUNC_PARAM_INOUT" => Some(Self::FuncParamInout),
5545            "FUNC_PARAM_VARIADIC" => Some(Self::FuncParamVariadic),
5546            "FUNC_PARAM_TABLE" => Some(Self::FuncParamTable),
5547            "FUNC_PARAM_DEFAULT" => Some(Self::FuncParamDefault),
5548            _ => None,
5549        }
5550    }
5551}
5552#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5553#[repr(i32)]
5554pub enum TransactionStmtKind {
5555    Undefined = 0,
5556    TransStmtBegin = 1,
5557    TransStmtStart = 2,
5558    TransStmtCommit = 3,
5559    TransStmtRollback = 4,
5560    TransStmtSavepoint = 5,
5561    TransStmtRelease = 6,
5562    TransStmtRollbackTo = 7,
5563    TransStmtPrepare = 8,
5564    TransStmtCommitPrepared = 9,
5565    TransStmtRollbackPrepared = 10,
5566}
5567impl TransactionStmtKind {
5568    /// String value of the enum field names used in the ProtoBuf definition.
5569    ///
5570    /// The values are not transformed in any way and thus are considered stable
5571    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5572    pub fn as_str_name(&self) -> &'static str {
5573        match self {
5574            Self::Undefined => "TRANSACTION_STMT_KIND_UNDEFINED",
5575            Self::TransStmtBegin => "TRANS_STMT_BEGIN",
5576            Self::TransStmtStart => "TRANS_STMT_START",
5577            Self::TransStmtCommit => "TRANS_STMT_COMMIT",
5578            Self::TransStmtRollback => "TRANS_STMT_ROLLBACK",
5579            Self::TransStmtSavepoint => "TRANS_STMT_SAVEPOINT",
5580            Self::TransStmtRelease => "TRANS_STMT_RELEASE",
5581            Self::TransStmtRollbackTo => "TRANS_STMT_ROLLBACK_TO",
5582            Self::TransStmtPrepare => "TRANS_STMT_PREPARE",
5583            Self::TransStmtCommitPrepared => "TRANS_STMT_COMMIT_PREPARED",
5584            Self::TransStmtRollbackPrepared => "TRANS_STMT_ROLLBACK_PREPARED",
5585        }
5586    }
5587    /// Creates an enum from field names used in the ProtoBuf definition.
5588    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5589        match value {
5590            "TRANSACTION_STMT_KIND_UNDEFINED" => Some(Self::Undefined),
5591            "TRANS_STMT_BEGIN" => Some(Self::TransStmtBegin),
5592            "TRANS_STMT_START" => Some(Self::TransStmtStart),
5593            "TRANS_STMT_COMMIT" => Some(Self::TransStmtCommit),
5594            "TRANS_STMT_ROLLBACK" => Some(Self::TransStmtRollback),
5595            "TRANS_STMT_SAVEPOINT" => Some(Self::TransStmtSavepoint),
5596            "TRANS_STMT_RELEASE" => Some(Self::TransStmtRelease),
5597            "TRANS_STMT_ROLLBACK_TO" => Some(Self::TransStmtRollbackTo),
5598            "TRANS_STMT_PREPARE" => Some(Self::TransStmtPrepare),
5599            "TRANS_STMT_COMMIT_PREPARED" => Some(Self::TransStmtCommitPrepared),
5600            "TRANS_STMT_ROLLBACK_PREPARED" => Some(Self::TransStmtRollbackPrepared),
5601            _ => None,
5602        }
5603    }
5604}
5605#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5606#[repr(i32)]
5607pub enum ViewCheckOption {
5608    Undefined = 0,
5609    NoCheckOption = 1,
5610    LocalCheckOption = 2,
5611    CascadedCheckOption = 3,
5612}
5613impl ViewCheckOption {
5614    /// String value of the enum field names used in the ProtoBuf definition.
5615    ///
5616    /// The values are not transformed in any way and thus are considered stable
5617    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5618    pub fn as_str_name(&self) -> &'static str {
5619        match self {
5620            Self::Undefined => "VIEW_CHECK_OPTION_UNDEFINED",
5621            Self::NoCheckOption => "NO_CHECK_OPTION",
5622            Self::LocalCheckOption => "LOCAL_CHECK_OPTION",
5623            Self::CascadedCheckOption => "CASCADED_CHECK_OPTION",
5624        }
5625    }
5626    /// Creates an enum from field names used in the ProtoBuf definition.
5627    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5628        match value {
5629            "VIEW_CHECK_OPTION_UNDEFINED" => Some(Self::Undefined),
5630            "NO_CHECK_OPTION" => Some(Self::NoCheckOption),
5631            "LOCAL_CHECK_OPTION" => Some(Self::LocalCheckOption),
5632            "CASCADED_CHECK_OPTION" => Some(Self::CascadedCheckOption),
5633            _ => None,
5634        }
5635    }
5636}
5637#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5638#[repr(i32)]
5639pub enum DiscardMode {
5640    Undefined = 0,
5641    DiscardAll = 1,
5642    DiscardPlans = 2,
5643    DiscardSequences = 3,
5644    DiscardTemp = 4,
5645}
5646impl DiscardMode {
5647    /// String value of the enum field names used in the ProtoBuf definition.
5648    ///
5649    /// The values are not transformed in any way and thus are considered stable
5650    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5651    pub fn as_str_name(&self) -> &'static str {
5652        match self {
5653            Self::Undefined => "DISCARD_MODE_UNDEFINED",
5654            Self::DiscardAll => "DISCARD_ALL",
5655            Self::DiscardPlans => "DISCARD_PLANS",
5656            Self::DiscardSequences => "DISCARD_SEQUENCES",
5657            Self::DiscardTemp => "DISCARD_TEMP",
5658        }
5659    }
5660    /// Creates an enum from field names used in the ProtoBuf definition.
5661    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5662        match value {
5663            "DISCARD_MODE_UNDEFINED" => Some(Self::Undefined),
5664            "DISCARD_ALL" => Some(Self::DiscardAll),
5665            "DISCARD_PLANS" => Some(Self::DiscardPlans),
5666            "DISCARD_SEQUENCES" => Some(Self::DiscardSequences),
5667            "DISCARD_TEMP" => Some(Self::DiscardTemp),
5668            _ => None,
5669        }
5670    }
5671}
5672#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5673#[repr(i32)]
5674pub enum ReindexObjectType {
5675    Undefined = 0,
5676    ReindexObjectIndex = 1,
5677    ReindexObjectTable = 2,
5678    ReindexObjectSchema = 3,
5679    ReindexObjectSystem = 4,
5680    ReindexObjectDatabase = 5,
5681}
5682impl ReindexObjectType {
5683    /// String value of the enum field names used in the ProtoBuf definition.
5684    ///
5685    /// The values are not transformed in any way and thus are considered stable
5686    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5687    pub fn as_str_name(&self) -> &'static str {
5688        match self {
5689            Self::Undefined => "REINDEX_OBJECT_TYPE_UNDEFINED",
5690            Self::ReindexObjectIndex => "REINDEX_OBJECT_INDEX",
5691            Self::ReindexObjectTable => "REINDEX_OBJECT_TABLE",
5692            Self::ReindexObjectSchema => "REINDEX_OBJECT_SCHEMA",
5693            Self::ReindexObjectSystem => "REINDEX_OBJECT_SYSTEM",
5694            Self::ReindexObjectDatabase => "REINDEX_OBJECT_DATABASE",
5695        }
5696    }
5697    /// Creates an enum from field names used in the ProtoBuf definition.
5698    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5699        match value {
5700            "REINDEX_OBJECT_TYPE_UNDEFINED" => Some(Self::Undefined),
5701            "REINDEX_OBJECT_INDEX" => Some(Self::ReindexObjectIndex),
5702            "REINDEX_OBJECT_TABLE" => Some(Self::ReindexObjectTable),
5703            "REINDEX_OBJECT_SCHEMA" => Some(Self::ReindexObjectSchema),
5704            "REINDEX_OBJECT_SYSTEM" => Some(Self::ReindexObjectSystem),
5705            "REINDEX_OBJECT_DATABASE" => Some(Self::ReindexObjectDatabase),
5706            _ => None,
5707        }
5708    }
5709}
5710#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5711#[repr(i32)]
5712pub enum AlterTsConfigType {
5713    AlterTsconfigTypeUndefined = 0,
5714    AlterTsconfigAddMapping = 1,
5715    AlterTsconfigAlterMappingForToken = 2,
5716    AlterTsconfigReplaceDict = 3,
5717    AlterTsconfigReplaceDictForToken = 4,
5718    AlterTsconfigDropMapping = 5,
5719}
5720impl AlterTsConfigType {
5721    /// String value of the enum field names used in the ProtoBuf definition.
5722    ///
5723    /// The values are not transformed in any way and thus are considered stable
5724    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5725    pub fn as_str_name(&self) -> &'static str {
5726        match self {
5727            Self::AlterTsconfigTypeUndefined => "ALTER_TSCONFIG_TYPE_UNDEFINED",
5728            Self::AlterTsconfigAddMapping => "ALTER_TSCONFIG_ADD_MAPPING",
5729            Self::AlterTsconfigAlterMappingForToken => {
5730                "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN"
5731            }
5732            Self::AlterTsconfigReplaceDict => "ALTER_TSCONFIG_REPLACE_DICT",
5733            Self::AlterTsconfigReplaceDictForToken => {
5734                "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN"
5735            }
5736            Self::AlterTsconfigDropMapping => "ALTER_TSCONFIG_DROP_MAPPING",
5737        }
5738    }
5739    /// Creates an enum from field names used in the ProtoBuf definition.
5740    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5741        match value {
5742            "ALTER_TSCONFIG_TYPE_UNDEFINED" => Some(Self::AlterTsconfigTypeUndefined),
5743            "ALTER_TSCONFIG_ADD_MAPPING" => Some(Self::AlterTsconfigAddMapping),
5744            "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN" => {
5745                Some(Self::AlterTsconfigAlterMappingForToken)
5746            }
5747            "ALTER_TSCONFIG_REPLACE_DICT" => Some(Self::AlterTsconfigReplaceDict),
5748            "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN" => {
5749                Some(Self::AlterTsconfigReplaceDictForToken)
5750            }
5751            "ALTER_TSCONFIG_DROP_MAPPING" => Some(Self::AlterTsconfigDropMapping),
5752            _ => None,
5753        }
5754    }
5755}
5756#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5757#[repr(i32)]
5758pub enum PublicationObjSpecType {
5759    Undefined = 0,
5760    PublicationobjTable = 1,
5761    PublicationobjTablesInSchema = 2,
5762    PublicationobjTablesInCurSchema = 3,
5763    PublicationobjContinuation = 4,
5764}
5765impl PublicationObjSpecType {
5766    /// String value of the enum field names used in the ProtoBuf definition.
5767    ///
5768    /// The values are not transformed in any way and thus are considered stable
5769    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5770    pub fn as_str_name(&self) -> &'static str {
5771        match self {
5772            Self::Undefined => "PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED",
5773            Self::PublicationobjTable => "PUBLICATIONOBJ_TABLE",
5774            Self::PublicationobjTablesInSchema => "PUBLICATIONOBJ_TABLES_IN_SCHEMA",
5775            Self::PublicationobjTablesInCurSchema => {
5776                "PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA"
5777            }
5778            Self::PublicationobjContinuation => "PUBLICATIONOBJ_CONTINUATION",
5779        }
5780    }
5781    /// Creates an enum from field names used in the ProtoBuf definition.
5782    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5783        match value {
5784            "PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED" => Some(Self::Undefined),
5785            "PUBLICATIONOBJ_TABLE" => Some(Self::PublicationobjTable),
5786            "PUBLICATIONOBJ_TABLES_IN_SCHEMA" => Some(Self::PublicationobjTablesInSchema),
5787            "PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA" => {
5788                Some(Self::PublicationobjTablesInCurSchema)
5789            }
5790            "PUBLICATIONOBJ_CONTINUATION" => Some(Self::PublicationobjContinuation),
5791            _ => None,
5792        }
5793    }
5794}
5795#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5796#[repr(i32)]
5797pub enum AlterPublicationAction {
5798    Undefined = 0,
5799    ApAddObjects = 1,
5800    ApDropObjects = 2,
5801    ApSetObjects = 3,
5802}
5803impl AlterPublicationAction {
5804    /// String value of the enum field names used in the ProtoBuf definition.
5805    ///
5806    /// The values are not transformed in any way and thus are considered stable
5807    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5808    pub fn as_str_name(&self) -> &'static str {
5809        match self {
5810            Self::Undefined => "ALTER_PUBLICATION_ACTION_UNDEFINED",
5811            Self::ApAddObjects => "AP_AddObjects",
5812            Self::ApDropObjects => "AP_DropObjects",
5813            Self::ApSetObjects => "AP_SetObjects",
5814        }
5815    }
5816    /// Creates an enum from field names used in the ProtoBuf definition.
5817    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5818        match value {
5819            "ALTER_PUBLICATION_ACTION_UNDEFINED" => Some(Self::Undefined),
5820            "AP_AddObjects" => Some(Self::ApAddObjects),
5821            "AP_DropObjects" => Some(Self::ApDropObjects),
5822            "AP_SetObjects" => Some(Self::ApSetObjects),
5823            _ => None,
5824        }
5825    }
5826}
5827#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5828#[repr(i32)]
5829pub enum AlterSubscriptionType {
5830    Undefined = 0,
5831    AlterSubscriptionOptions = 1,
5832    AlterSubscriptionConnection = 2,
5833    AlterSubscriptionSetPublication = 3,
5834    AlterSubscriptionAddPublication = 4,
5835    AlterSubscriptionDropPublication = 5,
5836    AlterSubscriptionRefresh = 6,
5837    AlterSubscriptionEnabled = 7,
5838    AlterSubscriptionSkip = 8,
5839}
5840impl AlterSubscriptionType {
5841    /// String value of the enum field names used in the ProtoBuf definition.
5842    ///
5843    /// The values are not transformed in any way and thus are considered stable
5844    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5845    pub fn as_str_name(&self) -> &'static str {
5846        match self {
5847            Self::Undefined => "ALTER_SUBSCRIPTION_TYPE_UNDEFINED",
5848            Self::AlterSubscriptionOptions => "ALTER_SUBSCRIPTION_OPTIONS",
5849            Self::AlterSubscriptionConnection => "ALTER_SUBSCRIPTION_CONNECTION",
5850            Self::AlterSubscriptionSetPublication => "ALTER_SUBSCRIPTION_SET_PUBLICATION",
5851            Self::AlterSubscriptionAddPublication => "ALTER_SUBSCRIPTION_ADD_PUBLICATION",
5852            Self::AlterSubscriptionDropPublication => {
5853                "ALTER_SUBSCRIPTION_DROP_PUBLICATION"
5854            }
5855            Self::AlterSubscriptionRefresh => "ALTER_SUBSCRIPTION_REFRESH",
5856            Self::AlterSubscriptionEnabled => "ALTER_SUBSCRIPTION_ENABLED",
5857            Self::AlterSubscriptionSkip => "ALTER_SUBSCRIPTION_SKIP",
5858        }
5859    }
5860    /// Creates an enum from field names used in the ProtoBuf definition.
5861    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5862        match value {
5863            "ALTER_SUBSCRIPTION_TYPE_UNDEFINED" => Some(Self::Undefined),
5864            "ALTER_SUBSCRIPTION_OPTIONS" => Some(Self::AlterSubscriptionOptions),
5865            "ALTER_SUBSCRIPTION_CONNECTION" => Some(Self::AlterSubscriptionConnection),
5866            "ALTER_SUBSCRIPTION_SET_PUBLICATION" => {
5867                Some(Self::AlterSubscriptionSetPublication)
5868            }
5869            "ALTER_SUBSCRIPTION_ADD_PUBLICATION" => {
5870                Some(Self::AlterSubscriptionAddPublication)
5871            }
5872            "ALTER_SUBSCRIPTION_DROP_PUBLICATION" => {
5873                Some(Self::AlterSubscriptionDropPublication)
5874            }
5875            "ALTER_SUBSCRIPTION_REFRESH" => Some(Self::AlterSubscriptionRefresh),
5876            "ALTER_SUBSCRIPTION_ENABLED" => Some(Self::AlterSubscriptionEnabled),
5877            "ALTER_SUBSCRIPTION_SKIP" => Some(Self::AlterSubscriptionSkip),
5878            _ => None,
5879        }
5880    }
5881}
5882#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5883#[repr(i32)]
5884pub enum OverridingKind {
5885    Undefined = 0,
5886    OverridingNotSet = 1,
5887    OverridingUserValue = 2,
5888    OverridingSystemValue = 3,
5889}
5890impl OverridingKind {
5891    /// String value of the enum field names used in the ProtoBuf definition.
5892    ///
5893    /// The values are not transformed in any way and thus are considered stable
5894    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5895    pub fn as_str_name(&self) -> &'static str {
5896        match self {
5897            Self::Undefined => "OVERRIDING_KIND_UNDEFINED",
5898            Self::OverridingNotSet => "OVERRIDING_NOT_SET",
5899            Self::OverridingUserValue => "OVERRIDING_USER_VALUE",
5900            Self::OverridingSystemValue => "OVERRIDING_SYSTEM_VALUE",
5901        }
5902    }
5903    /// Creates an enum from field names used in the ProtoBuf definition.
5904    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5905        match value {
5906            "OVERRIDING_KIND_UNDEFINED" => Some(Self::Undefined),
5907            "OVERRIDING_NOT_SET" => Some(Self::OverridingNotSet),
5908            "OVERRIDING_USER_VALUE" => Some(Self::OverridingUserValue),
5909            "OVERRIDING_SYSTEM_VALUE" => Some(Self::OverridingSystemValue),
5910            _ => None,
5911        }
5912    }
5913}
5914#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5915#[repr(i32)]
5916pub enum OnCommitAction {
5917    Undefined = 0,
5918    OncommitNoop = 1,
5919    OncommitPreserveRows = 2,
5920    OncommitDeleteRows = 3,
5921    OncommitDrop = 4,
5922}
5923impl OnCommitAction {
5924    /// String value of the enum field names used in the ProtoBuf definition.
5925    ///
5926    /// The values are not transformed in any way and thus are considered stable
5927    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5928    pub fn as_str_name(&self) -> &'static str {
5929        match self {
5930            Self::Undefined => "ON_COMMIT_ACTION_UNDEFINED",
5931            Self::OncommitNoop => "ONCOMMIT_NOOP",
5932            Self::OncommitPreserveRows => "ONCOMMIT_PRESERVE_ROWS",
5933            Self::OncommitDeleteRows => "ONCOMMIT_DELETE_ROWS",
5934            Self::OncommitDrop => "ONCOMMIT_DROP",
5935        }
5936    }
5937    /// Creates an enum from field names used in the ProtoBuf definition.
5938    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5939        match value {
5940            "ON_COMMIT_ACTION_UNDEFINED" => Some(Self::Undefined),
5941            "ONCOMMIT_NOOP" => Some(Self::OncommitNoop),
5942            "ONCOMMIT_PRESERVE_ROWS" => Some(Self::OncommitPreserveRows),
5943            "ONCOMMIT_DELETE_ROWS" => Some(Self::OncommitDeleteRows),
5944            "ONCOMMIT_DROP" => Some(Self::OncommitDrop),
5945            _ => None,
5946        }
5947    }
5948}
5949#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5950#[repr(i32)]
5951pub enum TableFuncType {
5952    Undefined = 0,
5953    TftXmltable = 1,
5954    TftJsonTable = 2,
5955}
5956impl TableFuncType {
5957    /// String value of the enum field names used in the ProtoBuf definition.
5958    ///
5959    /// The values are not transformed in any way and thus are considered stable
5960    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5961    pub fn as_str_name(&self) -> &'static str {
5962        match self {
5963            Self::Undefined => "TABLE_FUNC_TYPE_UNDEFINED",
5964            Self::TftXmltable => "TFT_XMLTABLE",
5965            Self::TftJsonTable => "TFT_JSON_TABLE",
5966        }
5967    }
5968    /// Creates an enum from field names used in the ProtoBuf definition.
5969    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5970        match value {
5971            "TABLE_FUNC_TYPE_UNDEFINED" => Some(Self::Undefined),
5972            "TFT_XMLTABLE" => Some(Self::TftXmltable),
5973            "TFT_JSON_TABLE" => Some(Self::TftJsonTable),
5974            _ => None,
5975        }
5976    }
5977}
5978#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5979#[repr(i32)]
5980pub enum ParamKind {
5981    Undefined = 0,
5982    ParamExtern = 1,
5983    ParamExec = 2,
5984    ParamSublink = 3,
5985    ParamMultiexpr = 4,
5986}
5987impl ParamKind {
5988    /// String value of the enum field names used in the ProtoBuf definition.
5989    ///
5990    /// The values are not transformed in any way and thus are considered stable
5991    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5992    pub fn as_str_name(&self) -> &'static str {
5993        match self {
5994            Self::Undefined => "PARAM_KIND_UNDEFINED",
5995            Self::ParamExtern => "PARAM_EXTERN",
5996            Self::ParamExec => "PARAM_EXEC",
5997            Self::ParamSublink => "PARAM_SUBLINK",
5998            Self::ParamMultiexpr => "PARAM_MULTIEXPR",
5999        }
6000    }
6001    /// Creates an enum from field names used in the ProtoBuf definition.
6002    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6003        match value {
6004            "PARAM_KIND_UNDEFINED" => Some(Self::Undefined),
6005            "PARAM_EXTERN" => Some(Self::ParamExtern),
6006            "PARAM_EXEC" => Some(Self::ParamExec),
6007            "PARAM_SUBLINK" => Some(Self::ParamSublink),
6008            "PARAM_MULTIEXPR" => Some(Self::ParamMultiexpr),
6009            _ => None,
6010        }
6011    }
6012}
6013#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6014#[repr(i32)]
6015pub enum CoercionContext {
6016    Undefined = 0,
6017    CoercionImplicit = 1,
6018    CoercionAssignment = 2,
6019    CoercionPlpgsql = 3,
6020    CoercionExplicit = 4,
6021}
6022impl CoercionContext {
6023    /// String value of the enum field names used in the ProtoBuf definition.
6024    ///
6025    /// The values are not transformed in any way and thus are considered stable
6026    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6027    pub fn as_str_name(&self) -> &'static str {
6028        match self {
6029            Self::Undefined => "COERCION_CONTEXT_UNDEFINED",
6030            Self::CoercionImplicit => "COERCION_IMPLICIT",
6031            Self::CoercionAssignment => "COERCION_ASSIGNMENT",
6032            Self::CoercionPlpgsql => "COERCION_PLPGSQL",
6033            Self::CoercionExplicit => "COERCION_EXPLICIT",
6034        }
6035    }
6036    /// Creates an enum from field names used in the ProtoBuf definition.
6037    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6038        match value {
6039            "COERCION_CONTEXT_UNDEFINED" => Some(Self::Undefined),
6040            "COERCION_IMPLICIT" => Some(Self::CoercionImplicit),
6041            "COERCION_ASSIGNMENT" => Some(Self::CoercionAssignment),
6042            "COERCION_PLPGSQL" => Some(Self::CoercionPlpgsql),
6043            "COERCION_EXPLICIT" => Some(Self::CoercionExplicit),
6044            _ => None,
6045        }
6046    }
6047}
6048#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6049#[repr(i32)]
6050pub enum CoercionForm {
6051    Undefined = 0,
6052    CoerceExplicitCall = 1,
6053    CoerceExplicitCast = 2,
6054    CoerceImplicitCast = 3,
6055    CoerceSqlSyntax = 4,
6056}
6057impl CoercionForm {
6058    /// String value of the enum field names used in the ProtoBuf definition.
6059    ///
6060    /// The values are not transformed in any way and thus are considered stable
6061    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6062    pub fn as_str_name(&self) -> &'static str {
6063        match self {
6064            Self::Undefined => "COERCION_FORM_UNDEFINED",
6065            Self::CoerceExplicitCall => "COERCE_EXPLICIT_CALL",
6066            Self::CoerceExplicitCast => "COERCE_EXPLICIT_CAST",
6067            Self::CoerceImplicitCast => "COERCE_IMPLICIT_CAST",
6068            Self::CoerceSqlSyntax => "COERCE_SQL_SYNTAX",
6069        }
6070    }
6071    /// Creates an enum from field names used in the ProtoBuf definition.
6072    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6073        match value {
6074            "COERCION_FORM_UNDEFINED" => Some(Self::Undefined),
6075            "COERCE_EXPLICIT_CALL" => Some(Self::CoerceExplicitCall),
6076            "COERCE_EXPLICIT_CAST" => Some(Self::CoerceExplicitCast),
6077            "COERCE_IMPLICIT_CAST" => Some(Self::CoerceImplicitCast),
6078            "COERCE_SQL_SYNTAX" => Some(Self::CoerceSqlSyntax),
6079            _ => None,
6080        }
6081    }
6082}
6083#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6084#[repr(i32)]
6085pub enum BoolExprType {
6086    Undefined = 0,
6087    AndExpr = 1,
6088    OrExpr = 2,
6089    NotExpr = 3,
6090}
6091impl BoolExprType {
6092    /// String value of the enum field names used in the ProtoBuf definition.
6093    ///
6094    /// The values are not transformed in any way and thus are considered stable
6095    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6096    pub fn as_str_name(&self) -> &'static str {
6097        match self {
6098            Self::Undefined => "BOOL_EXPR_TYPE_UNDEFINED",
6099            Self::AndExpr => "AND_EXPR",
6100            Self::OrExpr => "OR_EXPR",
6101            Self::NotExpr => "NOT_EXPR",
6102        }
6103    }
6104    /// Creates an enum from field names used in the ProtoBuf definition.
6105    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6106        match value {
6107            "BOOL_EXPR_TYPE_UNDEFINED" => Some(Self::Undefined),
6108            "AND_EXPR" => Some(Self::AndExpr),
6109            "OR_EXPR" => Some(Self::OrExpr),
6110            "NOT_EXPR" => Some(Self::NotExpr),
6111            _ => None,
6112        }
6113    }
6114}
6115#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6116#[repr(i32)]
6117pub enum SubLinkType {
6118    Undefined = 0,
6119    ExistsSublink = 1,
6120    AllSublink = 2,
6121    AnySublink = 3,
6122    RowcompareSublink = 4,
6123    ExprSublink = 5,
6124    MultiexprSublink = 6,
6125    ArraySublink = 7,
6126    CteSublink = 8,
6127}
6128impl SubLinkType {
6129    /// String value of the enum field names used in the ProtoBuf definition.
6130    ///
6131    /// The values are not transformed in any way and thus are considered stable
6132    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6133    pub fn as_str_name(&self) -> &'static str {
6134        match self {
6135            Self::Undefined => "SUB_LINK_TYPE_UNDEFINED",
6136            Self::ExistsSublink => "EXISTS_SUBLINK",
6137            Self::AllSublink => "ALL_SUBLINK",
6138            Self::AnySublink => "ANY_SUBLINK",
6139            Self::RowcompareSublink => "ROWCOMPARE_SUBLINK",
6140            Self::ExprSublink => "EXPR_SUBLINK",
6141            Self::MultiexprSublink => "MULTIEXPR_SUBLINK",
6142            Self::ArraySublink => "ARRAY_SUBLINK",
6143            Self::CteSublink => "CTE_SUBLINK",
6144        }
6145    }
6146    /// Creates an enum from field names used in the ProtoBuf definition.
6147    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6148        match value {
6149            "SUB_LINK_TYPE_UNDEFINED" => Some(Self::Undefined),
6150            "EXISTS_SUBLINK" => Some(Self::ExistsSublink),
6151            "ALL_SUBLINK" => Some(Self::AllSublink),
6152            "ANY_SUBLINK" => Some(Self::AnySublink),
6153            "ROWCOMPARE_SUBLINK" => Some(Self::RowcompareSublink),
6154            "EXPR_SUBLINK" => Some(Self::ExprSublink),
6155            "MULTIEXPR_SUBLINK" => Some(Self::MultiexprSublink),
6156            "ARRAY_SUBLINK" => Some(Self::ArraySublink),
6157            "CTE_SUBLINK" => Some(Self::CteSublink),
6158            _ => None,
6159        }
6160    }
6161}
6162#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6163#[repr(i32)]
6164pub enum RowCompareType {
6165    Undefined = 0,
6166    RowcompareLt = 1,
6167    RowcompareLe = 2,
6168    RowcompareEq = 3,
6169    RowcompareGe = 4,
6170    RowcompareGt = 5,
6171    RowcompareNe = 6,
6172}
6173impl RowCompareType {
6174    /// String value of the enum field names used in the ProtoBuf definition.
6175    ///
6176    /// The values are not transformed in any way and thus are considered stable
6177    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6178    pub fn as_str_name(&self) -> &'static str {
6179        match self {
6180            Self::Undefined => "ROW_COMPARE_TYPE_UNDEFINED",
6181            Self::RowcompareLt => "ROWCOMPARE_LT",
6182            Self::RowcompareLe => "ROWCOMPARE_LE",
6183            Self::RowcompareEq => "ROWCOMPARE_EQ",
6184            Self::RowcompareGe => "ROWCOMPARE_GE",
6185            Self::RowcompareGt => "ROWCOMPARE_GT",
6186            Self::RowcompareNe => "ROWCOMPARE_NE",
6187        }
6188    }
6189    /// Creates an enum from field names used in the ProtoBuf definition.
6190    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6191        match value {
6192            "ROW_COMPARE_TYPE_UNDEFINED" => Some(Self::Undefined),
6193            "ROWCOMPARE_LT" => Some(Self::RowcompareLt),
6194            "ROWCOMPARE_LE" => Some(Self::RowcompareLe),
6195            "ROWCOMPARE_EQ" => Some(Self::RowcompareEq),
6196            "ROWCOMPARE_GE" => Some(Self::RowcompareGe),
6197            "ROWCOMPARE_GT" => Some(Self::RowcompareGt),
6198            "ROWCOMPARE_NE" => Some(Self::RowcompareNe),
6199            _ => None,
6200        }
6201    }
6202}
6203#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6204#[repr(i32)]
6205pub enum MinMaxOp {
6206    Undefined = 0,
6207    IsGreatest = 1,
6208    IsLeast = 2,
6209}
6210impl MinMaxOp {
6211    /// String value of the enum field names used in the ProtoBuf definition.
6212    ///
6213    /// The values are not transformed in any way and thus are considered stable
6214    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6215    pub fn as_str_name(&self) -> &'static str {
6216        match self {
6217            Self::Undefined => "MIN_MAX_OP_UNDEFINED",
6218            Self::IsGreatest => "IS_GREATEST",
6219            Self::IsLeast => "IS_LEAST",
6220        }
6221    }
6222    /// Creates an enum from field names used in the ProtoBuf definition.
6223    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6224        match value {
6225            "MIN_MAX_OP_UNDEFINED" => Some(Self::Undefined),
6226            "IS_GREATEST" => Some(Self::IsGreatest),
6227            "IS_LEAST" => Some(Self::IsLeast),
6228            _ => None,
6229        }
6230    }
6231}
6232#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6233#[repr(i32)]
6234pub enum SqlValueFunctionOp {
6235    SqlvalueFunctionOpUndefined = 0,
6236    SvfopCurrentDate = 1,
6237    SvfopCurrentTime = 2,
6238    SvfopCurrentTimeN = 3,
6239    SvfopCurrentTimestamp = 4,
6240    SvfopCurrentTimestampN = 5,
6241    SvfopLocaltime = 6,
6242    SvfopLocaltimeN = 7,
6243    SvfopLocaltimestamp = 8,
6244    SvfopLocaltimestampN = 9,
6245    SvfopCurrentRole = 10,
6246    SvfopCurrentUser = 11,
6247    SvfopUser = 12,
6248    SvfopSessionUser = 13,
6249    SvfopCurrentCatalog = 14,
6250    SvfopCurrentSchema = 15,
6251}
6252impl SqlValueFunctionOp {
6253    /// String value of the enum field names used in the ProtoBuf definition.
6254    ///
6255    /// The values are not transformed in any way and thus are considered stable
6256    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6257    pub fn as_str_name(&self) -> &'static str {
6258        match self {
6259            Self::SqlvalueFunctionOpUndefined => "SQLVALUE_FUNCTION_OP_UNDEFINED",
6260            Self::SvfopCurrentDate => "SVFOP_CURRENT_DATE",
6261            Self::SvfopCurrentTime => "SVFOP_CURRENT_TIME",
6262            Self::SvfopCurrentTimeN => "SVFOP_CURRENT_TIME_N",
6263            Self::SvfopCurrentTimestamp => "SVFOP_CURRENT_TIMESTAMP",
6264            Self::SvfopCurrentTimestampN => "SVFOP_CURRENT_TIMESTAMP_N",
6265            Self::SvfopLocaltime => "SVFOP_LOCALTIME",
6266            Self::SvfopLocaltimeN => "SVFOP_LOCALTIME_N",
6267            Self::SvfopLocaltimestamp => "SVFOP_LOCALTIMESTAMP",
6268            Self::SvfopLocaltimestampN => "SVFOP_LOCALTIMESTAMP_N",
6269            Self::SvfopCurrentRole => "SVFOP_CURRENT_ROLE",
6270            Self::SvfopCurrentUser => "SVFOP_CURRENT_USER",
6271            Self::SvfopUser => "SVFOP_USER",
6272            Self::SvfopSessionUser => "SVFOP_SESSION_USER",
6273            Self::SvfopCurrentCatalog => "SVFOP_CURRENT_CATALOG",
6274            Self::SvfopCurrentSchema => "SVFOP_CURRENT_SCHEMA",
6275        }
6276    }
6277    /// Creates an enum from field names used in the ProtoBuf definition.
6278    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6279        match value {
6280            "SQLVALUE_FUNCTION_OP_UNDEFINED" => Some(Self::SqlvalueFunctionOpUndefined),
6281            "SVFOP_CURRENT_DATE" => Some(Self::SvfopCurrentDate),
6282            "SVFOP_CURRENT_TIME" => Some(Self::SvfopCurrentTime),
6283            "SVFOP_CURRENT_TIME_N" => Some(Self::SvfopCurrentTimeN),
6284            "SVFOP_CURRENT_TIMESTAMP" => Some(Self::SvfopCurrentTimestamp),
6285            "SVFOP_CURRENT_TIMESTAMP_N" => Some(Self::SvfopCurrentTimestampN),
6286            "SVFOP_LOCALTIME" => Some(Self::SvfopLocaltime),
6287            "SVFOP_LOCALTIME_N" => Some(Self::SvfopLocaltimeN),
6288            "SVFOP_LOCALTIMESTAMP" => Some(Self::SvfopLocaltimestamp),
6289            "SVFOP_LOCALTIMESTAMP_N" => Some(Self::SvfopLocaltimestampN),
6290            "SVFOP_CURRENT_ROLE" => Some(Self::SvfopCurrentRole),
6291            "SVFOP_CURRENT_USER" => Some(Self::SvfopCurrentUser),
6292            "SVFOP_USER" => Some(Self::SvfopUser),
6293            "SVFOP_SESSION_USER" => Some(Self::SvfopSessionUser),
6294            "SVFOP_CURRENT_CATALOG" => Some(Self::SvfopCurrentCatalog),
6295            "SVFOP_CURRENT_SCHEMA" => Some(Self::SvfopCurrentSchema),
6296            _ => None,
6297        }
6298    }
6299}
6300#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6301#[repr(i32)]
6302pub enum XmlExprOp {
6303    Undefined = 0,
6304    IsXmlconcat = 1,
6305    IsXmlelement = 2,
6306    IsXmlforest = 3,
6307    IsXmlparse = 4,
6308    IsXmlpi = 5,
6309    IsXmlroot = 6,
6310    IsXmlserialize = 7,
6311    IsDocument = 8,
6312}
6313impl XmlExprOp {
6314    /// String value of the enum field names used in the ProtoBuf definition.
6315    ///
6316    /// The values are not transformed in any way and thus are considered stable
6317    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6318    pub fn as_str_name(&self) -> &'static str {
6319        match self {
6320            Self::Undefined => "XML_EXPR_OP_UNDEFINED",
6321            Self::IsXmlconcat => "IS_XMLCONCAT",
6322            Self::IsXmlelement => "IS_XMLELEMENT",
6323            Self::IsXmlforest => "IS_XMLFOREST",
6324            Self::IsXmlparse => "IS_XMLPARSE",
6325            Self::IsXmlpi => "IS_XMLPI",
6326            Self::IsXmlroot => "IS_XMLROOT",
6327            Self::IsXmlserialize => "IS_XMLSERIALIZE",
6328            Self::IsDocument => "IS_DOCUMENT",
6329        }
6330    }
6331    /// Creates an enum from field names used in the ProtoBuf definition.
6332    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6333        match value {
6334            "XML_EXPR_OP_UNDEFINED" => Some(Self::Undefined),
6335            "IS_XMLCONCAT" => Some(Self::IsXmlconcat),
6336            "IS_XMLELEMENT" => Some(Self::IsXmlelement),
6337            "IS_XMLFOREST" => Some(Self::IsXmlforest),
6338            "IS_XMLPARSE" => Some(Self::IsXmlparse),
6339            "IS_XMLPI" => Some(Self::IsXmlpi),
6340            "IS_XMLROOT" => Some(Self::IsXmlroot),
6341            "IS_XMLSERIALIZE" => Some(Self::IsXmlserialize),
6342            "IS_DOCUMENT" => Some(Self::IsDocument),
6343            _ => None,
6344        }
6345    }
6346}
6347#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6348#[repr(i32)]
6349pub enum XmlOptionType {
6350    Undefined = 0,
6351    XmloptionDocument = 1,
6352    XmloptionContent = 2,
6353}
6354impl XmlOptionType {
6355    /// String value of the enum field names used in the ProtoBuf definition.
6356    ///
6357    /// The values are not transformed in any way and thus are considered stable
6358    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6359    pub fn as_str_name(&self) -> &'static str {
6360        match self {
6361            Self::Undefined => "XML_OPTION_TYPE_UNDEFINED",
6362            Self::XmloptionDocument => "XMLOPTION_DOCUMENT",
6363            Self::XmloptionContent => "XMLOPTION_CONTENT",
6364        }
6365    }
6366    /// Creates an enum from field names used in the ProtoBuf definition.
6367    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6368        match value {
6369            "XML_OPTION_TYPE_UNDEFINED" => Some(Self::Undefined),
6370            "XMLOPTION_DOCUMENT" => Some(Self::XmloptionDocument),
6371            "XMLOPTION_CONTENT" => Some(Self::XmloptionContent),
6372            _ => None,
6373        }
6374    }
6375}
6376#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6377#[repr(i32)]
6378pub enum JsonEncoding {
6379    Undefined = 0,
6380    JsEncDefault = 1,
6381    JsEncUtf8 = 2,
6382    JsEncUtf16 = 3,
6383    JsEncUtf32 = 4,
6384}
6385impl JsonEncoding {
6386    /// String value of the enum field names used in the ProtoBuf definition.
6387    ///
6388    /// The values are not transformed in any way and thus are considered stable
6389    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6390    pub fn as_str_name(&self) -> &'static str {
6391        match self {
6392            Self::Undefined => "JSON_ENCODING_UNDEFINED",
6393            Self::JsEncDefault => "JS_ENC_DEFAULT",
6394            Self::JsEncUtf8 => "JS_ENC_UTF8",
6395            Self::JsEncUtf16 => "JS_ENC_UTF16",
6396            Self::JsEncUtf32 => "JS_ENC_UTF32",
6397        }
6398    }
6399    /// Creates an enum from field names used in the ProtoBuf definition.
6400    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6401        match value {
6402            "JSON_ENCODING_UNDEFINED" => Some(Self::Undefined),
6403            "JS_ENC_DEFAULT" => Some(Self::JsEncDefault),
6404            "JS_ENC_UTF8" => Some(Self::JsEncUtf8),
6405            "JS_ENC_UTF16" => Some(Self::JsEncUtf16),
6406            "JS_ENC_UTF32" => Some(Self::JsEncUtf32),
6407            _ => None,
6408        }
6409    }
6410}
6411#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6412#[repr(i32)]
6413pub enum JsonFormatType {
6414    Undefined = 0,
6415    JsFormatDefault = 1,
6416    JsFormatJson = 2,
6417    JsFormatJsonb = 3,
6418}
6419impl JsonFormatType {
6420    /// String value of the enum field names used in the ProtoBuf definition.
6421    ///
6422    /// The values are not transformed in any way and thus are considered stable
6423    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6424    pub fn as_str_name(&self) -> &'static str {
6425        match self {
6426            Self::Undefined => "JSON_FORMAT_TYPE_UNDEFINED",
6427            Self::JsFormatDefault => "JS_FORMAT_DEFAULT",
6428            Self::JsFormatJson => "JS_FORMAT_JSON",
6429            Self::JsFormatJsonb => "JS_FORMAT_JSONB",
6430        }
6431    }
6432    /// Creates an enum from field names used in the ProtoBuf definition.
6433    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6434        match value {
6435            "JSON_FORMAT_TYPE_UNDEFINED" => Some(Self::Undefined),
6436            "JS_FORMAT_DEFAULT" => Some(Self::JsFormatDefault),
6437            "JS_FORMAT_JSON" => Some(Self::JsFormatJson),
6438            "JS_FORMAT_JSONB" => Some(Self::JsFormatJsonb),
6439            _ => None,
6440        }
6441    }
6442}
6443#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6444#[repr(i32)]
6445pub enum JsonConstructorType {
6446    Undefined = 0,
6447    JsctorJsonObject = 1,
6448    JsctorJsonArray = 2,
6449    JsctorJsonObjectagg = 3,
6450    JsctorJsonArrayagg = 4,
6451    JsctorJsonParse = 5,
6452    JsctorJsonScalar = 6,
6453    JsctorJsonSerialize = 7,
6454}
6455impl JsonConstructorType {
6456    /// String value of the enum field names used in the ProtoBuf definition.
6457    ///
6458    /// The values are not transformed in any way and thus are considered stable
6459    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6460    pub fn as_str_name(&self) -> &'static str {
6461        match self {
6462            Self::Undefined => "JSON_CONSTRUCTOR_TYPE_UNDEFINED",
6463            Self::JsctorJsonObject => "JSCTOR_JSON_OBJECT",
6464            Self::JsctorJsonArray => "JSCTOR_JSON_ARRAY",
6465            Self::JsctorJsonObjectagg => "JSCTOR_JSON_OBJECTAGG",
6466            Self::JsctorJsonArrayagg => "JSCTOR_JSON_ARRAYAGG",
6467            Self::JsctorJsonParse => "JSCTOR_JSON_PARSE",
6468            Self::JsctorJsonScalar => "JSCTOR_JSON_SCALAR",
6469            Self::JsctorJsonSerialize => "JSCTOR_JSON_SERIALIZE",
6470        }
6471    }
6472    /// Creates an enum from field names used in the ProtoBuf definition.
6473    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6474        match value {
6475            "JSON_CONSTRUCTOR_TYPE_UNDEFINED" => Some(Self::Undefined),
6476            "JSCTOR_JSON_OBJECT" => Some(Self::JsctorJsonObject),
6477            "JSCTOR_JSON_ARRAY" => Some(Self::JsctorJsonArray),
6478            "JSCTOR_JSON_OBJECTAGG" => Some(Self::JsctorJsonObjectagg),
6479            "JSCTOR_JSON_ARRAYAGG" => Some(Self::JsctorJsonArrayagg),
6480            "JSCTOR_JSON_PARSE" => Some(Self::JsctorJsonParse),
6481            "JSCTOR_JSON_SCALAR" => Some(Self::JsctorJsonScalar),
6482            "JSCTOR_JSON_SERIALIZE" => Some(Self::JsctorJsonSerialize),
6483            _ => None,
6484        }
6485    }
6486}
6487#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6488#[repr(i32)]
6489pub enum JsonValueType {
6490    Undefined = 0,
6491    JsTypeAny = 1,
6492    JsTypeObject = 2,
6493    JsTypeArray = 3,
6494    JsTypeScalar = 4,
6495}
6496impl JsonValueType {
6497    /// String value of the enum field names used in the ProtoBuf definition.
6498    ///
6499    /// The values are not transformed in any way and thus are considered stable
6500    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6501    pub fn as_str_name(&self) -> &'static str {
6502        match self {
6503            Self::Undefined => "JSON_VALUE_TYPE_UNDEFINED",
6504            Self::JsTypeAny => "JS_TYPE_ANY",
6505            Self::JsTypeObject => "JS_TYPE_OBJECT",
6506            Self::JsTypeArray => "JS_TYPE_ARRAY",
6507            Self::JsTypeScalar => "JS_TYPE_SCALAR",
6508        }
6509    }
6510    /// Creates an enum from field names used in the ProtoBuf definition.
6511    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6512        match value {
6513            "JSON_VALUE_TYPE_UNDEFINED" => Some(Self::Undefined),
6514            "JS_TYPE_ANY" => Some(Self::JsTypeAny),
6515            "JS_TYPE_OBJECT" => Some(Self::JsTypeObject),
6516            "JS_TYPE_ARRAY" => Some(Self::JsTypeArray),
6517            "JS_TYPE_SCALAR" => Some(Self::JsTypeScalar),
6518            _ => None,
6519        }
6520    }
6521}
6522#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6523#[repr(i32)]
6524pub enum JsonWrapper {
6525    Undefined = 0,
6526    JswUnspec = 1,
6527    JswNone = 2,
6528    JswConditional = 3,
6529    JswUnconditional = 4,
6530}
6531impl JsonWrapper {
6532    /// String value of the enum field names used in the ProtoBuf definition.
6533    ///
6534    /// The values are not transformed in any way and thus are considered stable
6535    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6536    pub fn as_str_name(&self) -> &'static str {
6537        match self {
6538            Self::Undefined => "JSON_WRAPPER_UNDEFINED",
6539            Self::JswUnspec => "JSW_UNSPEC",
6540            Self::JswNone => "JSW_NONE",
6541            Self::JswConditional => "JSW_CONDITIONAL",
6542            Self::JswUnconditional => "JSW_UNCONDITIONAL",
6543        }
6544    }
6545    /// Creates an enum from field names used in the ProtoBuf definition.
6546    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6547        match value {
6548            "JSON_WRAPPER_UNDEFINED" => Some(Self::Undefined),
6549            "JSW_UNSPEC" => Some(Self::JswUnspec),
6550            "JSW_NONE" => Some(Self::JswNone),
6551            "JSW_CONDITIONAL" => Some(Self::JswConditional),
6552            "JSW_UNCONDITIONAL" => Some(Self::JswUnconditional),
6553            _ => None,
6554        }
6555    }
6556}
6557#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6558#[repr(i32)]
6559pub enum JsonBehaviorType {
6560    Undefined = 0,
6561    JsonBehaviorNull = 1,
6562    JsonBehaviorError = 2,
6563    JsonBehaviorEmpty = 3,
6564    JsonBehaviorTrue = 4,
6565    JsonBehaviorFalse = 5,
6566    JsonBehaviorUnknown = 6,
6567    JsonBehaviorEmptyArray = 7,
6568    JsonBehaviorEmptyObject = 8,
6569    JsonBehaviorDefault = 9,
6570}
6571impl JsonBehaviorType {
6572    /// String value of the enum field names used in the ProtoBuf definition.
6573    ///
6574    /// The values are not transformed in any way and thus are considered stable
6575    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6576    pub fn as_str_name(&self) -> &'static str {
6577        match self {
6578            Self::Undefined => "JSON_BEHAVIOR_TYPE_UNDEFINED",
6579            Self::JsonBehaviorNull => "JSON_BEHAVIOR_NULL",
6580            Self::JsonBehaviorError => "JSON_BEHAVIOR_ERROR",
6581            Self::JsonBehaviorEmpty => "JSON_BEHAVIOR_EMPTY",
6582            Self::JsonBehaviorTrue => "JSON_BEHAVIOR_TRUE",
6583            Self::JsonBehaviorFalse => "JSON_BEHAVIOR_FALSE",
6584            Self::JsonBehaviorUnknown => "JSON_BEHAVIOR_UNKNOWN",
6585            Self::JsonBehaviorEmptyArray => "JSON_BEHAVIOR_EMPTY_ARRAY",
6586            Self::JsonBehaviorEmptyObject => "JSON_BEHAVIOR_EMPTY_OBJECT",
6587            Self::JsonBehaviorDefault => "JSON_BEHAVIOR_DEFAULT",
6588        }
6589    }
6590    /// Creates an enum from field names used in the ProtoBuf definition.
6591    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6592        match value {
6593            "JSON_BEHAVIOR_TYPE_UNDEFINED" => Some(Self::Undefined),
6594            "JSON_BEHAVIOR_NULL" => Some(Self::JsonBehaviorNull),
6595            "JSON_BEHAVIOR_ERROR" => Some(Self::JsonBehaviorError),
6596            "JSON_BEHAVIOR_EMPTY" => Some(Self::JsonBehaviorEmpty),
6597            "JSON_BEHAVIOR_TRUE" => Some(Self::JsonBehaviorTrue),
6598            "JSON_BEHAVIOR_FALSE" => Some(Self::JsonBehaviorFalse),
6599            "JSON_BEHAVIOR_UNKNOWN" => Some(Self::JsonBehaviorUnknown),
6600            "JSON_BEHAVIOR_EMPTY_ARRAY" => Some(Self::JsonBehaviorEmptyArray),
6601            "JSON_BEHAVIOR_EMPTY_OBJECT" => Some(Self::JsonBehaviorEmptyObject),
6602            "JSON_BEHAVIOR_DEFAULT" => Some(Self::JsonBehaviorDefault),
6603            _ => None,
6604        }
6605    }
6606}
6607#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6608#[repr(i32)]
6609pub enum JsonExprOp {
6610    Undefined = 0,
6611    JsonExistsOp = 1,
6612    JsonQueryOp = 2,
6613    JsonValueOp = 3,
6614    JsonTableOp = 4,
6615}
6616impl JsonExprOp {
6617    /// String value of the enum field names used in the ProtoBuf definition.
6618    ///
6619    /// The values are not transformed in any way and thus are considered stable
6620    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6621    pub fn as_str_name(&self) -> &'static str {
6622        match self {
6623            Self::Undefined => "JSON_EXPR_OP_UNDEFINED",
6624            Self::JsonExistsOp => "JSON_EXISTS_OP",
6625            Self::JsonQueryOp => "JSON_QUERY_OP",
6626            Self::JsonValueOp => "JSON_VALUE_OP",
6627            Self::JsonTableOp => "JSON_TABLE_OP",
6628        }
6629    }
6630    /// Creates an enum from field names used in the ProtoBuf definition.
6631    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6632        match value {
6633            "JSON_EXPR_OP_UNDEFINED" => Some(Self::Undefined),
6634            "JSON_EXISTS_OP" => Some(Self::JsonExistsOp),
6635            "JSON_QUERY_OP" => Some(Self::JsonQueryOp),
6636            "JSON_VALUE_OP" => Some(Self::JsonValueOp),
6637            "JSON_TABLE_OP" => Some(Self::JsonTableOp),
6638            _ => None,
6639        }
6640    }
6641}
6642#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6643#[repr(i32)]
6644pub enum NullTestType {
6645    Undefined = 0,
6646    IsNull = 1,
6647    IsNotNull = 2,
6648}
6649impl NullTestType {
6650    /// String value of the enum field names used in the ProtoBuf definition.
6651    ///
6652    /// The values are not transformed in any way and thus are considered stable
6653    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6654    pub fn as_str_name(&self) -> &'static str {
6655        match self {
6656            Self::Undefined => "NULL_TEST_TYPE_UNDEFINED",
6657            Self::IsNull => "IS_NULL",
6658            Self::IsNotNull => "IS_NOT_NULL",
6659        }
6660    }
6661    /// Creates an enum from field names used in the ProtoBuf definition.
6662    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6663        match value {
6664            "NULL_TEST_TYPE_UNDEFINED" => Some(Self::Undefined),
6665            "IS_NULL" => Some(Self::IsNull),
6666            "IS_NOT_NULL" => Some(Self::IsNotNull),
6667            _ => None,
6668        }
6669    }
6670}
6671#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6672#[repr(i32)]
6673pub enum BoolTestType {
6674    Undefined = 0,
6675    IsTrue = 1,
6676    IsNotTrue = 2,
6677    IsFalse = 3,
6678    IsNotFalse = 4,
6679    IsUnknown = 5,
6680    IsNotUnknown = 6,
6681}
6682impl BoolTestType {
6683    /// String value of the enum field names used in the ProtoBuf definition.
6684    ///
6685    /// The values are not transformed in any way and thus are considered stable
6686    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6687    pub fn as_str_name(&self) -> &'static str {
6688        match self {
6689            Self::Undefined => "BOOL_TEST_TYPE_UNDEFINED",
6690            Self::IsTrue => "IS_TRUE",
6691            Self::IsNotTrue => "IS_NOT_TRUE",
6692            Self::IsFalse => "IS_FALSE",
6693            Self::IsNotFalse => "IS_NOT_FALSE",
6694            Self::IsUnknown => "IS_UNKNOWN",
6695            Self::IsNotUnknown => "IS_NOT_UNKNOWN",
6696        }
6697    }
6698    /// Creates an enum from field names used in the ProtoBuf definition.
6699    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6700        match value {
6701            "BOOL_TEST_TYPE_UNDEFINED" => Some(Self::Undefined),
6702            "IS_TRUE" => Some(Self::IsTrue),
6703            "IS_NOT_TRUE" => Some(Self::IsNotTrue),
6704            "IS_FALSE" => Some(Self::IsFalse),
6705            "IS_NOT_FALSE" => Some(Self::IsNotFalse),
6706            "IS_UNKNOWN" => Some(Self::IsUnknown),
6707            "IS_NOT_UNKNOWN" => Some(Self::IsNotUnknown),
6708            _ => None,
6709        }
6710    }
6711}
6712#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6713#[repr(i32)]
6714pub enum MergeMatchKind {
6715    Undefined = 0,
6716    MergeWhenMatched = 1,
6717    MergeWhenNotMatchedBySource = 2,
6718    MergeWhenNotMatchedByTarget = 3,
6719}
6720impl MergeMatchKind {
6721    /// String value of the enum field names used in the ProtoBuf definition.
6722    ///
6723    /// The values are not transformed in any way and thus are considered stable
6724    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6725    pub fn as_str_name(&self) -> &'static str {
6726        match self {
6727            Self::Undefined => "MERGE_MATCH_KIND_UNDEFINED",
6728            Self::MergeWhenMatched => "MERGE_WHEN_MATCHED",
6729            Self::MergeWhenNotMatchedBySource => "MERGE_WHEN_NOT_MATCHED_BY_SOURCE",
6730            Self::MergeWhenNotMatchedByTarget => "MERGE_WHEN_NOT_MATCHED_BY_TARGET",
6731        }
6732    }
6733    /// Creates an enum from field names used in the ProtoBuf definition.
6734    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6735        match value {
6736            "MERGE_MATCH_KIND_UNDEFINED" => Some(Self::Undefined),
6737            "MERGE_WHEN_MATCHED" => Some(Self::MergeWhenMatched),
6738            "MERGE_WHEN_NOT_MATCHED_BY_SOURCE" => Some(Self::MergeWhenNotMatchedBySource),
6739            "MERGE_WHEN_NOT_MATCHED_BY_TARGET" => Some(Self::MergeWhenNotMatchedByTarget),
6740            _ => None,
6741        }
6742    }
6743}
6744#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6745#[repr(i32)]
6746pub enum CmdType {
6747    Undefined = 0,
6748    CmdUnknown = 1,
6749    CmdSelect = 2,
6750    CmdUpdate = 3,
6751    CmdInsert = 4,
6752    CmdDelete = 5,
6753    CmdMerge = 6,
6754    CmdUtility = 7,
6755    CmdNothing = 8,
6756}
6757impl CmdType {
6758    /// String value of the enum field names used in the ProtoBuf definition.
6759    ///
6760    /// The values are not transformed in any way and thus are considered stable
6761    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6762    pub fn as_str_name(&self) -> &'static str {
6763        match self {
6764            Self::Undefined => "CMD_TYPE_UNDEFINED",
6765            Self::CmdUnknown => "CMD_UNKNOWN",
6766            Self::CmdSelect => "CMD_SELECT",
6767            Self::CmdUpdate => "CMD_UPDATE",
6768            Self::CmdInsert => "CMD_INSERT",
6769            Self::CmdDelete => "CMD_DELETE",
6770            Self::CmdMerge => "CMD_MERGE",
6771            Self::CmdUtility => "CMD_UTILITY",
6772            Self::CmdNothing => "CMD_NOTHING",
6773        }
6774    }
6775    /// Creates an enum from field names used in the ProtoBuf definition.
6776    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6777        match value {
6778            "CMD_TYPE_UNDEFINED" => Some(Self::Undefined),
6779            "CMD_UNKNOWN" => Some(Self::CmdUnknown),
6780            "CMD_SELECT" => Some(Self::CmdSelect),
6781            "CMD_UPDATE" => Some(Self::CmdUpdate),
6782            "CMD_INSERT" => Some(Self::CmdInsert),
6783            "CMD_DELETE" => Some(Self::CmdDelete),
6784            "CMD_MERGE" => Some(Self::CmdMerge),
6785            "CMD_UTILITY" => Some(Self::CmdUtility),
6786            "CMD_NOTHING" => Some(Self::CmdNothing),
6787            _ => None,
6788        }
6789    }
6790}
6791#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6792#[repr(i32)]
6793pub enum JoinType {
6794    Undefined = 0,
6795    JoinInner = 1,
6796    JoinLeft = 2,
6797    JoinFull = 3,
6798    JoinRight = 4,
6799    JoinSemi = 5,
6800    JoinAnti = 6,
6801    JoinRightAnti = 7,
6802    JoinUniqueOuter = 8,
6803    JoinUniqueInner = 9,
6804}
6805impl JoinType {
6806    /// String value of the enum field names used in the ProtoBuf definition.
6807    ///
6808    /// The values are not transformed in any way and thus are considered stable
6809    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6810    pub fn as_str_name(&self) -> &'static str {
6811        match self {
6812            Self::Undefined => "JOIN_TYPE_UNDEFINED",
6813            Self::JoinInner => "JOIN_INNER",
6814            Self::JoinLeft => "JOIN_LEFT",
6815            Self::JoinFull => "JOIN_FULL",
6816            Self::JoinRight => "JOIN_RIGHT",
6817            Self::JoinSemi => "JOIN_SEMI",
6818            Self::JoinAnti => "JOIN_ANTI",
6819            Self::JoinRightAnti => "JOIN_RIGHT_ANTI",
6820            Self::JoinUniqueOuter => "JOIN_UNIQUE_OUTER",
6821            Self::JoinUniqueInner => "JOIN_UNIQUE_INNER",
6822        }
6823    }
6824    /// Creates an enum from field names used in the ProtoBuf definition.
6825    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6826        match value {
6827            "JOIN_TYPE_UNDEFINED" => Some(Self::Undefined),
6828            "JOIN_INNER" => Some(Self::JoinInner),
6829            "JOIN_LEFT" => Some(Self::JoinLeft),
6830            "JOIN_FULL" => Some(Self::JoinFull),
6831            "JOIN_RIGHT" => Some(Self::JoinRight),
6832            "JOIN_SEMI" => Some(Self::JoinSemi),
6833            "JOIN_ANTI" => Some(Self::JoinAnti),
6834            "JOIN_RIGHT_ANTI" => Some(Self::JoinRightAnti),
6835            "JOIN_UNIQUE_OUTER" => Some(Self::JoinUniqueOuter),
6836            "JOIN_UNIQUE_INNER" => Some(Self::JoinUniqueInner),
6837            _ => None,
6838        }
6839    }
6840}
6841#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6842#[repr(i32)]
6843pub enum AggStrategy {
6844    Undefined = 0,
6845    AggPlain = 1,
6846    AggSorted = 2,
6847    AggHashed = 3,
6848    AggMixed = 4,
6849}
6850impl AggStrategy {
6851    /// String value of the enum field names used in the ProtoBuf definition.
6852    ///
6853    /// The values are not transformed in any way and thus are considered stable
6854    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6855    pub fn as_str_name(&self) -> &'static str {
6856        match self {
6857            Self::Undefined => "AGG_STRATEGY_UNDEFINED",
6858            Self::AggPlain => "AGG_PLAIN",
6859            Self::AggSorted => "AGG_SORTED",
6860            Self::AggHashed => "AGG_HASHED",
6861            Self::AggMixed => "AGG_MIXED",
6862        }
6863    }
6864    /// Creates an enum from field names used in the ProtoBuf definition.
6865    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6866        match value {
6867            "AGG_STRATEGY_UNDEFINED" => Some(Self::Undefined),
6868            "AGG_PLAIN" => Some(Self::AggPlain),
6869            "AGG_SORTED" => Some(Self::AggSorted),
6870            "AGG_HASHED" => Some(Self::AggHashed),
6871            "AGG_MIXED" => Some(Self::AggMixed),
6872            _ => None,
6873        }
6874    }
6875}
6876#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6877#[repr(i32)]
6878pub enum AggSplit {
6879    Undefined = 0,
6880    AggsplitSimple = 1,
6881    AggsplitInitialSerial = 2,
6882    AggsplitFinalDeserial = 3,
6883}
6884impl AggSplit {
6885    /// String value of the enum field names used in the ProtoBuf definition.
6886    ///
6887    /// The values are not transformed in any way and thus are considered stable
6888    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6889    pub fn as_str_name(&self) -> &'static str {
6890        match self {
6891            Self::Undefined => "AGG_SPLIT_UNDEFINED",
6892            Self::AggsplitSimple => "AGGSPLIT_SIMPLE",
6893            Self::AggsplitInitialSerial => "AGGSPLIT_INITIAL_SERIAL",
6894            Self::AggsplitFinalDeserial => "AGGSPLIT_FINAL_DESERIAL",
6895        }
6896    }
6897    /// Creates an enum from field names used in the ProtoBuf definition.
6898    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6899        match value {
6900            "AGG_SPLIT_UNDEFINED" => Some(Self::Undefined),
6901            "AGGSPLIT_SIMPLE" => Some(Self::AggsplitSimple),
6902            "AGGSPLIT_INITIAL_SERIAL" => Some(Self::AggsplitInitialSerial),
6903            "AGGSPLIT_FINAL_DESERIAL" => Some(Self::AggsplitFinalDeserial),
6904            _ => None,
6905        }
6906    }
6907}
6908#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6909#[repr(i32)]
6910pub enum SetOpCmd {
6911    Undefined = 0,
6912    SetopcmdIntersect = 1,
6913    SetopcmdIntersectAll = 2,
6914    SetopcmdExcept = 3,
6915    SetopcmdExceptAll = 4,
6916}
6917impl SetOpCmd {
6918    /// String value of the enum field names used in the ProtoBuf definition.
6919    ///
6920    /// The values are not transformed in any way and thus are considered stable
6921    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6922    pub fn as_str_name(&self) -> &'static str {
6923        match self {
6924            Self::Undefined => "SET_OP_CMD_UNDEFINED",
6925            Self::SetopcmdIntersect => "SETOPCMD_INTERSECT",
6926            Self::SetopcmdIntersectAll => "SETOPCMD_INTERSECT_ALL",
6927            Self::SetopcmdExcept => "SETOPCMD_EXCEPT",
6928            Self::SetopcmdExceptAll => "SETOPCMD_EXCEPT_ALL",
6929        }
6930    }
6931    /// Creates an enum from field names used in the ProtoBuf definition.
6932    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6933        match value {
6934            "SET_OP_CMD_UNDEFINED" => Some(Self::Undefined),
6935            "SETOPCMD_INTERSECT" => Some(Self::SetopcmdIntersect),
6936            "SETOPCMD_INTERSECT_ALL" => Some(Self::SetopcmdIntersectAll),
6937            "SETOPCMD_EXCEPT" => Some(Self::SetopcmdExcept),
6938            "SETOPCMD_EXCEPT_ALL" => Some(Self::SetopcmdExceptAll),
6939            _ => None,
6940        }
6941    }
6942}
6943#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6944#[repr(i32)]
6945pub enum SetOpStrategy {
6946    Undefined = 0,
6947    SetopSorted = 1,
6948    SetopHashed = 2,
6949}
6950impl SetOpStrategy {
6951    /// String value of the enum field names used in the ProtoBuf definition.
6952    ///
6953    /// The values are not transformed in any way and thus are considered stable
6954    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6955    pub fn as_str_name(&self) -> &'static str {
6956        match self {
6957            Self::Undefined => "SET_OP_STRATEGY_UNDEFINED",
6958            Self::SetopSorted => "SETOP_SORTED",
6959            Self::SetopHashed => "SETOP_HASHED",
6960        }
6961    }
6962    /// Creates an enum from field names used in the ProtoBuf definition.
6963    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6964        match value {
6965            "SET_OP_STRATEGY_UNDEFINED" => Some(Self::Undefined),
6966            "SETOP_SORTED" => Some(Self::SetopSorted),
6967            "SETOP_HASHED" => Some(Self::SetopHashed),
6968            _ => None,
6969        }
6970    }
6971}
6972#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6973#[repr(i32)]
6974pub enum OnConflictAction {
6975    Undefined = 0,
6976    OnconflictNone = 1,
6977    OnconflictNothing = 2,
6978    OnconflictUpdate = 3,
6979}
6980impl OnConflictAction {
6981    /// String value of the enum field names used in the ProtoBuf definition.
6982    ///
6983    /// The values are not transformed in any way and thus are considered stable
6984    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6985    pub fn as_str_name(&self) -> &'static str {
6986        match self {
6987            Self::Undefined => "ON_CONFLICT_ACTION_UNDEFINED",
6988            Self::OnconflictNone => "ONCONFLICT_NONE",
6989            Self::OnconflictNothing => "ONCONFLICT_NOTHING",
6990            Self::OnconflictUpdate => "ONCONFLICT_UPDATE",
6991        }
6992    }
6993    /// Creates an enum from field names used in the ProtoBuf definition.
6994    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6995        match value {
6996            "ON_CONFLICT_ACTION_UNDEFINED" => Some(Self::Undefined),
6997            "ONCONFLICT_NONE" => Some(Self::OnconflictNone),
6998            "ONCONFLICT_NOTHING" => Some(Self::OnconflictNothing),
6999            "ONCONFLICT_UPDATE" => Some(Self::OnconflictUpdate),
7000            _ => None,
7001        }
7002    }
7003}
7004#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7005#[repr(i32)]
7006pub enum LimitOption {
7007    Undefined = 0,
7008    Default = 1,
7009    Count = 2,
7010    WithTies = 3,
7011}
7012impl LimitOption {
7013    /// String value of the enum field names used in the ProtoBuf definition.
7014    ///
7015    /// The values are not transformed in any way and thus are considered stable
7016    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7017    pub fn as_str_name(&self) -> &'static str {
7018        match self {
7019            Self::Undefined => "LIMIT_OPTION_UNDEFINED",
7020            Self::Default => "LIMIT_OPTION_DEFAULT",
7021            Self::Count => "LIMIT_OPTION_COUNT",
7022            Self::WithTies => "LIMIT_OPTION_WITH_TIES",
7023        }
7024    }
7025    /// Creates an enum from field names used in the ProtoBuf definition.
7026    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7027        match value {
7028            "LIMIT_OPTION_UNDEFINED" => Some(Self::Undefined),
7029            "LIMIT_OPTION_DEFAULT" => Some(Self::Default),
7030            "LIMIT_OPTION_COUNT" => Some(Self::Count),
7031            "LIMIT_OPTION_WITH_TIES" => Some(Self::WithTies),
7032            _ => None,
7033        }
7034    }
7035}
7036#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7037#[repr(i32)]
7038pub enum LockClauseStrength {
7039    Undefined = 0,
7040    LcsNone = 1,
7041    LcsForkeyshare = 2,
7042    LcsForshare = 3,
7043    LcsFornokeyupdate = 4,
7044    LcsForupdate = 5,
7045}
7046impl LockClauseStrength {
7047    /// String value of the enum field names used in the ProtoBuf definition.
7048    ///
7049    /// The values are not transformed in any way and thus are considered stable
7050    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7051    pub fn as_str_name(&self) -> &'static str {
7052        match self {
7053            Self::Undefined => "LOCK_CLAUSE_STRENGTH_UNDEFINED",
7054            Self::LcsNone => "LCS_NONE",
7055            Self::LcsForkeyshare => "LCS_FORKEYSHARE",
7056            Self::LcsForshare => "LCS_FORSHARE",
7057            Self::LcsFornokeyupdate => "LCS_FORNOKEYUPDATE",
7058            Self::LcsForupdate => "LCS_FORUPDATE",
7059        }
7060    }
7061    /// Creates an enum from field names used in the ProtoBuf definition.
7062    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7063        match value {
7064            "LOCK_CLAUSE_STRENGTH_UNDEFINED" => Some(Self::Undefined),
7065            "LCS_NONE" => Some(Self::LcsNone),
7066            "LCS_FORKEYSHARE" => Some(Self::LcsForkeyshare),
7067            "LCS_FORSHARE" => Some(Self::LcsForshare),
7068            "LCS_FORNOKEYUPDATE" => Some(Self::LcsFornokeyupdate),
7069            "LCS_FORUPDATE" => Some(Self::LcsForupdate),
7070            _ => None,
7071        }
7072    }
7073}
7074#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7075#[repr(i32)]
7076pub enum LockWaitPolicy {
7077    Undefined = 0,
7078    LockWaitBlock = 1,
7079    LockWaitSkip = 2,
7080    LockWaitError = 3,
7081}
7082impl LockWaitPolicy {
7083    /// String value of the enum field names used in the ProtoBuf definition.
7084    ///
7085    /// The values are not transformed in any way and thus are considered stable
7086    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7087    pub fn as_str_name(&self) -> &'static str {
7088        match self {
7089            Self::Undefined => "LOCK_WAIT_POLICY_UNDEFINED",
7090            Self::LockWaitBlock => "LockWaitBlock",
7091            Self::LockWaitSkip => "LockWaitSkip",
7092            Self::LockWaitError => "LockWaitError",
7093        }
7094    }
7095    /// Creates an enum from field names used in the ProtoBuf definition.
7096    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7097        match value {
7098            "LOCK_WAIT_POLICY_UNDEFINED" => Some(Self::Undefined),
7099            "LockWaitBlock" => Some(Self::LockWaitBlock),
7100            "LockWaitSkip" => Some(Self::LockWaitSkip),
7101            "LockWaitError" => Some(Self::LockWaitError),
7102            _ => None,
7103        }
7104    }
7105}
7106#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7107#[repr(i32)]
7108pub enum LockTupleMode {
7109    Undefined = 0,
7110    LockTupleKeyShare = 1,
7111    LockTupleShare = 2,
7112    LockTupleNoKeyExclusive = 3,
7113    LockTupleExclusive = 4,
7114}
7115impl LockTupleMode {
7116    /// String value of the enum field names used in the ProtoBuf definition.
7117    ///
7118    /// The values are not transformed in any way and thus are considered stable
7119    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7120    pub fn as_str_name(&self) -> &'static str {
7121        match self {
7122            Self::Undefined => "LOCK_TUPLE_MODE_UNDEFINED",
7123            Self::LockTupleKeyShare => "LockTupleKeyShare",
7124            Self::LockTupleShare => "LockTupleShare",
7125            Self::LockTupleNoKeyExclusive => "LockTupleNoKeyExclusive",
7126            Self::LockTupleExclusive => "LockTupleExclusive",
7127        }
7128    }
7129    /// Creates an enum from field names used in the ProtoBuf definition.
7130    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7131        match value {
7132            "LOCK_TUPLE_MODE_UNDEFINED" => Some(Self::Undefined),
7133            "LockTupleKeyShare" => Some(Self::LockTupleKeyShare),
7134            "LockTupleShare" => Some(Self::LockTupleShare),
7135            "LockTupleNoKeyExclusive" => Some(Self::LockTupleNoKeyExclusive),
7136            "LockTupleExclusive" => Some(Self::LockTupleExclusive),
7137            _ => None,
7138        }
7139    }
7140}
7141#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7142#[repr(i32)]
7143pub enum KeywordKind {
7144    NoKeyword = 0,
7145    UnreservedKeyword = 1,
7146    ColNameKeyword = 2,
7147    TypeFuncNameKeyword = 3,
7148    ReservedKeyword = 4,
7149}
7150impl KeywordKind {
7151    /// String value of the enum field names used in the ProtoBuf definition.
7152    ///
7153    /// The values are not transformed in any way and thus are considered stable
7154    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7155    pub fn as_str_name(&self) -> &'static str {
7156        match self {
7157            Self::NoKeyword => "NO_KEYWORD",
7158            Self::UnreservedKeyword => "UNRESERVED_KEYWORD",
7159            Self::ColNameKeyword => "COL_NAME_KEYWORD",
7160            Self::TypeFuncNameKeyword => "TYPE_FUNC_NAME_KEYWORD",
7161            Self::ReservedKeyword => "RESERVED_KEYWORD",
7162        }
7163    }
7164    /// Creates an enum from field names used in the ProtoBuf definition.
7165    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7166        match value {
7167            "NO_KEYWORD" => Some(Self::NoKeyword),
7168            "UNRESERVED_KEYWORD" => Some(Self::UnreservedKeyword),
7169            "COL_NAME_KEYWORD" => Some(Self::ColNameKeyword),
7170            "TYPE_FUNC_NAME_KEYWORD" => Some(Self::TypeFuncNameKeyword),
7171            "RESERVED_KEYWORD" => Some(Self::ReservedKeyword),
7172            _ => None,
7173        }
7174    }
7175}
7176#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7177#[repr(i32)]
7178pub enum Token {
7179    Nul = 0,
7180    /// Single-character tokens that are returned 1:1 (identical with "self" list in scan.l)
7181    /// Either supporting syntax, or single-character operators (some can be both)
7182    /// Also see <https://www.postgresql.org/docs/12/sql-syntax-lexical.html#SQL-SYNTAX-SPECIAL-CHARS>
7183    ///
7184    /// "$"
7185    Ascii36 = 36,
7186    /// "%"
7187    Ascii37 = 37,
7188    /// "("
7189    Ascii40 = 40,
7190    /// ")"
7191    Ascii41 = 41,
7192    /// "*"
7193    Ascii42 = 42,
7194    /// "+"
7195    Ascii43 = 43,
7196    /// ","
7197    Ascii44 = 44,
7198    /// "-"
7199    Ascii45 = 45,
7200    /// "."
7201    Ascii46 = 46,
7202    /// "/"
7203    Ascii47 = 47,
7204    /// ":"
7205    Ascii58 = 58,
7206    /// ";"
7207    Ascii59 = 59,
7208    /// "<"
7209    Ascii60 = 60,
7210    /// "="
7211    Ascii61 = 61,
7212    /// ">"
7213    Ascii62 = 62,
7214    /// "?"
7215    Ascii63 = 63,
7216    /// "["
7217    Ascii91 = 91,
7218    /// "\"
7219    Ascii92 = 92,
7220    /// "]"
7221    Ascii93 = 93,
7222    /// "^"
7223    Ascii94 = 94,
7224    /// Named tokens in scan.l
7225    Ident = 258,
7226    Uident = 259,
7227    Fconst = 260,
7228    Sconst = 261,
7229    Usconst = 262,
7230    Bconst = 263,
7231    Xconst = 264,
7232    Op = 265,
7233    Iconst = 266,
7234    Param = 267,
7235    Typecast = 268,
7236    DotDot = 269,
7237    ColonEquals = 270,
7238    EqualsGreater = 271,
7239    LessEquals = 272,
7240    GreaterEquals = 273,
7241    NotEquals = 274,
7242    SqlComment = 275,
7243    CComment = 276,
7244    AbortP = 277,
7245    Absent = 278,
7246    AbsoluteP = 279,
7247    Access = 280,
7248    Action = 281,
7249    AddP = 282,
7250    Admin = 283,
7251    After = 284,
7252    Aggregate = 285,
7253    All = 286,
7254    Also = 287,
7255    Alter = 288,
7256    Always = 289,
7257    Analyse = 290,
7258    Analyze = 291,
7259    And = 292,
7260    Any = 293,
7261    Array = 294,
7262    As = 295,
7263    Asc = 296,
7264    Asensitive = 297,
7265    Assertion = 298,
7266    Assignment = 299,
7267    Asymmetric = 300,
7268    Atomic = 301,
7269    At = 302,
7270    Attach = 303,
7271    Attribute = 304,
7272    Authorization = 305,
7273    Backward = 306,
7274    Before = 307,
7275    BeginP = 308,
7276    Between = 309,
7277    Bigint = 310,
7278    Binary = 311,
7279    Bit = 312,
7280    BooleanP = 313,
7281    Both = 314,
7282    Breadth = 315,
7283    By = 316,
7284    Cache = 317,
7285    Call = 318,
7286    Called = 319,
7287    Cascade = 320,
7288    Cascaded = 321,
7289    Case = 322,
7290    Cast = 323,
7291    CatalogP = 324,
7292    Chain = 325,
7293    CharP = 326,
7294    Character = 327,
7295    Characteristics = 328,
7296    Check = 329,
7297    Checkpoint = 330,
7298    Class = 331,
7299    Close = 332,
7300    Cluster = 333,
7301    Coalesce = 334,
7302    Collate = 335,
7303    Collation = 336,
7304    Column = 337,
7305    Columns = 338,
7306    Comment = 339,
7307    Comments = 340,
7308    Commit = 341,
7309    Committed = 342,
7310    Compression = 343,
7311    Concurrently = 344,
7312    Conditional = 345,
7313    Configuration = 346,
7314    Conflict = 347,
7315    Connection = 348,
7316    Constraint = 349,
7317    Constraints = 350,
7318    ContentP = 351,
7319    ContinueP = 352,
7320    ConversionP = 353,
7321    Copy = 354,
7322    Cost = 355,
7323    Create = 356,
7324    Cross = 357,
7325    Csv = 358,
7326    Cube = 359,
7327    CurrentP = 360,
7328    CurrentCatalog = 361,
7329    CurrentDate = 362,
7330    CurrentRole = 363,
7331    CurrentSchema = 364,
7332    CurrentTime = 365,
7333    CurrentTimestamp = 366,
7334    CurrentUser = 367,
7335    Cursor = 368,
7336    Cycle = 369,
7337    DataP = 370,
7338    Database = 371,
7339    DayP = 372,
7340    Deallocate = 373,
7341    Dec = 374,
7342    DecimalP = 375,
7343    Declare = 376,
7344    Default = 377,
7345    Defaults = 378,
7346    Deferrable = 379,
7347    Deferred = 380,
7348    Definer = 381,
7349    DeleteP = 382,
7350    Delimiter = 383,
7351    Delimiters = 384,
7352    Depends = 385,
7353    Depth = 386,
7354    Desc = 387,
7355    Detach = 388,
7356    Dictionary = 389,
7357    DisableP = 390,
7358    Discard = 391,
7359    Distinct = 392,
7360    Do = 393,
7361    DocumentP = 394,
7362    DomainP = 395,
7363    DoubleP = 396,
7364    Drop = 397,
7365    Each = 398,
7366    Else = 399,
7367    EmptyP = 400,
7368    EnableP = 401,
7369    Encoding = 402,
7370    Encrypted = 403,
7371    EndP = 404,
7372    EnumP = 405,
7373    ErrorP = 406,
7374    Escape = 407,
7375    Event = 408,
7376    Except = 409,
7377    Exclude = 410,
7378    Excluding = 411,
7379    Exclusive = 412,
7380    Execute = 413,
7381    Exists = 414,
7382    Explain = 415,
7383    Expression = 416,
7384    Extension = 417,
7385    External = 418,
7386    Extract = 419,
7387    FalseP = 420,
7388    Family = 421,
7389    Fetch = 422,
7390    Filter = 423,
7391    Finalize = 424,
7392    FirstP = 425,
7393    FloatP = 426,
7394    Following = 427,
7395    For = 428,
7396    Force = 429,
7397    Foreign = 430,
7398    Format = 431,
7399    Forward = 432,
7400    Freeze = 433,
7401    From = 434,
7402    Full = 435,
7403    Function = 436,
7404    Functions = 437,
7405    Generated = 438,
7406    Global = 439,
7407    Grant = 440,
7408    Granted = 441,
7409    Greatest = 442,
7410    GroupP = 443,
7411    Grouping = 444,
7412    Groups = 445,
7413    Handler = 446,
7414    Having = 447,
7415    HeaderP = 448,
7416    Hold = 449,
7417    HourP = 450,
7418    IdentityP = 451,
7419    IfP = 452,
7420    Ilike = 453,
7421    Immediate = 454,
7422    Immutable = 455,
7423    ImplicitP = 456,
7424    ImportP = 457,
7425    InP = 458,
7426    Include = 459,
7427    Including = 460,
7428    Increment = 461,
7429    Indent = 462,
7430    Index = 463,
7431    Indexes = 464,
7432    Inherit = 465,
7433    Inherits = 466,
7434    Initially = 467,
7435    InlineP = 468,
7436    InnerP = 469,
7437    Inout = 470,
7438    InputP = 471,
7439    Insensitive = 472,
7440    Insert = 473,
7441    Instead = 474,
7442    IntP = 475,
7443    Integer = 476,
7444    Intersect = 477,
7445    Interval = 478,
7446    Into = 479,
7447    Invoker = 480,
7448    Is = 481,
7449    Isnull = 482,
7450    Isolation = 483,
7451    Join = 484,
7452    Json = 485,
7453    JsonArray = 486,
7454    JsonArrayagg = 487,
7455    JsonExists = 488,
7456    JsonObject = 489,
7457    JsonObjectagg = 490,
7458    JsonQuery = 491,
7459    JsonScalar = 492,
7460    JsonSerialize = 493,
7461    JsonTable = 494,
7462    JsonValue = 495,
7463    Keep = 496,
7464    Key = 497,
7465    Keys = 498,
7466    Label = 499,
7467    Language = 500,
7468    LargeP = 501,
7469    LastP = 502,
7470    LateralP = 503,
7471    Leading = 504,
7472    Leakproof = 505,
7473    Least = 506,
7474    Left = 507,
7475    Level = 508,
7476    Like = 509,
7477    Limit = 510,
7478    Listen = 511,
7479    Load = 512,
7480    Local = 513,
7481    Localtime = 514,
7482    Localtimestamp = 515,
7483    Location = 516,
7484    LockP = 517,
7485    Locked = 518,
7486    Logged = 519,
7487    Mapping = 520,
7488    Match = 521,
7489    Matched = 522,
7490    Materialized = 523,
7491    Maxvalue = 524,
7492    Merge = 525,
7493    MergeAction = 526,
7494    Method = 527,
7495    MinuteP = 528,
7496    Minvalue = 529,
7497    Mode = 530,
7498    MonthP = 531,
7499    Move = 532,
7500    NameP = 533,
7501    Names = 534,
7502    National = 535,
7503    Natural = 536,
7504    Nchar = 537,
7505    Nested = 538,
7506    New = 539,
7507    Next = 540,
7508    Nfc = 541,
7509    Nfd = 542,
7510    Nfkc = 543,
7511    Nfkd = 544,
7512    No = 545,
7513    None = 546,
7514    Normalize = 547,
7515    Normalized = 548,
7516    Not = 549,
7517    Nothing = 550,
7518    Notify = 551,
7519    Notnull = 552,
7520    Nowait = 553,
7521    NullP = 554,
7522    Nullif = 555,
7523    NullsP = 556,
7524    Numeric = 557,
7525    ObjectP = 558,
7526    Of = 559,
7527    Off = 560,
7528    Offset = 561,
7529    Oids = 562,
7530    Old = 563,
7531    Omit = 564,
7532    On = 565,
7533    Only = 566,
7534    Operator = 567,
7535    Option = 568,
7536    Options = 569,
7537    Or = 570,
7538    Order = 571,
7539    Ordinality = 572,
7540    Others = 573,
7541    OutP = 574,
7542    OuterP = 575,
7543    Over = 576,
7544    Overlaps = 577,
7545    Overlay = 578,
7546    Overriding = 579,
7547    Owned = 580,
7548    Owner = 581,
7549    Parallel = 582,
7550    Parameter = 583,
7551    Parser = 584,
7552    Partial = 585,
7553    Partition = 586,
7554    Passing = 587,
7555    Password = 588,
7556    Path = 589,
7557    Placing = 590,
7558    Plan = 591,
7559    Plans = 592,
7560    Policy = 593,
7561    Position = 594,
7562    Preceding = 595,
7563    Precision = 596,
7564    Preserve = 597,
7565    Prepare = 598,
7566    Prepared = 599,
7567    Primary = 600,
7568    Prior = 601,
7569    Privileges = 602,
7570    Procedural = 603,
7571    Procedure = 604,
7572    Procedures = 605,
7573    Program = 606,
7574    Publication = 607,
7575    Quote = 608,
7576    Quotes = 609,
7577    Range = 610,
7578    Read = 611,
7579    Real = 612,
7580    Reassign = 613,
7581    Recheck = 614,
7582    Recursive = 615,
7583    RefP = 616,
7584    References = 617,
7585    Referencing = 618,
7586    Refresh = 619,
7587    Reindex = 620,
7588    RelativeP = 621,
7589    Release = 622,
7590    Rename = 623,
7591    Repeatable = 624,
7592    Replace = 625,
7593    Replica = 626,
7594    Reset = 627,
7595    Restart = 628,
7596    Restrict = 629,
7597    Return = 630,
7598    Returning = 631,
7599    Returns = 632,
7600    Revoke = 633,
7601    Right = 634,
7602    Role = 635,
7603    Rollback = 636,
7604    Rollup = 637,
7605    Routine = 638,
7606    Routines = 639,
7607    Row = 640,
7608    Rows = 641,
7609    Rule = 642,
7610    Savepoint = 643,
7611    Scalar = 644,
7612    Schema = 645,
7613    Schemas = 646,
7614    Scroll = 647,
7615    Search = 648,
7616    SecondP = 649,
7617    Security = 650,
7618    Select = 651,
7619    Sequence = 652,
7620    Sequences = 653,
7621    Serializable = 654,
7622    Server = 655,
7623    Session = 656,
7624    SessionUser = 657,
7625    Set = 658,
7626    Sets = 659,
7627    Setof = 660,
7628    Share = 661,
7629    Show = 662,
7630    Similar = 663,
7631    Simple = 664,
7632    Skip = 665,
7633    Smallint = 666,
7634    Snapshot = 667,
7635    Some = 668,
7636    Source = 669,
7637    SqlP = 670,
7638    Stable = 671,
7639    StandaloneP = 672,
7640    Start = 673,
7641    Statement = 674,
7642    Statistics = 675,
7643    Stdin = 676,
7644    Stdout = 677,
7645    Storage = 678,
7646    Stored = 679,
7647    StrictP = 680,
7648    StringP = 681,
7649    StripP = 682,
7650    Subscription = 683,
7651    Substring = 684,
7652    Support = 685,
7653    Symmetric = 686,
7654    Sysid = 687,
7655    SystemP = 688,
7656    SystemUser = 689,
7657    Table = 690,
7658    Tables = 691,
7659    Tablesample = 692,
7660    Tablespace = 693,
7661    Target = 694,
7662    Temp = 695,
7663    Template = 696,
7664    Temporary = 697,
7665    TextP = 698,
7666    Then = 699,
7667    Ties = 700,
7668    Time = 701,
7669    Timestamp = 702,
7670    To = 703,
7671    Trailing = 704,
7672    Transaction = 705,
7673    Transform = 706,
7674    Treat = 707,
7675    Trigger = 708,
7676    Trim = 709,
7677    TrueP = 710,
7678    Truncate = 711,
7679    Trusted = 712,
7680    TypeP = 713,
7681    TypesP = 714,
7682    Uescape = 715,
7683    Unbounded = 716,
7684    Unconditional = 717,
7685    Uncommitted = 718,
7686    Unencrypted = 719,
7687    Union = 720,
7688    Unique = 721,
7689    Unknown = 722,
7690    Unlisten = 723,
7691    Unlogged = 724,
7692    Until = 725,
7693    Update = 726,
7694    User = 727,
7695    Using = 728,
7696    Vacuum = 729,
7697    Valid = 730,
7698    Validate = 731,
7699    Validator = 732,
7700    ValueP = 733,
7701    Values = 734,
7702    Varchar = 735,
7703    Variadic = 736,
7704    Varying = 737,
7705    Verbose = 738,
7706    VersionP = 739,
7707    View = 740,
7708    Views = 741,
7709    Volatile = 742,
7710    When = 743,
7711    Where = 744,
7712    WhitespaceP = 745,
7713    Window = 746,
7714    With = 747,
7715    Within = 748,
7716    Without = 749,
7717    Work = 750,
7718    Wrapper = 751,
7719    Write = 752,
7720    XmlP = 753,
7721    Xmlattributes = 754,
7722    Xmlconcat = 755,
7723    Xmlelement = 756,
7724    Xmlexists = 757,
7725    Xmlforest = 758,
7726    Xmlnamespaces = 759,
7727    Xmlparse = 760,
7728    Xmlpi = 761,
7729    Xmlroot = 762,
7730    Xmlserialize = 763,
7731    Xmltable = 764,
7732    YearP = 765,
7733    YesP = 766,
7734    Zone = 767,
7735    FormatLa = 768,
7736    NotLa = 769,
7737    NullsLa = 770,
7738    WithLa = 771,
7739    WithoutLa = 772,
7740    ModeTypeName = 773,
7741    ModePlpgsqlExpr = 774,
7742    ModePlpgsqlAssign1 = 775,
7743    ModePlpgsqlAssign2 = 776,
7744    ModePlpgsqlAssign3 = 777,
7745    Uminus = 778,
7746}
7747impl Token {
7748    /// String value of the enum field names used in the ProtoBuf definition.
7749    ///
7750    /// The values are not transformed in any way and thus are considered stable
7751    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7752    pub fn as_str_name(&self) -> &'static str {
7753        match self {
7754            Self::Nul => "NUL",
7755            Self::Ascii36 => "ASCII_36",
7756            Self::Ascii37 => "ASCII_37",
7757            Self::Ascii40 => "ASCII_40",
7758            Self::Ascii41 => "ASCII_41",
7759            Self::Ascii42 => "ASCII_42",
7760            Self::Ascii43 => "ASCII_43",
7761            Self::Ascii44 => "ASCII_44",
7762            Self::Ascii45 => "ASCII_45",
7763            Self::Ascii46 => "ASCII_46",
7764            Self::Ascii47 => "ASCII_47",
7765            Self::Ascii58 => "ASCII_58",
7766            Self::Ascii59 => "ASCII_59",
7767            Self::Ascii60 => "ASCII_60",
7768            Self::Ascii61 => "ASCII_61",
7769            Self::Ascii62 => "ASCII_62",
7770            Self::Ascii63 => "ASCII_63",
7771            Self::Ascii91 => "ASCII_91",
7772            Self::Ascii92 => "ASCII_92",
7773            Self::Ascii93 => "ASCII_93",
7774            Self::Ascii94 => "ASCII_94",
7775            Self::Ident => "IDENT",
7776            Self::Uident => "UIDENT",
7777            Self::Fconst => "FCONST",
7778            Self::Sconst => "SCONST",
7779            Self::Usconst => "USCONST",
7780            Self::Bconst => "BCONST",
7781            Self::Xconst => "XCONST",
7782            Self::Op => "Op",
7783            Self::Iconst => "ICONST",
7784            Self::Param => "PARAM",
7785            Self::Typecast => "TYPECAST",
7786            Self::DotDot => "DOT_DOT",
7787            Self::ColonEquals => "COLON_EQUALS",
7788            Self::EqualsGreater => "EQUALS_GREATER",
7789            Self::LessEquals => "LESS_EQUALS",
7790            Self::GreaterEquals => "GREATER_EQUALS",
7791            Self::NotEquals => "NOT_EQUALS",
7792            Self::SqlComment => "SQL_COMMENT",
7793            Self::CComment => "C_COMMENT",
7794            Self::AbortP => "ABORT_P",
7795            Self::Absent => "ABSENT",
7796            Self::AbsoluteP => "ABSOLUTE_P",
7797            Self::Access => "ACCESS",
7798            Self::Action => "ACTION",
7799            Self::AddP => "ADD_P",
7800            Self::Admin => "ADMIN",
7801            Self::After => "AFTER",
7802            Self::Aggregate => "AGGREGATE",
7803            Self::All => "ALL",
7804            Self::Also => "ALSO",
7805            Self::Alter => "ALTER",
7806            Self::Always => "ALWAYS",
7807            Self::Analyse => "ANALYSE",
7808            Self::Analyze => "ANALYZE",
7809            Self::And => "AND",
7810            Self::Any => "ANY",
7811            Self::Array => "ARRAY",
7812            Self::As => "AS",
7813            Self::Asc => "ASC",
7814            Self::Asensitive => "ASENSITIVE",
7815            Self::Assertion => "ASSERTION",
7816            Self::Assignment => "ASSIGNMENT",
7817            Self::Asymmetric => "ASYMMETRIC",
7818            Self::Atomic => "ATOMIC",
7819            Self::At => "AT",
7820            Self::Attach => "ATTACH",
7821            Self::Attribute => "ATTRIBUTE",
7822            Self::Authorization => "AUTHORIZATION",
7823            Self::Backward => "BACKWARD",
7824            Self::Before => "BEFORE",
7825            Self::BeginP => "BEGIN_P",
7826            Self::Between => "BETWEEN",
7827            Self::Bigint => "BIGINT",
7828            Self::Binary => "BINARY",
7829            Self::Bit => "BIT",
7830            Self::BooleanP => "BOOLEAN_P",
7831            Self::Both => "BOTH",
7832            Self::Breadth => "BREADTH",
7833            Self::By => "BY",
7834            Self::Cache => "CACHE",
7835            Self::Call => "CALL",
7836            Self::Called => "CALLED",
7837            Self::Cascade => "CASCADE",
7838            Self::Cascaded => "CASCADED",
7839            Self::Case => "CASE",
7840            Self::Cast => "CAST",
7841            Self::CatalogP => "CATALOG_P",
7842            Self::Chain => "CHAIN",
7843            Self::CharP => "CHAR_P",
7844            Self::Character => "CHARACTER",
7845            Self::Characteristics => "CHARACTERISTICS",
7846            Self::Check => "CHECK",
7847            Self::Checkpoint => "CHECKPOINT",
7848            Self::Class => "CLASS",
7849            Self::Close => "CLOSE",
7850            Self::Cluster => "CLUSTER",
7851            Self::Coalesce => "COALESCE",
7852            Self::Collate => "COLLATE",
7853            Self::Collation => "COLLATION",
7854            Self::Column => "COLUMN",
7855            Self::Columns => "COLUMNS",
7856            Self::Comment => "COMMENT",
7857            Self::Comments => "COMMENTS",
7858            Self::Commit => "COMMIT",
7859            Self::Committed => "COMMITTED",
7860            Self::Compression => "COMPRESSION",
7861            Self::Concurrently => "CONCURRENTLY",
7862            Self::Conditional => "CONDITIONAL",
7863            Self::Configuration => "CONFIGURATION",
7864            Self::Conflict => "CONFLICT",
7865            Self::Connection => "CONNECTION",
7866            Self::Constraint => "CONSTRAINT",
7867            Self::Constraints => "CONSTRAINTS",
7868            Self::ContentP => "CONTENT_P",
7869            Self::ContinueP => "CONTINUE_P",
7870            Self::ConversionP => "CONVERSION_P",
7871            Self::Copy => "COPY",
7872            Self::Cost => "COST",
7873            Self::Create => "CREATE",
7874            Self::Cross => "CROSS",
7875            Self::Csv => "CSV",
7876            Self::Cube => "CUBE",
7877            Self::CurrentP => "CURRENT_P",
7878            Self::CurrentCatalog => "CURRENT_CATALOG",
7879            Self::CurrentDate => "CURRENT_DATE",
7880            Self::CurrentRole => "CURRENT_ROLE",
7881            Self::CurrentSchema => "CURRENT_SCHEMA",
7882            Self::CurrentTime => "CURRENT_TIME",
7883            Self::CurrentTimestamp => "CURRENT_TIMESTAMP",
7884            Self::CurrentUser => "CURRENT_USER",
7885            Self::Cursor => "CURSOR",
7886            Self::Cycle => "CYCLE",
7887            Self::DataP => "DATA_P",
7888            Self::Database => "DATABASE",
7889            Self::DayP => "DAY_P",
7890            Self::Deallocate => "DEALLOCATE",
7891            Self::Dec => "DEC",
7892            Self::DecimalP => "DECIMAL_P",
7893            Self::Declare => "DECLARE",
7894            Self::Default => "DEFAULT",
7895            Self::Defaults => "DEFAULTS",
7896            Self::Deferrable => "DEFERRABLE",
7897            Self::Deferred => "DEFERRED",
7898            Self::Definer => "DEFINER",
7899            Self::DeleteP => "DELETE_P",
7900            Self::Delimiter => "DELIMITER",
7901            Self::Delimiters => "DELIMITERS",
7902            Self::Depends => "DEPENDS",
7903            Self::Depth => "DEPTH",
7904            Self::Desc => "DESC",
7905            Self::Detach => "DETACH",
7906            Self::Dictionary => "DICTIONARY",
7907            Self::DisableP => "DISABLE_P",
7908            Self::Discard => "DISCARD",
7909            Self::Distinct => "DISTINCT",
7910            Self::Do => "DO",
7911            Self::DocumentP => "DOCUMENT_P",
7912            Self::DomainP => "DOMAIN_P",
7913            Self::DoubleP => "DOUBLE_P",
7914            Self::Drop => "DROP",
7915            Self::Each => "EACH",
7916            Self::Else => "ELSE",
7917            Self::EmptyP => "EMPTY_P",
7918            Self::EnableP => "ENABLE_P",
7919            Self::Encoding => "ENCODING",
7920            Self::Encrypted => "ENCRYPTED",
7921            Self::EndP => "END_P",
7922            Self::EnumP => "ENUM_P",
7923            Self::ErrorP => "ERROR_P",
7924            Self::Escape => "ESCAPE",
7925            Self::Event => "EVENT",
7926            Self::Except => "EXCEPT",
7927            Self::Exclude => "EXCLUDE",
7928            Self::Excluding => "EXCLUDING",
7929            Self::Exclusive => "EXCLUSIVE",
7930            Self::Execute => "EXECUTE",
7931            Self::Exists => "EXISTS",
7932            Self::Explain => "EXPLAIN",
7933            Self::Expression => "EXPRESSION",
7934            Self::Extension => "EXTENSION",
7935            Self::External => "EXTERNAL",
7936            Self::Extract => "EXTRACT",
7937            Self::FalseP => "FALSE_P",
7938            Self::Family => "FAMILY",
7939            Self::Fetch => "FETCH",
7940            Self::Filter => "FILTER",
7941            Self::Finalize => "FINALIZE",
7942            Self::FirstP => "FIRST_P",
7943            Self::FloatP => "FLOAT_P",
7944            Self::Following => "FOLLOWING",
7945            Self::For => "FOR",
7946            Self::Force => "FORCE",
7947            Self::Foreign => "FOREIGN",
7948            Self::Format => "FORMAT",
7949            Self::Forward => "FORWARD",
7950            Self::Freeze => "FREEZE",
7951            Self::From => "FROM",
7952            Self::Full => "FULL",
7953            Self::Function => "FUNCTION",
7954            Self::Functions => "FUNCTIONS",
7955            Self::Generated => "GENERATED",
7956            Self::Global => "GLOBAL",
7957            Self::Grant => "GRANT",
7958            Self::Granted => "GRANTED",
7959            Self::Greatest => "GREATEST",
7960            Self::GroupP => "GROUP_P",
7961            Self::Grouping => "GROUPING",
7962            Self::Groups => "GROUPS",
7963            Self::Handler => "HANDLER",
7964            Self::Having => "HAVING",
7965            Self::HeaderP => "HEADER_P",
7966            Self::Hold => "HOLD",
7967            Self::HourP => "HOUR_P",
7968            Self::IdentityP => "IDENTITY_P",
7969            Self::IfP => "IF_P",
7970            Self::Ilike => "ILIKE",
7971            Self::Immediate => "IMMEDIATE",
7972            Self::Immutable => "IMMUTABLE",
7973            Self::ImplicitP => "IMPLICIT_P",
7974            Self::ImportP => "IMPORT_P",
7975            Self::InP => "IN_P",
7976            Self::Include => "INCLUDE",
7977            Self::Including => "INCLUDING",
7978            Self::Increment => "INCREMENT",
7979            Self::Indent => "INDENT",
7980            Self::Index => "INDEX",
7981            Self::Indexes => "INDEXES",
7982            Self::Inherit => "INHERIT",
7983            Self::Inherits => "INHERITS",
7984            Self::Initially => "INITIALLY",
7985            Self::InlineP => "INLINE_P",
7986            Self::InnerP => "INNER_P",
7987            Self::Inout => "INOUT",
7988            Self::InputP => "INPUT_P",
7989            Self::Insensitive => "INSENSITIVE",
7990            Self::Insert => "INSERT",
7991            Self::Instead => "INSTEAD",
7992            Self::IntP => "INT_P",
7993            Self::Integer => "INTEGER",
7994            Self::Intersect => "INTERSECT",
7995            Self::Interval => "INTERVAL",
7996            Self::Into => "INTO",
7997            Self::Invoker => "INVOKER",
7998            Self::Is => "IS",
7999            Self::Isnull => "ISNULL",
8000            Self::Isolation => "ISOLATION",
8001            Self::Join => "JOIN",
8002            Self::Json => "JSON",
8003            Self::JsonArray => "JSON_ARRAY",
8004            Self::JsonArrayagg => "JSON_ARRAYAGG",
8005            Self::JsonExists => "JSON_EXISTS",
8006            Self::JsonObject => "JSON_OBJECT",
8007            Self::JsonObjectagg => "JSON_OBJECTAGG",
8008            Self::JsonQuery => "JSON_QUERY",
8009            Self::JsonScalar => "JSON_SCALAR",
8010            Self::JsonSerialize => "JSON_SERIALIZE",
8011            Self::JsonTable => "JSON_TABLE",
8012            Self::JsonValue => "JSON_VALUE",
8013            Self::Keep => "KEEP",
8014            Self::Key => "KEY",
8015            Self::Keys => "KEYS",
8016            Self::Label => "LABEL",
8017            Self::Language => "LANGUAGE",
8018            Self::LargeP => "LARGE_P",
8019            Self::LastP => "LAST_P",
8020            Self::LateralP => "LATERAL_P",
8021            Self::Leading => "LEADING",
8022            Self::Leakproof => "LEAKPROOF",
8023            Self::Least => "LEAST",
8024            Self::Left => "LEFT",
8025            Self::Level => "LEVEL",
8026            Self::Like => "LIKE",
8027            Self::Limit => "LIMIT",
8028            Self::Listen => "LISTEN",
8029            Self::Load => "LOAD",
8030            Self::Local => "LOCAL",
8031            Self::Localtime => "LOCALTIME",
8032            Self::Localtimestamp => "LOCALTIMESTAMP",
8033            Self::Location => "LOCATION",
8034            Self::LockP => "LOCK_P",
8035            Self::Locked => "LOCKED",
8036            Self::Logged => "LOGGED",
8037            Self::Mapping => "MAPPING",
8038            Self::Match => "MATCH",
8039            Self::Matched => "MATCHED",
8040            Self::Materialized => "MATERIALIZED",
8041            Self::Maxvalue => "MAXVALUE",
8042            Self::Merge => "MERGE",
8043            Self::MergeAction => "MERGE_ACTION",
8044            Self::Method => "METHOD",
8045            Self::MinuteP => "MINUTE_P",
8046            Self::Minvalue => "MINVALUE",
8047            Self::Mode => "MODE",
8048            Self::MonthP => "MONTH_P",
8049            Self::Move => "MOVE",
8050            Self::NameP => "NAME_P",
8051            Self::Names => "NAMES",
8052            Self::National => "NATIONAL",
8053            Self::Natural => "NATURAL",
8054            Self::Nchar => "NCHAR",
8055            Self::Nested => "NESTED",
8056            Self::New => "NEW",
8057            Self::Next => "NEXT",
8058            Self::Nfc => "NFC",
8059            Self::Nfd => "NFD",
8060            Self::Nfkc => "NFKC",
8061            Self::Nfkd => "NFKD",
8062            Self::No => "NO",
8063            Self::None => "NONE",
8064            Self::Normalize => "NORMALIZE",
8065            Self::Normalized => "NORMALIZED",
8066            Self::Not => "NOT",
8067            Self::Nothing => "NOTHING",
8068            Self::Notify => "NOTIFY",
8069            Self::Notnull => "NOTNULL",
8070            Self::Nowait => "NOWAIT",
8071            Self::NullP => "NULL_P",
8072            Self::Nullif => "NULLIF",
8073            Self::NullsP => "NULLS_P",
8074            Self::Numeric => "NUMERIC",
8075            Self::ObjectP => "OBJECT_P",
8076            Self::Of => "OF",
8077            Self::Off => "OFF",
8078            Self::Offset => "OFFSET",
8079            Self::Oids => "OIDS",
8080            Self::Old => "OLD",
8081            Self::Omit => "OMIT",
8082            Self::On => "ON",
8083            Self::Only => "ONLY",
8084            Self::Operator => "OPERATOR",
8085            Self::Option => "OPTION",
8086            Self::Options => "OPTIONS",
8087            Self::Or => "OR",
8088            Self::Order => "ORDER",
8089            Self::Ordinality => "ORDINALITY",
8090            Self::Others => "OTHERS",
8091            Self::OutP => "OUT_P",
8092            Self::OuterP => "OUTER_P",
8093            Self::Over => "OVER",
8094            Self::Overlaps => "OVERLAPS",
8095            Self::Overlay => "OVERLAY",
8096            Self::Overriding => "OVERRIDING",
8097            Self::Owned => "OWNED",
8098            Self::Owner => "OWNER",
8099            Self::Parallel => "PARALLEL",
8100            Self::Parameter => "PARAMETER",
8101            Self::Parser => "PARSER",
8102            Self::Partial => "PARTIAL",
8103            Self::Partition => "PARTITION",
8104            Self::Passing => "PASSING",
8105            Self::Password => "PASSWORD",
8106            Self::Path => "PATH",
8107            Self::Placing => "PLACING",
8108            Self::Plan => "PLAN",
8109            Self::Plans => "PLANS",
8110            Self::Policy => "POLICY",
8111            Self::Position => "POSITION",
8112            Self::Preceding => "PRECEDING",
8113            Self::Precision => "PRECISION",
8114            Self::Preserve => "PRESERVE",
8115            Self::Prepare => "PREPARE",
8116            Self::Prepared => "PREPARED",
8117            Self::Primary => "PRIMARY",
8118            Self::Prior => "PRIOR",
8119            Self::Privileges => "PRIVILEGES",
8120            Self::Procedural => "PROCEDURAL",
8121            Self::Procedure => "PROCEDURE",
8122            Self::Procedures => "PROCEDURES",
8123            Self::Program => "PROGRAM",
8124            Self::Publication => "PUBLICATION",
8125            Self::Quote => "QUOTE",
8126            Self::Quotes => "QUOTES",
8127            Self::Range => "RANGE",
8128            Self::Read => "READ",
8129            Self::Real => "REAL",
8130            Self::Reassign => "REASSIGN",
8131            Self::Recheck => "RECHECK",
8132            Self::Recursive => "RECURSIVE",
8133            Self::RefP => "REF_P",
8134            Self::References => "REFERENCES",
8135            Self::Referencing => "REFERENCING",
8136            Self::Refresh => "REFRESH",
8137            Self::Reindex => "REINDEX",
8138            Self::RelativeP => "RELATIVE_P",
8139            Self::Release => "RELEASE",
8140            Self::Rename => "RENAME",
8141            Self::Repeatable => "REPEATABLE",
8142            Self::Replace => "REPLACE",
8143            Self::Replica => "REPLICA",
8144            Self::Reset => "RESET",
8145            Self::Restart => "RESTART",
8146            Self::Restrict => "RESTRICT",
8147            Self::Return => "RETURN",
8148            Self::Returning => "RETURNING",
8149            Self::Returns => "RETURNS",
8150            Self::Revoke => "REVOKE",
8151            Self::Right => "RIGHT",
8152            Self::Role => "ROLE",
8153            Self::Rollback => "ROLLBACK",
8154            Self::Rollup => "ROLLUP",
8155            Self::Routine => "ROUTINE",
8156            Self::Routines => "ROUTINES",
8157            Self::Row => "ROW",
8158            Self::Rows => "ROWS",
8159            Self::Rule => "RULE",
8160            Self::Savepoint => "SAVEPOINT",
8161            Self::Scalar => "SCALAR",
8162            Self::Schema => "SCHEMA",
8163            Self::Schemas => "SCHEMAS",
8164            Self::Scroll => "SCROLL",
8165            Self::Search => "SEARCH",
8166            Self::SecondP => "SECOND_P",
8167            Self::Security => "SECURITY",
8168            Self::Select => "SELECT",
8169            Self::Sequence => "SEQUENCE",
8170            Self::Sequences => "SEQUENCES",
8171            Self::Serializable => "SERIALIZABLE",
8172            Self::Server => "SERVER",
8173            Self::Session => "SESSION",
8174            Self::SessionUser => "SESSION_USER",
8175            Self::Set => "SET",
8176            Self::Sets => "SETS",
8177            Self::Setof => "SETOF",
8178            Self::Share => "SHARE",
8179            Self::Show => "SHOW",
8180            Self::Similar => "SIMILAR",
8181            Self::Simple => "SIMPLE",
8182            Self::Skip => "SKIP",
8183            Self::Smallint => "SMALLINT",
8184            Self::Snapshot => "SNAPSHOT",
8185            Self::Some => "SOME",
8186            Self::Source => "SOURCE",
8187            Self::SqlP => "SQL_P",
8188            Self::Stable => "STABLE",
8189            Self::StandaloneP => "STANDALONE_P",
8190            Self::Start => "START",
8191            Self::Statement => "STATEMENT",
8192            Self::Statistics => "STATISTICS",
8193            Self::Stdin => "STDIN",
8194            Self::Stdout => "STDOUT",
8195            Self::Storage => "STORAGE",
8196            Self::Stored => "STORED",
8197            Self::StrictP => "STRICT_P",
8198            Self::StringP => "STRING_P",
8199            Self::StripP => "STRIP_P",
8200            Self::Subscription => "SUBSCRIPTION",
8201            Self::Substring => "SUBSTRING",
8202            Self::Support => "SUPPORT",
8203            Self::Symmetric => "SYMMETRIC",
8204            Self::Sysid => "SYSID",
8205            Self::SystemP => "SYSTEM_P",
8206            Self::SystemUser => "SYSTEM_USER",
8207            Self::Table => "TABLE",
8208            Self::Tables => "TABLES",
8209            Self::Tablesample => "TABLESAMPLE",
8210            Self::Tablespace => "TABLESPACE",
8211            Self::Target => "TARGET",
8212            Self::Temp => "TEMP",
8213            Self::Template => "TEMPLATE",
8214            Self::Temporary => "TEMPORARY",
8215            Self::TextP => "TEXT_P",
8216            Self::Then => "THEN",
8217            Self::Ties => "TIES",
8218            Self::Time => "TIME",
8219            Self::Timestamp => "TIMESTAMP",
8220            Self::To => "TO",
8221            Self::Trailing => "TRAILING",
8222            Self::Transaction => "TRANSACTION",
8223            Self::Transform => "TRANSFORM",
8224            Self::Treat => "TREAT",
8225            Self::Trigger => "TRIGGER",
8226            Self::Trim => "TRIM",
8227            Self::TrueP => "TRUE_P",
8228            Self::Truncate => "TRUNCATE",
8229            Self::Trusted => "TRUSTED",
8230            Self::TypeP => "TYPE_P",
8231            Self::TypesP => "TYPES_P",
8232            Self::Uescape => "UESCAPE",
8233            Self::Unbounded => "UNBOUNDED",
8234            Self::Unconditional => "UNCONDITIONAL",
8235            Self::Uncommitted => "UNCOMMITTED",
8236            Self::Unencrypted => "UNENCRYPTED",
8237            Self::Union => "UNION",
8238            Self::Unique => "UNIQUE",
8239            Self::Unknown => "UNKNOWN",
8240            Self::Unlisten => "UNLISTEN",
8241            Self::Unlogged => "UNLOGGED",
8242            Self::Until => "UNTIL",
8243            Self::Update => "UPDATE",
8244            Self::User => "USER",
8245            Self::Using => "USING",
8246            Self::Vacuum => "VACUUM",
8247            Self::Valid => "VALID",
8248            Self::Validate => "VALIDATE",
8249            Self::Validator => "VALIDATOR",
8250            Self::ValueP => "VALUE_P",
8251            Self::Values => "VALUES",
8252            Self::Varchar => "VARCHAR",
8253            Self::Variadic => "VARIADIC",
8254            Self::Varying => "VARYING",
8255            Self::Verbose => "VERBOSE",
8256            Self::VersionP => "VERSION_P",
8257            Self::View => "VIEW",
8258            Self::Views => "VIEWS",
8259            Self::Volatile => "VOLATILE",
8260            Self::When => "WHEN",
8261            Self::Where => "WHERE",
8262            Self::WhitespaceP => "WHITESPACE_P",
8263            Self::Window => "WINDOW",
8264            Self::With => "WITH",
8265            Self::Within => "WITHIN",
8266            Self::Without => "WITHOUT",
8267            Self::Work => "WORK",
8268            Self::Wrapper => "WRAPPER",
8269            Self::Write => "WRITE",
8270            Self::XmlP => "XML_P",
8271            Self::Xmlattributes => "XMLATTRIBUTES",
8272            Self::Xmlconcat => "XMLCONCAT",
8273            Self::Xmlelement => "XMLELEMENT",
8274            Self::Xmlexists => "XMLEXISTS",
8275            Self::Xmlforest => "XMLFOREST",
8276            Self::Xmlnamespaces => "XMLNAMESPACES",
8277            Self::Xmlparse => "XMLPARSE",
8278            Self::Xmlpi => "XMLPI",
8279            Self::Xmlroot => "XMLROOT",
8280            Self::Xmlserialize => "XMLSERIALIZE",
8281            Self::Xmltable => "XMLTABLE",
8282            Self::YearP => "YEAR_P",
8283            Self::YesP => "YES_P",
8284            Self::Zone => "ZONE",
8285            Self::FormatLa => "FORMAT_LA",
8286            Self::NotLa => "NOT_LA",
8287            Self::NullsLa => "NULLS_LA",
8288            Self::WithLa => "WITH_LA",
8289            Self::WithoutLa => "WITHOUT_LA",
8290            Self::ModeTypeName => "MODE_TYPE_NAME",
8291            Self::ModePlpgsqlExpr => "MODE_PLPGSQL_EXPR",
8292            Self::ModePlpgsqlAssign1 => "MODE_PLPGSQL_ASSIGN1",
8293            Self::ModePlpgsqlAssign2 => "MODE_PLPGSQL_ASSIGN2",
8294            Self::ModePlpgsqlAssign3 => "MODE_PLPGSQL_ASSIGN3",
8295            Self::Uminus => "UMINUS",
8296        }
8297    }
8298    /// Creates an enum from field names used in the ProtoBuf definition.
8299    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8300        match value {
8301            "NUL" => Some(Self::Nul),
8302            "ASCII_36" => Some(Self::Ascii36),
8303            "ASCII_37" => Some(Self::Ascii37),
8304            "ASCII_40" => Some(Self::Ascii40),
8305            "ASCII_41" => Some(Self::Ascii41),
8306            "ASCII_42" => Some(Self::Ascii42),
8307            "ASCII_43" => Some(Self::Ascii43),
8308            "ASCII_44" => Some(Self::Ascii44),
8309            "ASCII_45" => Some(Self::Ascii45),
8310            "ASCII_46" => Some(Self::Ascii46),
8311            "ASCII_47" => Some(Self::Ascii47),
8312            "ASCII_58" => Some(Self::Ascii58),
8313            "ASCII_59" => Some(Self::Ascii59),
8314            "ASCII_60" => Some(Self::Ascii60),
8315            "ASCII_61" => Some(Self::Ascii61),
8316            "ASCII_62" => Some(Self::Ascii62),
8317            "ASCII_63" => Some(Self::Ascii63),
8318            "ASCII_91" => Some(Self::Ascii91),
8319            "ASCII_92" => Some(Self::Ascii92),
8320            "ASCII_93" => Some(Self::Ascii93),
8321            "ASCII_94" => Some(Self::Ascii94),
8322            "IDENT" => Some(Self::Ident),
8323            "UIDENT" => Some(Self::Uident),
8324            "FCONST" => Some(Self::Fconst),
8325            "SCONST" => Some(Self::Sconst),
8326            "USCONST" => Some(Self::Usconst),
8327            "BCONST" => Some(Self::Bconst),
8328            "XCONST" => Some(Self::Xconst),
8329            "Op" => Some(Self::Op),
8330            "ICONST" => Some(Self::Iconst),
8331            "PARAM" => Some(Self::Param),
8332            "TYPECAST" => Some(Self::Typecast),
8333            "DOT_DOT" => Some(Self::DotDot),
8334            "COLON_EQUALS" => Some(Self::ColonEquals),
8335            "EQUALS_GREATER" => Some(Self::EqualsGreater),
8336            "LESS_EQUALS" => Some(Self::LessEquals),
8337            "GREATER_EQUALS" => Some(Self::GreaterEquals),
8338            "NOT_EQUALS" => Some(Self::NotEquals),
8339            "SQL_COMMENT" => Some(Self::SqlComment),
8340            "C_COMMENT" => Some(Self::CComment),
8341            "ABORT_P" => Some(Self::AbortP),
8342            "ABSENT" => Some(Self::Absent),
8343            "ABSOLUTE_P" => Some(Self::AbsoluteP),
8344            "ACCESS" => Some(Self::Access),
8345            "ACTION" => Some(Self::Action),
8346            "ADD_P" => Some(Self::AddP),
8347            "ADMIN" => Some(Self::Admin),
8348            "AFTER" => Some(Self::After),
8349            "AGGREGATE" => Some(Self::Aggregate),
8350            "ALL" => Some(Self::All),
8351            "ALSO" => Some(Self::Also),
8352            "ALTER" => Some(Self::Alter),
8353            "ALWAYS" => Some(Self::Always),
8354            "ANALYSE" => Some(Self::Analyse),
8355            "ANALYZE" => Some(Self::Analyze),
8356            "AND" => Some(Self::And),
8357            "ANY" => Some(Self::Any),
8358            "ARRAY" => Some(Self::Array),
8359            "AS" => Some(Self::As),
8360            "ASC" => Some(Self::Asc),
8361            "ASENSITIVE" => Some(Self::Asensitive),
8362            "ASSERTION" => Some(Self::Assertion),
8363            "ASSIGNMENT" => Some(Self::Assignment),
8364            "ASYMMETRIC" => Some(Self::Asymmetric),
8365            "ATOMIC" => Some(Self::Atomic),
8366            "AT" => Some(Self::At),
8367            "ATTACH" => Some(Self::Attach),
8368            "ATTRIBUTE" => Some(Self::Attribute),
8369            "AUTHORIZATION" => Some(Self::Authorization),
8370            "BACKWARD" => Some(Self::Backward),
8371            "BEFORE" => Some(Self::Before),
8372            "BEGIN_P" => Some(Self::BeginP),
8373            "BETWEEN" => Some(Self::Between),
8374            "BIGINT" => Some(Self::Bigint),
8375            "BINARY" => Some(Self::Binary),
8376            "BIT" => Some(Self::Bit),
8377            "BOOLEAN_P" => Some(Self::BooleanP),
8378            "BOTH" => Some(Self::Both),
8379            "BREADTH" => Some(Self::Breadth),
8380            "BY" => Some(Self::By),
8381            "CACHE" => Some(Self::Cache),
8382            "CALL" => Some(Self::Call),
8383            "CALLED" => Some(Self::Called),
8384            "CASCADE" => Some(Self::Cascade),
8385            "CASCADED" => Some(Self::Cascaded),
8386            "CASE" => Some(Self::Case),
8387            "CAST" => Some(Self::Cast),
8388            "CATALOG_P" => Some(Self::CatalogP),
8389            "CHAIN" => Some(Self::Chain),
8390            "CHAR_P" => Some(Self::CharP),
8391            "CHARACTER" => Some(Self::Character),
8392            "CHARACTERISTICS" => Some(Self::Characteristics),
8393            "CHECK" => Some(Self::Check),
8394            "CHECKPOINT" => Some(Self::Checkpoint),
8395            "CLASS" => Some(Self::Class),
8396            "CLOSE" => Some(Self::Close),
8397            "CLUSTER" => Some(Self::Cluster),
8398            "COALESCE" => Some(Self::Coalesce),
8399            "COLLATE" => Some(Self::Collate),
8400            "COLLATION" => Some(Self::Collation),
8401            "COLUMN" => Some(Self::Column),
8402            "COLUMNS" => Some(Self::Columns),
8403            "COMMENT" => Some(Self::Comment),
8404            "COMMENTS" => Some(Self::Comments),
8405            "COMMIT" => Some(Self::Commit),
8406            "COMMITTED" => Some(Self::Committed),
8407            "COMPRESSION" => Some(Self::Compression),
8408            "CONCURRENTLY" => Some(Self::Concurrently),
8409            "CONDITIONAL" => Some(Self::Conditional),
8410            "CONFIGURATION" => Some(Self::Configuration),
8411            "CONFLICT" => Some(Self::Conflict),
8412            "CONNECTION" => Some(Self::Connection),
8413            "CONSTRAINT" => Some(Self::Constraint),
8414            "CONSTRAINTS" => Some(Self::Constraints),
8415            "CONTENT_P" => Some(Self::ContentP),
8416            "CONTINUE_P" => Some(Self::ContinueP),
8417            "CONVERSION_P" => Some(Self::ConversionP),
8418            "COPY" => Some(Self::Copy),
8419            "COST" => Some(Self::Cost),
8420            "CREATE" => Some(Self::Create),
8421            "CROSS" => Some(Self::Cross),
8422            "CSV" => Some(Self::Csv),
8423            "CUBE" => Some(Self::Cube),
8424            "CURRENT_P" => Some(Self::CurrentP),
8425            "CURRENT_CATALOG" => Some(Self::CurrentCatalog),
8426            "CURRENT_DATE" => Some(Self::CurrentDate),
8427            "CURRENT_ROLE" => Some(Self::CurrentRole),
8428            "CURRENT_SCHEMA" => Some(Self::CurrentSchema),
8429            "CURRENT_TIME" => Some(Self::CurrentTime),
8430            "CURRENT_TIMESTAMP" => Some(Self::CurrentTimestamp),
8431            "CURRENT_USER" => Some(Self::CurrentUser),
8432            "CURSOR" => Some(Self::Cursor),
8433            "CYCLE" => Some(Self::Cycle),
8434            "DATA_P" => Some(Self::DataP),
8435            "DATABASE" => Some(Self::Database),
8436            "DAY_P" => Some(Self::DayP),
8437            "DEALLOCATE" => Some(Self::Deallocate),
8438            "DEC" => Some(Self::Dec),
8439            "DECIMAL_P" => Some(Self::DecimalP),
8440            "DECLARE" => Some(Self::Declare),
8441            "DEFAULT" => Some(Self::Default),
8442            "DEFAULTS" => Some(Self::Defaults),
8443            "DEFERRABLE" => Some(Self::Deferrable),
8444            "DEFERRED" => Some(Self::Deferred),
8445            "DEFINER" => Some(Self::Definer),
8446            "DELETE_P" => Some(Self::DeleteP),
8447            "DELIMITER" => Some(Self::Delimiter),
8448            "DELIMITERS" => Some(Self::Delimiters),
8449            "DEPENDS" => Some(Self::Depends),
8450            "DEPTH" => Some(Self::Depth),
8451            "DESC" => Some(Self::Desc),
8452            "DETACH" => Some(Self::Detach),
8453            "DICTIONARY" => Some(Self::Dictionary),
8454            "DISABLE_P" => Some(Self::DisableP),
8455            "DISCARD" => Some(Self::Discard),
8456            "DISTINCT" => Some(Self::Distinct),
8457            "DO" => Some(Self::Do),
8458            "DOCUMENT_P" => Some(Self::DocumentP),
8459            "DOMAIN_P" => Some(Self::DomainP),
8460            "DOUBLE_P" => Some(Self::DoubleP),
8461            "DROP" => Some(Self::Drop),
8462            "EACH" => Some(Self::Each),
8463            "ELSE" => Some(Self::Else),
8464            "EMPTY_P" => Some(Self::EmptyP),
8465            "ENABLE_P" => Some(Self::EnableP),
8466            "ENCODING" => Some(Self::Encoding),
8467            "ENCRYPTED" => Some(Self::Encrypted),
8468            "END_P" => Some(Self::EndP),
8469            "ENUM_P" => Some(Self::EnumP),
8470            "ERROR_P" => Some(Self::ErrorP),
8471            "ESCAPE" => Some(Self::Escape),
8472            "EVENT" => Some(Self::Event),
8473            "EXCEPT" => Some(Self::Except),
8474            "EXCLUDE" => Some(Self::Exclude),
8475            "EXCLUDING" => Some(Self::Excluding),
8476            "EXCLUSIVE" => Some(Self::Exclusive),
8477            "EXECUTE" => Some(Self::Execute),
8478            "EXISTS" => Some(Self::Exists),
8479            "EXPLAIN" => Some(Self::Explain),
8480            "EXPRESSION" => Some(Self::Expression),
8481            "EXTENSION" => Some(Self::Extension),
8482            "EXTERNAL" => Some(Self::External),
8483            "EXTRACT" => Some(Self::Extract),
8484            "FALSE_P" => Some(Self::FalseP),
8485            "FAMILY" => Some(Self::Family),
8486            "FETCH" => Some(Self::Fetch),
8487            "FILTER" => Some(Self::Filter),
8488            "FINALIZE" => Some(Self::Finalize),
8489            "FIRST_P" => Some(Self::FirstP),
8490            "FLOAT_P" => Some(Self::FloatP),
8491            "FOLLOWING" => Some(Self::Following),
8492            "FOR" => Some(Self::For),
8493            "FORCE" => Some(Self::Force),
8494            "FOREIGN" => Some(Self::Foreign),
8495            "FORMAT" => Some(Self::Format),
8496            "FORWARD" => Some(Self::Forward),
8497            "FREEZE" => Some(Self::Freeze),
8498            "FROM" => Some(Self::From),
8499            "FULL" => Some(Self::Full),
8500            "FUNCTION" => Some(Self::Function),
8501            "FUNCTIONS" => Some(Self::Functions),
8502            "GENERATED" => Some(Self::Generated),
8503            "GLOBAL" => Some(Self::Global),
8504            "GRANT" => Some(Self::Grant),
8505            "GRANTED" => Some(Self::Granted),
8506            "GREATEST" => Some(Self::Greatest),
8507            "GROUP_P" => Some(Self::GroupP),
8508            "GROUPING" => Some(Self::Grouping),
8509            "GROUPS" => Some(Self::Groups),
8510            "HANDLER" => Some(Self::Handler),
8511            "HAVING" => Some(Self::Having),
8512            "HEADER_P" => Some(Self::HeaderP),
8513            "HOLD" => Some(Self::Hold),
8514            "HOUR_P" => Some(Self::HourP),
8515            "IDENTITY_P" => Some(Self::IdentityP),
8516            "IF_P" => Some(Self::IfP),
8517            "ILIKE" => Some(Self::Ilike),
8518            "IMMEDIATE" => Some(Self::Immediate),
8519            "IMMUTABLE" => Some(Self::Immutable),
8520            "IMPLICIT_P" => Some(Self::ImplicitP),
8521            "IMPORT_P" => Some(Self::ImportP),
8522            "IN_P" => Some(Self::InP),
8523            "INCLUDE" => Some(Self::Include),
8524            "INCLUDING" => Some(Self::Including),
8525            "INCREMENT" => Some(Self::Increment),
8526            "INDENT" => Some(Self::Indent),
8527            "INDEX" => Some(Self::Index),
8528            "INDEXES" => Some(Self::Indexes),
8529            "INHERIT" => Some(Self::Inherit),
8530            "INHERITS" => Some(Self::Inherits),
8531            "INITIALLY" => Some(Self::Initially),
8532            "INLINE_P" => Some(Self::InlineP),
8533            "INNER_P" => Some(Self::InnerP),
8534            "INOUT" => Some(Self::Inout),
8535            "INPUT_P" => Some(Self::InputP),
8536            "INSENSITIVE" => Some(Self::Insensitive),
8537            "INSERT" => Some(Self::Insert),
8538            "INSTEAD" => Some(Self::Instead),
8539            "INT_P" => Some(Self::IntP),
8540            "INTEGER" => Some(Self::Integer),
8541            "INTERSECT" => Some(Self::Intersect),
8542            "INTERVAL" => Some(Self::Interval),
8543            "INTO" => Some(Self::Into),
8544            "INVOKER" => Some(Self::Invoker),
8545            "IS" => Some(Self::Is),
8546            "ISNULL" => Some(Self::Isnull),
8547            "ISOLATION" => Some(Self::Isolation),
8548            "JOIN" => Some(Self::Join),
8549            "JSON" => Some(Self::Json),
8550            "JSON_ARRAY" => Some(Self::JsonArray),
8551            "JSON_ARRAYAGG" => Some(Self::JsonArrayagg),
8552            "JSON_EXISTS" => Some(Self::JsonExists),
8553            "JSON_OBJECT" => Some(Self::JsonObject),
8554            "JSON_OBJECTAGG" => Some(Self::JsonObjectagg),
8555            "JSON_QUERY" => Some(Self::JsonQuery),
8556            "JSON_SCALAR" => Some(Self::JsonScalar),
8557            "JSON_SERIALIZE" => Some(Self::JsonSerialize),
8558            "JSON_TABLE" => Some(Self::JsonTable),
8559            "JSON_VALUE" => Some(Self::JsonValue),
8560            "KEEP" => Some(Self::Keep),
8561            "KEY" => Some(Self::Key),
8562            "KEYS" => Some(Self::Keys),
8563            "LABEL" => Some(Self::Label),
8564            "LANGUAGE" => Some(Self::Language),
8565            "LARGE_P" => Some(Self::LargeP),
8566            "LAST_P" => Some(Self::LastP),
8567            "LATERAL_P" => Some(Self::LateralP),
8568            "LEADING" => Some(Self::Leading),
8569            "LEAKPROOF" => Some(Self::Leakproof),
8570            "LEAST" => Some(Self::Least),
8571            "LEFT" => Some(Self::Left),
8572            "LEVEL" => Some(Self::Level),
8573            "LIKE" => Some(Self::Like),
8574            "LIMIT" => Some(Self::Limit),
8575            "LISTEN" => Some(Self::Listen),
8576            "LOAD" => Some(Self::Load),
8577            "LOCAL" => Some(Self::Local),
8578            "LOCALTIME" => Some(Self::Localtime),
8579            "LOCALTIMESTAMP" => Some(Self::Localtimestamp),
8580            "LOCATION" => Some(Self::Location),
8581            "LOCK_P" => Some(Self::LockP),
8582            "LOCKED" => Some(Self::Locked),
8583            "LOGGED" => Some(Self::Logged),
8584            "MAPPING" => Some(Self::Mapping),
8585            "MATCH" => Some(Self::Match),
8586            "MATCHED" => Some(Self::Matched),
8587            "MATERIALIZED" => Some(Self::Materialized),
8588            "MAXVALUE" => Some(Self::Maxvalue),
8589            "MERGE" => Some(Self::Merge),
8590            "MERGE_ACTION" => Some(Self::MergeAction),
8591            "METHOD" => Some(Self::Method),
8592            "MINUTE_P" => Some(Self::MinuteP),
8593            "MINVALUE" => Some(Self::Minvalue),
8594            "MODE" => Some(Self::Mode),
8595            "MONTH_P" => Some(Self::MonthP),
8596            "MOVE" => Some(Self::Move),
8597            "NAME_P" => Some(Self::NameP),
8598            "NAMES" => Some(Self::Names),
8599            "NATIONAL" => Some(Self::National),
8600            "NATURAL" => Some(Self::Natural),
8601            "NCHAR" => Some(Self::Nchar),
8602            "NESTED" => Some(Self::Nested),
8603            "NEW" => Some(Self::New),
8604            "NEXT" => Some(Self::Next),
8605            "NFC" => Some(Self::Nfc),
8606            "NFD" => Some(Self::Nfd),
8607            "NFKC" => Some(Self::Nfkc),
8608            "NFKD" => Some(Self::Nfkd),
8609            "NO" => Some(Self::No),
8610            "NONE" => Some(Self::None),
8611            "NORMALIZE" => Some(Self::Normalize),
8612            "NORMALIZED" => Some(Self::Normalized),
8613            "NOT" => Some(Self::Not),
8614            "NOTHING" => Some(Self::Nothing),
8615            "NOTIFY" => Some(Self::Notify),
8616            "NOTNULL" => Some(Self::Notnull),
8617            "NOWAIT" => Some(Self::Nowait),
8618            "NULL_P" => Some(Self::NullP),
8619            "NULLIF" => Some(Self::Nullif),
8620            "NULLS_P" => Some(Self::NullsP),
8621            "NUMERIC" => Some(Self::Numeric),
8622            "OBJECT_P" => Some(Self::ObjectP),
8623            "OF" => Some(Self::Of),
8624            "OFF" => Some(Self::Off),
8625            "OFFSET" => Some(Self::Offset),
8626            "OIDS" => Some(Self::Oids),
8627            "OLD" => Some(Self::Old),
8628            "OMIT" => Some(Self::Omit),
8629            "ON" => Some(Self::On),
8630            "ONLY" => Some(Self::Only),
8631            "OPERATOR" => Some(Self::Operator),
8632            "OPTION" => Some(Self::Option),
8633            "OPTIONS" => Some(Self::Options),
8634            "OR" => Some(Self::Or),
8635            "ORDER" => Some(Self::Order),
8636            "ORDINALITY" => Some(Self::Ordinality),
8637            "OTHERS" => Some(Self::Others),
8638            "OUT_P" => Some(Self::OutP),
8639            "OUTER_P" => Some(Self::OuterP),
8640            "OVER" => Some(Self::Over),
8641            "OVERLAPS" => Some(Self::Overlaps),
8642            "OVERLAY" => Some(Self::Overlay),
8643            "OVERRIDING" => Some(Self::Overriding),
8644            "OWNED" => Some(Self::Owned),
8645            "OWNER" => Some(Self::Owner),
8646            "PARALLEL" => Some(Self::Parallel),
8647            "PARAMETER" => Some(Self::Parameter),
8648            "PARSER" => Some(Self::Parser),
8649            "PARTIAL" => Some(Self::Partial),
8650            "PARTITION" => Some(Self::Partition),
8651            "PASSING" => Some(Self::Passing),
8652            "PASSWORD" => Some(Self::Password),
8653            "PATH" => Some(Self::Path),
8654            "PLACING" => Some(Self::Placing),
8655            "PLAN" => Some(Self::Plan),
8656            "PLANS" => Some(Self::Plans),
8657            "POLICY" => Some(Self::Policy),
8658            "POSITION" => Some(Self::Position),
8659            "PRECEDING" => Some(Self::Preceding),
8660            "PRECISION" => Some(Self::Precision),
8661            "PRESERVE" => Some(Self::Preserve),
8662            "PREPARE" => Some(Self::Prepare),
8663            "PREPARED" => Some(Self::Prepared),
8664            "PRIMARY" => Some(Self::Primary),
8665            "PRIOR" => Some(Self::Prior),
8666            "PRIVILEGES" => Some(Self::Privileges),
8667            "PROCEDURAL" => Some(Self::Procedural),
8668            "PROCEDURE" => Some(Self::Procedure),
8669            "PROCEDURES" => Some(Self::Procedures),
8670            "PROGRAM" => Some(Self::Program),
8671            "PUBLICATION" => Some(Self::Publication),
8672            "QUOTE" => Some(Self::Quote),
8673            "QUOTES" => Some(Self::Quotes),
8674            "RANGE" => Some(Self::Range),
8675            "READ" => Some(Self::Read),
8676            "REAL" => Some(Self::Real),
8677            "REASSIGN" => Some(Self::Reassign),
8678            "RECHECK" => Some(Self::Recheck),
8679            "RECURSIVE" => Some(Self::Recursive),
8680            "REF_P" => Some(Self::RefP),
8681            "REFERENCES" => Some(Self::References),
8682            "REFERENCING" => Some(Self::Referencing),
8683            "REFRESH" => Some(Self::Refresh),
8684            "REINDEX" => Some(Self::Reindex),
8685            "RELATIVE_P" => Some(Self::RelativeP),
8686            "RELEASE" => Some(Self::Release),
8687            "RENAME" => Some(Self::Rename),
8688            "REPEATABLE" => Some(Self::Repeatable),
8689            "REPLACE" => Some(Self::Replace),
8690            "REPLICA" => Some(Self::Replica),
8691            "RESET" => Some(Self::Reset),
8692            "RESTART" => Some(Self::Restart),
8693            "RESTRICT" => Some(Self::Restrict),
8694            "RETURN" => Some(Self::Return),
8695            "RETURNING" => Some(Self::Returning),
8696            "RETURNS" => Some(Self::Returns),
8697            "REVOKE" => Some(Self::Revoke),
8698            "RIGHT" => Some(Self::Right),
8699            "ROLE" => Some(Self::Role),
8700            "ROLLBACK" => Some(Self::Rollback),
8701            "ROLLUP" => Some(Self::Rollup),
8702            "ROUTINE" => Some(Self::Routine),
8703            "ROUTINES" => Some(Self::Routines),
8704            "ROW" => Some(Self::Row),
8705            "ROWS" => Some(Self::Rows),
8706            "RULE" => Some(Self::Rule),
8707            "SAVEPOINT" => Some(Self::Savepoint),
8708            "SCALAR" => Some(Self::Scalar),
8709            "SCHEMA" => Some(Self::Schema),
8710            "SCHEMAS" => Some(Self::Schemas),
8711            "SCROLL" => Some(Self::Scroll),
8712            "SEARCH" => Some(Self::Search),
8713            "SECOND_P" => Some(Self::SecondP),
8714            "SECURITY" => Some(Self::Security),
8715            "SELECT" => Some(Self::Select),
8716            "SEQUENCE" => Some(Self::Sequence),
8717            "SEQUENCES" => Some(Self::Sequences),
8718            "SERIALIZABLE" => Some(Self::Serializable),
8719            "SERVER" => Some(Self::Server),
8720            "SESSION" => Some(Self::Session),
8721            "SESSION_USER" => Some(Self::SessionUser),
8722            "SET" => Some(Self::Set),
8723            "SETS" => Some(Self::Sets),
8724            "SETOF" => Some(Self::Setof),
8725            "SHARE" => Some(Self::Share),
8726            "SHOW" => Some(Self::Show),
8727            "SIMILAR" => Some(Self::Similar),
8728            "SIMPLE" => Some(Self::Simple),
8729            "SKIP" => Some(Self::Skip),
8730            "SMALLINT" => Some(Self::Smallint),
8731            "SNAPSHOT" => Some(Self::Snapshot),
8732            "SOME" => Some(Self::Some),
8733            "SOURCE" => Some(Self::Source),
8734            "SQL_P" => Some(Self::SqlP),
8735            "STABLE" => Some(Self::Stable),
8736            "STANDALONE_P" => Some(Self::StandaloneP),
8737            "START" => Some(Self::Start),
8738            "STATEMENT" => Some(Self::Statement),
8739            "STATISTICS" => Some(Self::Statistics),
8740            "STDIN" => Some(Self::Stdin),
8741            "STDOUT" => Some(Self::Stdout),
8742            "STORAGE" => Some(Self::Storage),
8743            "STORED" => Some(Self::Stored),
8744            "STRICT_P" => Some(Self::StrictP),
8745            "STRING_P" => Some(Self::StringP),
8746            "STRIP_P" => Some(Self::StripP),
8747            "SUBSCRIPTION" => Some(Self::Subscription),
8748            "SUBSTRING" => Some(Self::Substring),
8749            "SUPPORT" => Some(Self::Support),
8750            "SYMMETRIC" => Some(Self::Symmetric),
8751            "SYSID" => Some(Self::Sysid),
8752            "SYSTEM_P" => Some(Self::SystemP),
8753            "SYSTEM_USER" => Some(Self::SystemUser),
8754            "TABLE" => Some(Self::Table),
8755            "TABLES" => Some(Self::Tables),
8756            "TABLESAMPLE" => Some(Self::Tablesample),
8757            "TABLESPACE" => Some(Self::Tablespace),
8758            "TARGET" => Some(Self::Target),
8759            "TEMP" => Some(Self::Temp),
8760            "TEMPLATE" => Some(Self::Template),
8761            "TEMPORARY" => Some(Self::Temporary),
8762            "TEXT_P" => Some(Self::TextP),
8763            "THEN" => Some(Self::Then),
8764            "TIES" => Some(Self::Ties),
8765            "TIME" => Some(Self::Time),
8766            "TIMESTAMP" => Some(Self::Timestamp),
8767            "TO" => Some(Self::To),
8768            "TRAILING" => Some(Self::Trailing),
8769            "TRANSACTION" => Some(Self::Transaction),
8770            "TRANSFORM" => Some(Self::Transform),
8771            "TREAT" => Some(Self::Treat),
8772            "TRIGGER" => Some(Self::Trigger),
8773            "TRIM" => Some(Self::Trim),
8774            "TRUE_P" => Some(Self::TrueP),
8775            "TRUNCATE" => Some(Self::Truncate),
8776            "TRUSTED" => Some(Self::Trusted),
8777            "TYPE_P" => Some(Self::TypeP),
8778            "TYPES_P" => Some(Self::TypesP),
8779            "UESCAPE" => Some(Self::Uescape),
8780            "UNBOUNDED" => Some(Self::Unbounded),
8781            "UNCONDITIONAL" => Some(Self::Unconditional),
8782            "UNCOMMITTED" => Some(Self::Uncommitted),
8783            "UNENCRYPTED" => Some(Self::Unencrypted),
8784            "UNION" => Some(Self::Union),
8785            "UNIQUE" => Some(Self::Unique),
8786            "UNKNOWN" => Some(Self::Unknown),
8787            "UNLISTEN" => Some(Self::Unlisten),
8788            "UNLOGGED" => Some(Self::Unlogged),
8789            "UNTIL" => Some(Self::Until),
8790            "UPDATE" => Some(Self::Update),
8791            "USER" => Some(Self::User),
8792            "USING" => Some(Self::Using),
8793            "VACUUM" => Some(Self::Vacuum),
8794            "VALID" => Some(Self::Valid),
8795            "VALIDATE" => Some(Self::Validate),
8796            "VALIDATOR" => Some(Self::Validator),
8797            "VALUE_P" => Some(Self::ValueP),
8798            "VALUES" => Some(Self::Values),
8799            "VARCHAR" => Some(Self::Varchar),
8800            "VARIADIC" => Some(Self::Variadic),
8801            "VARYING" => Some(Self::Varying),
8802            "VERBOSE" => Some(Self::Verbose),
8803            "VERSION_P" => Some(Self::VersionP),
8804            "VIEW" => Some(Self::View),
8805            "VIEWS" => Some(Self::Views),
8806            "VOLATILE" => Some(Self::Volatile),
8807            "WHEN" => Some(Self::When),
8808            "WHERE" => Some(Self::Where),
8809            "WHITESPACE_P" => Some(Self::WhitespaceP),
8810            "WINDOW" => Some(Self::Window),
8811            "WITH" => Some(Self::With),
8812            "WITHIN" => Some(Self::Within),
8813            "WITHOUT" => Some(Self::Without),
8814            "WORK" => Some(Self::Work),
8815            "WRAPPER" => Some(Self::Wrapper),
8816            "WRITE" => Some(Self::Write),
8817            "XML_P" => Some(Self::XmlP),
8818            "XMLATTRIBUTES" => Some(Self::Xmlattributes),
8819            "XMLCONCAT" => Some(Self::Xmlconcat),
8820            "XMLELEMENT" => Some(Self::Xmlelement),
8821            "XMLEXISTS" => Some(Self::Xmlexists),
8822            "XMLFOREST" => Some(Self::Xmlforest),
8823            "XMLNAMESPACES" => Some(Self::Xmlnamespaces),
8824            "XMLPARSE" => Some(Self::Xmlparse),
8825            "XMLPI" => Some(Self::Xmlpi),
8826            "XMLROOT" => Some(Self::Xmlroot),
8827            "XMLSERIALIZE" => Some(Self::Xmlserialize),
8828            "XMLTABLE" => Some(Self::Xmltable),
8829            "YEAR_P" => Some(Self::YearP),
8830            "YES_P" => Some(Self::YesP),
8831            "ZONE" => Some(Self::Zone),
8832            "FORMAT_LA" => Some(Self::FormatLa),
8833            "NOT_LA" => Some(Self::NotLa),
8834            "NULLS_LA" => Some(Self::NullsLa),
8835            "WITH_LA" => Some(Self::WithLa),
8836            "WITHOUT_LA" => Some(Self::WithoutLa),
8837            "MODE_TYPE_NAME" => Some(Self::ModeTypeName),
8838            "MODE_PLPGSQL_EXPR" => Some(Self::ModePlpgsqlExpr),
8839            "MODE_PLPGSQL_ASSIGN1" => Some(Self::ModePlpgsqlAssign1),
8840            "MODE_PLPGSQL_ASSIGN2" => Some(Self::ModePlpgsqlAssign2),
8841            "MODE_PLPGSQL_ASSIGN3" => Some(Self::ModePlpgsqlAssign3),
8842            "UMINUS" => Some(Self::Uminus),
8843            _ => None,
8844        }
8845    }
8846}