Skip to main content

pg_query/
protobuf.rs

1// This file is @generated by prost-build.
2#[derive(serde::Serialize)]
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct ParseResult {
5    #[prost(int32, tag = "1")]
6    pub version: i32,
7    #[prost(message, repeated, tag = "2")]
8    pub stmts: ::prost::alloc::vec::Vec<RawStmt>,
9}
10#[derive(serde::Serialize)]
11#[derive(Clone, PartialEq, ::prost::Message)]
12pub struct ScanResult {
13    #[prost(int32, tag = "1")]
14    pub version: i32,
15    #[prost(message, repeated, tag = "2")]
16    pub tokens: ::prost::alloc::vec::Vec<ScanToken>,
17}
18#[derive(serde::Serialize)]
19#[derive(Clone, PartialEq, ::prost::Message)]
20pub struct Node {
21    #[prost(
22        oneof = "node::Node",
23        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, 269, 270, 271"
24    )]
25    pub node: ::core::option::Option<node::Node>,
26}
27/// Nested message and enum types in `Node`.
28pub mod node {
29    #[derive(serde::Serialize)]
30    #[derive(Clone, PartialEq, ::prost::Oneof)]
31    pub enum Node {
32        #[prost(message, tag = "1")]
33        Alias(super::Alias),
34        #[prost(message, tag = "2")]
35        RangeVar(super::RangeVar),
36        #[prost(message, tag = "3")]
37        TableFunc(::prost::alloc::boxed::Box<super::TableFunc>),
38        #[prost(message, tag = "4")]
39        IntoClause(::prost::alloc::boxed::Box<super::IntoClause>),
40        #[prost(message, tag = "5")]
41        Var(::prost::alloc::boxed::Box<super::Var>),
42        #[prost(message, tag = "6")]
43        Param(::prost::alloc::boxed::Box<super::Param>),
44        #[prost(message, tag = "7")]
45        Aggref(::prost::alloc::boxed::Box<super::Aggref>),
46        #[prost(message, tag = "8")]
47        GroupingFunc(::prost::alloc::boxed::Box<super::GroupingFunc>),
48        #[prost(message, tag = "9")]
49        WindowFunc(::prost::alloc::boxed::Box<super::WindowFunc>),
50        #[prost(message, tag = "10")]
51        WindowFuncRunCondition(
52            ::prost::alloc::boxed::Box<super::WindowFuncRunCondition>,
53        ),
54        #[prost(message, tag = "11")]
55        MergeSupportFunc(::prost::alloc::boxed::Box<super::MergeSupportFunc>),
56        #[prost(message, tag = "12")]
57        SubscriptingRef(::prost::alloc::boxed::Box<super::SubscriptingRef>),
58        #[prost(message, tag = "13")]
59        FuncExpr(::prost::alloc::boxed::Box<super::FuncExpr>),
60        #[prost(message, tag = "14")]
61        NamedArgExpr(::prost::alloc::boxed::Box<super::NamedArgExpr>),
62        #[prost(message, tag = "15")]
63        OpExpr(::prost::alloc::boxed::Box<super::OpExpr>),
64        #[prost(message, tag = "16")]
65        DistinctExpr(::prost::alloc::boxed::Box<super::DistinctExpr>),
66        #[prost(message, tag = "17")]
67        NullIfExpr(::prost::alloc::boxed::Box<super::NullIfExpr>),
68        #[prost(message, tag = "18")]
69        ScalarArrayOpExpr(::prost::alloc::boxed::Box<super::ScalarArrayOpExpr>),
70        #[prost(message, tag = "19")]
71        BoolExpr(::prost::alloc::boxed::Box<super::BoolExpr>),
72        #[prost(message, tag = "20")]
73        SubLink(::prost::alloc::boxed::Box<super::SubLink>),
74        #[prost(message, tag = "21")]
75        SubPlan(::prost::alloc::boxed::Box<super::SubPlan>),
76        #[prost(message, tag = "22")]
77        AlternativeSubPlan(::prost::alloc::boxed::Box<super::AlternativeSubPlan>),
78        #[prost(message, tag = "23")]
79        FieldSelect(::prost::alloc::boxed::Box<super::FieldSelect>),
80        #[prost(message, tag = "24")]
81        FieldStore(::prost::alloc::boxed::Box<super::FieldStore>),
82        #[prost(message, tag = "25")]
83        RelabelType(::prost::alloc::boxed::Box<super::RelabelType>),
84        #[prost(message, tag = "26")]
85        CoerceViaIo(::prost::alloc::boxed::Box<super::CoerceViaIo>),
86        #[prost(message, tag = "27")]
87        ArrayCoerceExpr(::prost::alloc::boxed::Box<super::ArrayCoerceExpr>),
88        #[prost(message, tag = "28")]
89        ConvertRowtypeExpr(::prost::alloc::boxed::Box<super::ConvertRowtypeExpr>),
90        #[prost(message, tag = "29")]
91        CollateExpr(::prost::alloc::boxed::Box<super::CollateExpr>),
92        #[prost(message, tag = "30")]
93        CaseExpr(::prost::alloc::boxed::Box<super::CaseExpr>),
94        #[prost(message, tag = "31")]
95        CaseWhen(::prost::alloc::boxed::Box<super::CaseWhen>),
96        #[prost(message, tag = "32")]
97        CaseTestExpr(::prost::alloc::boxed::Box<super::CaseTestExpr>),
98        #[prost(message, tag = "33")]
99        ArrayExpr(::prost::alloc::boxed::Box<super::ArrayExpr>),
100        #[prost(message, tag = "34")]
101        RowExpr(::prost::alloc::boxed::Box<super::RowExpr>),
102        #[prost(message, tag = "35")]
103        RowCompareExpr(::prost::alloc::boxed::Box<super::RowCompareExpr>),
104        #[prost(message, tag = "36")]
105        CoalesceExpr(::prost::alloc::boxed::Box<super::CoalesceExpr>),
106        #[prost(message, tag = "37")]
107        MinMaxExpr(::prost::alloc::boxed::Box<super::MinMaxExpr>),
108        #[prost(message, tag = "38")]
109        SqlvalueFunction(::prost::alloc::boxed::Box<super::SqlValueFunction>),
110        #[prost(message, tag = "39")]
111        XmlExpr(::prost::alloc::boxed::Box<super::XmlExpr>),
112        #[prost(message, tag = "40")]
113        JsonFormat(super::JsonFormat),
114        #[prost(message, tag = "41")]
115        JsonReturning(super::JsonReturning),
116        #[prost(message, tag = "42")]
117        JsonValueExpr(::prost::alloc::boxed::Box<super::JsonValueExpr>),
118        #[prost(message, tag = "43")]
119        JsonConstructorExpr(::prost::alloc::boxed::Box<super::JsonConstructorExpr>),
120        #[prost(message, tag = "44")]
121        JsonIsPredicate(::prost::alloc::boxed::Box<super::JsonIsPredicate>),
122        #[prost(message, tag = "45")]
123        JsonBehavior(::prost::alloc::boxed::Box<super::JsonBehavior>),
124        #[prost(message, tag = "46")]
125        JsonExpr(::prost::alloc::boxed::Box<super::JsonExpr>),
126        #[prost(message, tag = "47")]
127        JsonTablePath(super::JsonTablePath),
128        #[prost(message, tag = "48")]
129        JsonTablePathScan(::prost::alloc::boxed::Box<super::JsonTablePathScan>),
130        #[prost(message, tag = "49")]
131        JsonTableSiblingJoin(::prost::alloc::boxed::Box<super::JsonTableSiblingJoin>),
132        #[prost(message, tag = "50")]
133        NullTest(::prost::alloc::boxed::Box<super::NullTest>),
134        #[prost(message, tag = "51")]
135        BooleanTest(::prost::alloc::boxed::Box<super::BooleanTest>),
136        #[prost(message, tag = "52")]
137        MergeAction(::prost::alloc::boxed::Box<super::MergeAction>),
138        #[prost(message, tag = "53")]
139        CoerceToDomain(::prost::alloc::boxed::Box<super::CoerceToDomain>),
140        #[prost(message, tag = "54")]
141        CoerceToDomainValue(::prost::alloc::boxed::Box<super::CoerceToDomainValue>),
142        #[prost(message, tag = "55")]
143        SetToDefault(::prost::alloc::boxed::Box<super::SetToDefault>),
144        #[prost(message, tag = "56")]
145        CurrentOfExpr(::prost::alloc::boxed::Box<super::CurrentOfExpr>),
146        #[prost(message, tag = "57")]
147        NextValueExpr(::prost::alloc::boxed::Box<super::NextValueExpr>),
148        #[prost(message, tag = "58")]
149        InferenceElem(::prost::alloc::boxed::Box<super::InferenceElem>),
150        #[prost(message, tag = "59")]
151        ReturningExpr(::prost::alloc::boxed::Box<super::ReturningExpr>),
152        #[prost(message, tag = "60")]
153        TargetEntry(::prost::alloc::boxed::Box<super::TargetEntry>),
154        #[prost(message, tag = "61")]
155        RangeTblRef(super::RangeTblRef),
156        #[prost(message, tag = "62")]
157        JoinExpr(::prost::alloc::boxed::Box<super::JoinExpr>),
158        #[prost(message, tag = "63")]
159        FromExpr(::prost::alloc::boxed::Box<super::FromExpr>),
160        #[prost(message, tag = "64")]
161        OnConflictExpr(::prost::alloc::boxed::Box<super::OnConflictExpr>),
162        #[prost(message, tag = "65")]
163        Query(::prost::alloc::boxed::Box<super::Query>),
164        #[prost(message, tag = "66")]
165        TypeName(super::TypeName),
166        #[prost(message, tag = "67")]
167        ColumnRef(super::ColumnRef),
168        #[prost(message, tag = "68")]
169        ParamRef(super::ParamRef),
170        #[prost(message, tag = "69")]
171        AExpr(::prost::alloc::boxed::Box<super::AExpr>),
172        #[prost(message, tag = "70")]
173        TypeCast(::prost::alloc::boxed::Box<super::TypeCast>),
174        #[prost(message, tag = "71")]
175        CollateClause(::prost::alloc::boxed::Box<super::CollateClause>),
176        #[prost(message, tag = "72")]
177        RoleSpec(super::RoleSpec),
178        #[prost(message, tag = "73")]
179        FuncCall(::prost::alloc::boxed::Box<super::FuncCall>),
180        #[prost(message, tag = "74")]
181        AStar(super::AStar),
182        #[prost(message, tag = "75")]
183        AIndices(::prost::alloc::boxed::Box<super::AIndices>),
184        #[prost(message, tag = "76")]
185        AIndirection(::prost::alloc::boxed::Box<super::AIndirection>),
186        #[prost(message, tag = "77")]
187        AArrayExpr(super::AArrayExpr),
188        #[prost(message, tag = "78")]
189        ResTarget(::prost::alloc::boxed::Box<super::ResTarget>),
190        #[prost(message, tag = "79")]
191        MultiAssignRef(::prost::alloc::boxed::Box<super::MultiAssignRef>),
192        #[prost(message, tag = "80")]
193        SortBy(::prost::alloc::boxed::Box<super::SortBy>),
194        #[prost(message, tag = "81")]
195        WindowDef(::prost::alloc::boxed::Box<super::WindowDef>),
196        #[prost(message, tag = "82")]
197        RangeSubselect(::prost::alloc::boxed::Box<super::RangeSubselect>),
198        #[prost(message, tag = "83")]
199        RangeFunction(super::RangeFunction),
200        #[prost(message, tag = "84")]
201        RangeTableFunc(::prost::alloc::boxed::Box<super::RangeTableFunc>),
202        #[prost(message, tag = "85")]
203        RangeTableFuncCol(::prost::alloc::boxed::Box<super::RangeTableFuncCol>),
204        #[prost(message, tag = "86")]
205        RangeTableSample(::prost::alloc::boxed::Box<super::RangeTableSample>),
206        #[prost(message, tag = "87")]
207        ColumnDef(::prost::alloc::boxed::Box<super::ColumnDef>),
208        #[prost(message, tag = "88")]
209        TableLikeClause(super::TableLikeClause),
210        #[prost(message, tag = "89")]
211        IndexElem(::prost::alloc::boxed::Box<super::IndexElem>),
212        #[prost(message, tag = "90")]
213        DefElem(::prost::alloc::boxed::Box<super::DefElem>),
214        #[prost(message, tag = "91")]
215        LockingClause(super::LockingClause),
216        #[prost(message, tag = "92")]
217        XmlSerialize(::prost::alloc::boxed::Box<super::XmlSerialize>),
218        #[prost(message, tag = "93")]
219        PartitionElem(::prost::alloc::boxed::Box<super::PartitionElem>),
220        #[prost(message, tag = "94")]
221        PartitionSpec(super::PartitionSpec),
222        #[prost(message, tag = "95")]
223        PartitionBoundSpec(super::PartitionBoundSpec),
224        #[prost(message, tag = "96")]
225        PartitionRangeDatum(::prost::alloc::boxed::Box<super::PartitionRangeDatum>),
226        #[prost(message, tag = "97")]
227        PartitionCmd(super::PartitionCmd),
228        #[prost(message, tag = "98")]
229        RangeTblEntry(::prost::alloc::boxed::Box<super::RangeTblEntry>),
230        #[prost(message, tag = "99")]
231        RtepermissionInfo(super::RtePermissionInfo),
232        #[prost(message, tag = "100")]
233        RangeTblFunction(::prost::alloc::boxed::Box<super::RangeTblFunction>),
234        #[prost(message, tag = "101")]
235        TableSampleClause(::prost::alloc::boxed::Box<super::TableSampleClause>),
236        #[prost(message, tag = "102")]
237        WithCheckOption(::prost::alloc::boxed::Box<super::WithCheckOption>),
238        #[prost(message, tag = "103")]
239        SortGroupClause(super::SortGroupClause),
240        #[prost(message, tag = "104")]
241        GroupingSet(super::GroupingSet),
242        #[prost(message, tag = "105")]
243        WindowClause(::prost::alloc::boxed::Box<super::WindowClause>),
244        #[prost(message, tag = "106")]
245        RowMarkClause(super::RowMarkClause),
246        #[prost(message, tag = "107")]
247        WithClause(super::WithClause),
248        #[prost(message, tag = "108")]
249        InferClause(::prost::alloc::boxed::Box<super::InferClause>),
250        #[prost(message, tag = "109")]
251        OnConflictClause(::prost::alloc::boxed::Box<super::OnConflictClause>),
252        #[prost(message, tag = "110")]
253        CtesearchClause(super::CteSearchClause),
254        #[prost(message, tag = "111")]
255        CtecycleClause(::prost::alloc::boxed::Box<super::CteCycleClause>),
256        #[prost(message, tag = "112")]
257        CommonTableExpr(::prost::alloc::boxed::Box<super::CommonTableExpr>),
258        #[prost(message, tag = "113")]
259        MergeWhenClause(::prost::alloc::boxed::Box<super::MergeWhenClause>),
260        #[prost(message, tag = "114")]
261        ReturningOption(super::ReturningOption),
262        #[prost(message, tag = "115")]
263        ReturningClause(super::ReturningClause),
264        #[prost(message, tag = "116")]
265        TriggerTransition(super::TriggerTransition),
266        #[prost(message, tag = "117")]
267        JsonOutput(super::JsonOutput),
268        #[prost(message, tag = "118")]
269        JsonArgument(::prost::alloc::boxed::Box<super::JsonArgument>),
270        #[prost(message, tag = "119")]
271        JsonFuncExpr(::prost::alloc::boxed::Box<super::JsonFuncExpr>),
272        #[prost(message, tag = "120")]
273        JsonTablePathSpec(::prost::alloc::boxed::Box<super::JsonTablePathSpec>),
274        #[prost(message, tag = "121")]
275        JsonTable(::prost::alloc::boxed::Box<super::JsonTable>),
276        #[prost(message, tag = "122")]
277        JsonTableColumn(::prost::alloc::boxed::Box<super::JsonTableColumn>),
278        #[prost(message, tag = "123")]
279        JsonKeyValue(::prost::alloc::boxed::Box<super::JsonKeyValue>),
280        #[prost(message, tag = "124")]
281        JsonParseExpr(::prost::alloc::boxed::Box<super::JsonParseExpr>),
282        #[prost(message, tag = "125")]
283        JsonScalarExpr(::prost::alloc::boxed::Box<super::JsonScalarExpr>),
284        #[prost(message, tag = "126")]
285        JsonSerializeExpr(::prost::alloc::boxed::Box<super::JsonSerializeExpr>),
286        #[prost(message, tag = "127")]
287        JsonObjectConstructor(super::JsonObjectConstructor),
288        #[prost(message, tag = "128")]
289        JsonArrayConstructor(super::JsonArrayConstructor),
290        #[prost(message, tag = "129")]
291        JsonArrayQueryConstructor(
292            ::prost::alloc::boxed::Box<super::JsonArrayQueryConstructor>,
293        ),
294        #[prost(message, tag = "130")]
295        JsonAggConstructor(::prost::alloc::boxed::Box<super::JsonAggConstructor>),
296        #[prost(message, tag = "131")]
297        JsonObjectAgg(::prost::alloc::boxed::Box<super::JsonObjectAgg>),
298        #[prost(message, tag = "132")]
299        JsonArrayAgg(::prost::alloc::boxed::Box<super::JsonArrayAgg>),
300        #[prost(message, tag = "133")]
301        RawStmt(::prost::alloc::boxed::Box<super::RawStmt>),
302        #[prost(message, tag = "134")]
303        InsertStmt(::prost::alloc::boxed::Box<super::InsertStmt>),
304        #[prost(message, tag = "135")]
305        DeleteStmt(::prost::alloc::boxed::Box<super::DeleteStmt>),
306        #[prost(message, tag = "136")]
307        UpdateStmt(::prost::alloc::boxed::Box<super::UpdateStmt>),
308        #[prost(message, tag = "137")]
309        MergeStmt(::prost::alloc::boxed::Box<super::MergeStmt>),
310        #[prost(message, tag = "138")]
311        SelectStmt(::prost::alloc::boxed::Box<super::SelectStmt>),
312        #[prost(message, tag = "139")]
313        SetOperationStmt(::prost::alloc::boxed::Box<super::SetOperationStmt>),
314        #[prost(message, tag = "140")]
315        ReturnStmt(::prost::alloc::boxed::Box<super::ReturnStmt>),
316        #[prost(message, tag = "141")]
317        PlassignStmt(::prost::alloc::boxed::Box<super::PlAssignStmt>),
318        #[prost(message, tag = "142")]
319        CreateSchemaStmt(super::CreateSchemaStmt),
320        #[prost(message, tag = "143")]
321        AlterTableStmt(super::AlterTableStmt),
322        #[prost(message, tag = "144")]
323        AlterTableCmd(::prost::alloc::boxed::Box<super::AlterTableCmd>),
324        #[prost(message, tag = "145")]
325        AtalterConstraint(super::AtAlterConstraint),
326        #[prost(message, tag = "146")]
327        ReplicaIdentityStmt(super::ReplicaIdentityStmt),
328        #[prost(message, tag = "147")]
329        AlterCollationStmt(super::AlterCollationStmt),
330        #[prost(message, tag = "148")]
331        AlterDomainStmt(::prost::alloc::boxed::Box<super::AlterDomainStmt>),
332        #[prost(message, tag = "149")]
333        GrantStmt(super::GrantStmt),
334        #[prost(message, tag = "150")]
335        ObjectWithArgs(super::ObjectWithArgs),
336        #[prost(message, tag = "151")]
337        AccessPriv(super::AccessPriv),
338        #[prost(message, tag = "152")]
339        GrantRoleStmt(super::GrantRoleStmt),
340        #[prost(message, tag = "153")]
341        AlterDefaultPrivilegesStmt(super::AlterDefaultPrivilegesStmt),
342        #[prost(message, tag = "154")]
343        CopyStmt(::prost::alloc::boxed::Box<super::CopyStmt>),
344        #[prost(message, tag = "155")]
345        VariableSetStmt(super::VariableSetStmt),
346        #[prost(message, tag = "156")]
347        VariableShowStmt(super::VariableShowStmt),
348        #[prost(message, tag = "157")]
349        CreateStmt(super::CreateStmt),
350        #[prost(message, tag = "158")]
351        Constraint(::prost::alloc::boxed::Box<super::Constraint>),
352        #[prost(message, tag = "159")]
353        CreateTableSpaceStmt(super::CreateTableSpaceStmt),
354        #[prost(message, tag = "160")]
355        DropTableSpaceStmt(super::DropTableSpaceStmt),
356        #[prost(message, tag = "161")]
357        AlterTableSpaceOptionsStmt(super::AlterTableSpaceOptionsStmt),
358        #[prost(message, tag = "162")]
359        AlterTableMoveAllStmt(super::AlterTableMoveAllStmt),
360        #[prost(message, tag = "163")]
361        CreateExtensionStmt(super::CreateExtensionStmt),
362        #[prost(message, tag = "164")]
363        AlterExtensionStmt(super::AlterExtensionStmt),
364        #[prost(message, tag = "165")]
365        AlterExtensionContentsStmt(
366            ::prost::alloc::boxed::Box<super::AlterExtensionContentsStmt>,
367        ),
368        #[prost(message, tag = "166")]
369        CreateFdwStmt(super::CreateFdwStmt),
370        #[prost(message, tag = "167")]
371        AlterFdwStmt(super::AlterFdwStmt),
372        #[prost(message, tag = "168")]
373        CreateForeignServerStmt(super::CreateForeignServerStmt),
374        #[prost(message, tag = "169")]
375        AlterForeignServerStmt(super::AlterForeignServerStmt),
376        #[prost(message, tag = "170")]
377        CreateForeignTableStmt(super::CreateForeignTableStmt),
378        #[prost(message, tag = "171")]
379        CreateUserMappingStmt(super::CreateUserMappingStmt),
380        #[prost(message, tag = "172")]
381        AlterUserMappingStmt(super::AlterUserMappingStmt),
382        #[prost(message, tag = "173")]
383        DropUserMappingStmt(super::DropUserMappingStmt),
384        #[prost(message, tag = "174")]
385        ImportForeignSchemaStmt(super::ImportForeignSchemaStmt),
386        #[prost(message, tag = "175")]
387        CreatePolicyStmt(::prost::alloc::boxed::Box<super::CreatePolicyStmt>),
388        #[prost(message, tag = "176")]
389        AlterPolicyStmt(::prost::alloc::boxed::Box<super::AlterPolicyStmt>),
390        #[prost(message, tag = "177")]
391        CreateAmStmt(super::CreateAmStmt),
392        #[prost(message, tag = "178")]
393        CreateTrigStmt(::prost::alloc::boxed::Box<super::CreateTrigStmt>),
394        #[prost(message, tag = "179")]
395        CreateEventTrigStmt(super::CreateEventTrigStmt),
396        #[prost(message, tag = "180")]
397        AlterEventTrigStmt(super::AlterEventTrigStmt),
398        #[prost(message, tag = "181")]
399        CreatePlangStmt(super::CreatePLangStmt),
400        #[prost(message, tag = "182")]
401        CreateRoleStmt(super::CreateRoleStmt),
402        #[prost(message, tag = "183")]
403        AlterRoleStmt(super::AlterRoleStmt),
404        #[prost(message, tag = "184")]
405        AlterRoleSetStmt(super::AlterRoleSetStmt),
406        #[prost(message, tag = "185")]
407        DropRoleStmt(super::DropRoleStmt),
408        #[prost(message, tag = "186")]
409        CreateSeqStmt(super::CreateSeqStmt),
410        #[prost(message, tag = "187")]
411        AlterSeqStmt(super::AlterSeqStmt),
412        #[prost(message, tag = "188")]
413        DefineStmt(super::DefineStmt),
414        #[prost(message, tag = "189")]
415        CreateDomainStmt(::prost::alloc::boxed::Box<super::CreateDomainStmt>),
416        #[prost(message, tag = "190")]
417        CreateOpClassStmt(super::CreateOpClassStmt),
418        #[prost(message, tag = "191")]
419        CreateOpClassItem(super::CreateOpClassItem),
420        #[prost(message, tag = "192")]
421        CreateOpFamilyStmt(super::CreateOpFamilyStmt),
422        #[prost(message, tag = "193")]
423        AlterOpFamilyStmt(super::AlterOpFamilyStmt),
424        #[prost(message, tag = "194")]
425        DropStmt(super::DropStmt),
426        #[prost(message, tag = "195")]
427        TruncateStmt(super::TruncateStmt),
428        #[prost(message, tag = "196")]
429        CommentStmt(::prost::alloc::boxed::Box<super::CommentStmt>),
430        #[prost(message, tag = "197")]
431        SecLabelStmt(::prost::alloc::boxed::Box<super::SecLabelStmt>),
432        #[prost(message, tag = "198")]
433        DeclareCursorStmt(::prost::alloc::boxed::Box<super::DeclareCursorStmt>),
434        #[prost(message, tag = "199")]
435        ClosePortalStmt(super::ClosePortalStmt),
436        #[prost(message, tag = "200")]
437        FetchStmt(super::FetchStmt),
438        #[prost(message, tag = "201")]
439        IndexStmt(::prost::alloc::boxed::Box<super::IndexStmt>),
440        #[prost(message, tag = "202")]
441        CreateStatsStmt(super::CreateStatsStmt),
442        #[prost(message, tag = "203")]
443        StatsElem(::prost::alloc::boxed::Box<super::StatsElem>),
444        #[prost(message, tag = "204")]
445        AlterStatsStmt(::prost::alloc::boxed::Box<super::AlterStatsStmt>),
446        #[prost(message, tag = "205")]
447        CreateFunctionStmt(::prost::alloc::boxed::Box<super::CreateFunctionStmt>),
448        #[prost(message, tag = "206")]
449        FunctionParameter(::prost::alloc::boxed::Box<super::FunctionParameter>),
450        #[prost(message, tag = "207")]
451        AlterFunctionStmt(super::AlterFunctionStmt),
452        #[prost(message, tag = "208")]
453        DoStmt(super::DoStmt),
454        #[prost(message, tag = "209")]
455        InlineCodeBlock(super::InlineCodeBlock),
456        #[prost(message, tag = "210")]
457        CallStmt(::prost::alloc::boxed::Box<super::CallStmt>),
458        #[prost(message, tag = "211")]
459        CallContext(super::CallContext),
460        #[prost(message, tag = "212")]
461        RenameStmt(::prost::alloc::boxed::Box<super::RenameStmt>),
462        #[prost(message, tag = "213")]
463        AlterObjectDependsStmt(
464            ::prost::alloc::boxed::Box<super::AlterObjectDependsStmt>,
465        ),
466        #[prost(message, tag = "214")]
467        AlterObjectSchemaStmt(::prost::alloc::boxed::Box<super::AlterObjectSchemaStmt>),
468        #[prost(message, tag = "215")]
469        AlterOwnerStmt(::prost::alloc::boxed::Box<super::AlterOwnerStmt>),
470        #[prost(message, tag = "216")]
471        AlterOperatorStmt(super::AlterOperatorStmt),
472        #[prost(message, tag = "217")]
473        AlterTypeStmt(super::AlterTypeStmt),
474        #[prost(message, tag = "218")]
475        RuleStmt(::prost::alloc::boxed::Box<super::RuleStmt>),
476        #[prost(message, tag = "219")]
477        NotifyStmt(super::NotifyStmt),
478        #[prost(message, tag = "220")]
479        ListenStmt(super::ListenStmt),
480        #[prost(message, tag = "221")]
481        UnlistenStmt(super::UnlistenStmt),
482        #[prost(message, tag = "222")]
483        TransactionStmt(super::TransactionStmt),
484        #[prost(message, tag = "223")]
485        CompositeTypeStmt(super::CompositeTypeStmt),
486        #[prost(message, tag = "224")]
487        CreateEnumStmt(super::CreateEnumStmt),
488        #[prost(message, tag = "225")]
489        CreateRangeStmt(super::CreateRangeStmt),
490        #[prost(message, tag = "226")]
491        AlterEnumStmt(super::AlterEnumStmt),
492        #[prost(message, tag = "227")]
493        ViewStmt(::prost::alloc::boxed::Box<super::ViewStmt>),
494        #[prost(message, tag = "228")]
495        LoadStmt(super::LoadStmt),
496        #[prost(message, tag = "229")]
497        CreatedbStmt(super::CreatedbStmt),
498        #[prost(message, tag = "230")]
499        AlterDatabaseStmt(super::AlterDatabaseStmt),
500        #[prost(message, tag = "231")]
501        AlterDatabaseRefreshCollStmt(super::AlterDatabaseRefreshCollStmt),
502        #[prost(message, tag = "232")]
503        AlterDatabaseSetStmt(super::AlterDatabaseSetStmt),
504        #[prost(message, tag = "233")]
505        DropdbStmt(super::DropdbStmt),
506        #[prost(message, tag = "234")]
507        AlterSystemStmt(super::AlterSystemStmt),
508        #[prost(message, tag = "235")]
509        ClusterStmt(super::ClusterStmt),
510        #[prost(message, tag = "236")]
511        VacuumStmt(super::VacuumStmt),
512        #[prost(message, tag = "237")]
513        VacuumRelation(super::VacuumRelation),
514        #[prost(message, tag = "238")]
515        ExplainStmt(::prost::alloc::boxed::Box<super::ExplainStmt>),
516        #[prost(message, tag = "239")]
517        CreateTableAsStmt(::prost::alloc::boxed::Box<super::CreateTableAsStmt>),
518        #[prost(message, tag = "240")]
519        RefreshMatViewStmt(super::RefreshMatViewStmt),
520        #[prost(message, tag = "241")]
521        CheckPointStmt(super::CheckPointStmt),
522        #[prost(message, tag = "242")]
523        DiscardStmt(super::DiscardStmt),
524        #[prost(message, tag = "243")]
525        LockStmt(super::LockStmt),
526        #[prost(message, tag = "244")]
527        ConstraintsSetStmt(super::ConstraintsSetStmt),
528        #[prost(message, tag = "245")]
529        ReindexStmt(super::ReindexStmt),
530        #[prost(message, tag = "246")]
531        CreateConversionStmt(super::CreateConversionStmt),
532        #[prost(message, tag = "247")]
533        CreateCastStmt(super::CreateCastStmt),
534        #[prost(message, tag = "248")]
535        CreateTransformStmt(super::CreateTransformStmt),
536        #[prost(message, tag = "249")]
537        PrepareStmt(::prost::alloc::boxed::Box<super::PrepareStmt>),
538        #[prost(message, tag = "250")]
539        ExecuteStmt(super::ExecuteStmt),
540        #[prost(message, tag = "251")]
541        DeallocateStmt(super::DeallocateStmt),
542        #[prost(message, tag = "252")]
543        DropOwnedStmt(super::DropOwnedStmt),
544        #[prost(message, tag = "253")]
545        ReassignOwnedStmt(super::ReassignOwnedStmt),
546        #[prost(message, tag = "254")]
547        AlterTsdictionaryStmt(super::AlterTsDictionaryStmt),
548        #[prost(message, tag = "255")]
549        AlterTsconfigurationStmt(super::AlterTsConfigurationStmt),
550        #[prost(message, tag = "256")]
551        PublicationTable(::prost::alloc::boxed::Box<super::PublicationTable>),
552        #[prost(message, tag = "257")]
553        PublicationObjSpec(::prost::alloc::boxed::Box<super::PublicationObjSpec>),
554        #[prost(message, tag = "258")]
555        CreatePublicationStmt(super::CreatePublicationStmt),
556        #[prost(message, tag = "259")]
557        AlterPublicationStmt(super::AlterPublicationStmt),
558        #[prost(message, tag = "260")]
559        CreateSubscriptionStmt(super::CreateSubscriptionStmt),
560        #[prost(message, tag = "261")]
561        AlterSubscriptionStmt(super::AlterSubscriptionStmt),
562        #[prost(message, tag = "262")]
563        DropSubscriptionStmt(super::DropSubscriptionStmt),
564        #[prost(message, tag = "263")]
565        Integer(super::Integer),
566        #[prost(message, tag = "264")]
567        Float(super::Float),
568        #[prost(message, tag = "265")]
569        Boolean(super::Boolean),
570        #[prost(message, tag = "266")]
571        String(super::String),
572        #[prost(message, tag = "267")]
573        BitString(super::BitString),
574        #[prost(message, tag = "268")]
575        List(super::List),
576        #[prost(message, tag = "269")]
577        IntList(super::IntList),
578        #[prost(message, tag = "270")]
579        OidList(super::OidList),
580        #[prost(message, tag = "271")]
581        AConst(super::AConst),
582    }
583}
584#[derive(serde::Serialize)]
585#[derive(Clone, Copy, PartialEq, ::prost::Message)]
586pub struct Integer {
587    /// machine integer
588    #[prost(int32, tag = "1")]
589    pub ival: i32,
590}
591#[derive(serde::Serialize)]
592#[derive(Clone, PartialEq, ::prost::Message)]
593pub struct Float {
594    /// string
595    #[prost(string, tag = "1")]
596    pub fval: ::prost::alloc::string::String,
597}
598#[derive(serde::Serialize)]
599#[derive(Clone, Copy, PartialEq, ::prost::Message)]
600pub struct Boolean {
601    #[prost(bool, tag = "1")]
602    pub boolval: bool,
603}
604#[derive(serde::Serialize)]
605#[derive(Clone, PartialEq, ::prost::Message)]
606pub struct String {
607    /// string
608    #[prost(string, tag = "1")]
609    pub sval: ::prost::alloc::string::String,
610}
611#[derive(serde::Serialize)]
612#[derive(Clone, PartialEq, ::prost::Message)]
613pub struct BitString {
614    /// string
615    #[prost(string, tag = "1")]
616    pub bsval: ::prost::alloc::string::String,
617}
618#[derive(serde::Serialize)]
619#[derive(Clone, PartialEq, ::prost::Message)]
620pub struct List {
621    #[prost(message, repeated, tag = "1")]
622    pub items: ::prost::alloc::vec::Vec<Node>,
623}
624#[derive(serde::Serialize)]
625#[derive(Clone, PartialEq, ::prost::Message)]
626pub struct OidList {
627    #[prost(message, repeated, tag = "1")]
628    pub items: ::prost::alloc::vec::Vec<Node>,
629}
630#[derive(serde::Serialize)]
631#[derive(Clone, PartialEq, ::prost::Message)]
632pub struct IntList {
633    #[prost(message, repeated, tag = "1")]
634    pub items: ::prost::alloc::vec::Vec<Node>,
635}
636#[derive(serde::Serialize)]
637#[derive(Clone, PartialEq, ::prost::Message)]
638pub struct AConst {
639    #[prost(bool, tag = "10")]
640    pub isnull: bool,
641    #[prost(int32, tag = "11")]
642    pub location: i32,
643    #[prost(oneof = "a_const::Val", tags = "1, 2, 3, 4, 5")]
644    pub val: ::core::option::Option<a_const::Val>,
645}
646/// Nested message and enum types in `A_Const`.
647pub mod a_const {
648    #[derive(serde::Serialize)]
649    #[derive(Clone, PartialEq, ::prost::Oneof)]
650    pub enum Val {
651        #[prost(message, tag = "1")]
652        Ival(super::Integer),
653        #[prost(message, tag = "2")]
654        Fval(super::Float),
655        #[prost(message, tag = "3")]
656        Boolval(super::Boolean),
657        #[prost(message, tag = "4")]
658        Sval(super::String),
659        #[prost(message, tag = "5")]
660        Bsval(super::BitString),
661    }
662}
663#[derive(serde::Serialize)]
664#[derive(Clone, PartialEq, ::prost::Message)]
665pub struct Alias {
666    #[prost(string, tag = "1")]
667    pub aliasname: ::prost::alloc::string::String,
668    #[prost(message, repeated, tag = "2")]
669    pub colnames: ::prost::alloc::vec::Vec<Node>,
670}
671#[derive(serde::Serialize)]
672#[derive(Clone, PartialEq, ::prost::Message)]
673pub struct RangeVar {
674    #[prost(string, tag = "1")]
675    pub catalogname: ::prost::alloc::string::String,
676    #[prost(string, tag = "2")]
677    pub schemaname: ::prost::alloc::string::String,
678    #[prost(string, tag = "3")]
679    pub relname: ::prost::alloc::string::String,
680    #[prost(bool, tag = "4")]
681    pub inh: bool,
682    #[prost(string, tag = "5")]
683    pub relpersistence: ::prost::alloc::string::String,
684    #[prost(message, optional, tag = "6")]
685    pub alias: ::core::option::Option<Alias>,
686    #[prost(int32, tag = "7")]
687    pub location: i32,
688}
689#[derive(serde::Serialize)]
690#[derive(Clone, PartialEq, ::prost::Message)]
691pub struct TableFunc {
692    #[prost(enumeration = "TableFuncType", tag = "1")]
693    pub functype: i32,
694    #[prost(message, repeated, tag = "2")]
695    pub ns_uris: ::prost::alloc::vec::Vec<Node>,
696    #[prost(message, repeated, tag = "3")]
697    pub ns_names: ::prost::alloc::vec::Vec<Node>,
698    #[prost(message, optional, boxed, tag = "4")]
699    pub docexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
700    #[prost(message, optional, boxed, tag = "5")]
701    pub rowexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
702    #[prost(message, repeated, tag = "6")]
703    pub colnames: ::prost::alloc::vec::Vec<Node>,
704    #[prost(message, repeated, tag = "7")]
705    pub coltypes: ::prost::alloc::vec::Vec<Node>,
706    #[prost(message, repeated, tag = "8")]
707    pub coltypmods: ::prost::alloc::vec::Vec<Node>,
708    #[prost(message, repeated, tag = "9")]
709    pub colcollations: ::prost::alloc::vec::Vec<Node>,
710    #[prost(message, repeated, tag = "10")]
711    pub colexprs: ::prost::alloc::vec::Vec<Node>,
712    #[prost(message, repeated, tag = "11")]
713    pub coldefexprs: ::prost::alloc::vec::Vec<Node>,
714    #[prost(message, repeated, tag = "12")]
715    pub colvalexprs: ::prost::alloc::vec::Vec<Node>,
716    #[prost(message, repeated, tag = "13")]
717    pub passingvalexprs: ::prost::alloc::vec::Vec<Node>,
718    #[prost(uint64, repeated, tag = "14")]
719    pub notnulls: ::prost::alloc::vec::Vec<u64>,
720    #[prost(message, optional, boxed, tag = "15")]
721    pub plan: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
722    #[prost(int32, tag = "16")]
723    pub ordinalitycol: i32,
724    #[prost(int32, tag = "17")]
725    pub location: i32,
726}
727#[derive(serde::Serialize)]
728#[derive(Clone, PartialEq, ::prost::Message)]
729pub struct IntoClause {
730    #[prost(message, optional, tag = "1")]
731    pub rel: ::core::option::Option<RangeVar>,
732    #[prost(message, repeated, tag = "2")]
733    pub col_names: ::prost::alloc::vec::Vec<Node>,
734    #[prost(string, tag = "3")]
735    pub access_method: ::prost::alloc::string::String,
736    #[prost(message, repeated, tag = "4")]
737    pub options: ::prost::alloc::vec::Vec<Node>,
738    #[prost(enumeration = "OnCommitAction", tag = "5")]
739    pub on_commit: i32,
740    #[prost(string, tag = "6")]
741    pub table_space_name: ::prost::alloc::string::String,
742    #[prost(message, optional, boxed, tag = "7")]
743    pub view_query: ::core::option::Option<::prost::alloc::boxed::Box<Query>>,
744    #[prost(bool, tag = "8")]
745    pub skip_data: bool,
746}
747#[derive(serde::Serialize)]
748#[derive(Clone, PartialEq, ::prost::Message)]
749pub struct Var {
750    #[prost(message, optional, boxed, tag = "1")]
751    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
752    #[prost(int32, tag = "2")]
753    pub varno: i32,
754    #[prost(int32, tag = "3")]
755    pub varattno: i32,
756    #[prost(uint32, tag = "4")]
757    pub vartype: u32,
758    #[prost(int32, tag = "5")]
759    pub vartypmod: i32,
760    #[prost(uint32, tag = "6")]
761    pub varcollid: u32,
762    #[prost(uint64, repeated, tag = "7")]
763    pub varnullingrels: ::prost::alloc::vec::Vec<u64>,
764    #[prost(uint32, tag = "8")]
765    pub varlevelsup: u32,
766    #[prost(enumeration = "VarReturningType", tag = "9")]
767    pub varreturningtype: i32,
768    #[prost(int32, tag = "10")]
769    pub location: i32,
770}
771#[derive(serde::Serialize)]
772#[derive(Clone, PartialEq, ::prost::Message)]
773pub struct Param {
774    #[prost(message, optional, boxed, tag = "1")]
775    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
776    #[prost(enumeration = "ParamKind", tag = "2")]
777    pub paramkind: i32,
778    #[prost(int32, tag = "3")]
779    pub paramid: i32,
780    #[prost(uint32, tag = "4")]
781    pub paramtype: u32,
782    #[prost(int32, tag = "5")]
783    pub paramtypmod: i32,
784    #[prost(uint32, tag = "6")]
785    pub paramcollid: u32,
786    #[prost(int32, tag = "7")]
787    pub location: i32,
788}
789#[derive(serde::Serialize)]
790#[derive(Clone, PartialEq, ::prost::Message)]
791pub struct Aggref {
792    #[prost(message, optional, boxed, tag = "1")]
793    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
794    #[prost(uint32, tag = "2")]
795    pub aggfnoid: u32,
796    #[prost(uint32, tag = "3")]
797    pub aggtype: u32,
798    #[prost(uint32, tag = "4")]
799    pub aggcollid: u32,
800    #[prost(uint32, tag = "5")]
801    pub inputcollid: u32,
802    #[prost(message, repeated, tag = "6")]
803    pub aggargtypes: ::prost::alloc::vec::Vec<Node>,
804    #[prost(message, repeated, tag = "7")]
805    pub aggdirectargs: ::prost::alloc::vec::Vec<Node>,
806    #[prost(message, repeated, tag = "8")]
807    pub args: ::prost::alloc::vec::Vec<Node>,
808    #[prost(message, repeated, tag = "9")]
809    pub aggorder: ::prost::alloc::vec::Vec<Node>,
810    #[prost(message, repeated, tag = "10")]
811    pub aggdistinct: ::prost::alloc::vec::Vec<Node>,
812    #[prost(message, optional, boxed, tag = "11")]
813    pub aggfilter: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
814    #[prost(bool, tag = "12")]
815    pub aggstar: bool,
816    #[prost(bool, tag = "13")]
817    pub aggvariadic: bool,
818    #[prost(string, tag = "14")]
819    pub aggkind: ::prost::alloc::string::String,
820    #[prost(uint32, tag = "15")]
821    pub agglevelsup: u32,
822    #[prost(enumeration = "AggSplit", tag = "16")]
823    pub aggsplit: i32,
824    #[prost(int32, tag = "17")]
825    pub aggno: i32,
826    #[prost(int32, tag = "18")]
827    pub aggtransno: i32,
828    #[prost(int32, tag = "19")]
829    pub location: i32,
830}
831#[derive(serde::Serialize)]
832#[derive(Clone, PartialEq, ::prost::Message)]
833pub struct GroupingFunc {
834    #[prost(message, optional, boxed, tag = "1")]
835    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
836    #[prost(message, repeated, tag = "2")]
837    pub args: ::prost::alloc::vec::Vec<Node>,
838    #[prost(message, repeated, tag = "3")]
839    pub refs: ::prost::alloc::vec::Vec<Node>,
840    #[prost(uint32, tag = "4")]
841    pub agglevelsup: u32,
842    #[prost(int32, tag = "5")]
843    pub location: i32,
844}
845#[derive(serde::Serialize)]
846#[derive(Clone, PartialEq, ::prost::Message)]
847pub struct WindowFunc {
848    #[prost(message, optional, boxed, tag = "1")]
849    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
850    #[prost(uint32, tag = "2")]
851    pub winfnoid: u32,
852    #[prost(uint32, tag = "3")]
853    pub wintype: u32,
854    #[prost(uint32, tag = "4")]
855    pub wincollid: u32,
856    #[prost(uint32, tag = "5")]
857    pub inputcollid: u32,
858    #[prost(message, repeated, tag = "6")]
859    pub args: ::prost::alloc::vec::Vec<Node>,
860    #[prost(message, optional, boxed, tag = "7")]
861    pub aggfilter: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
862    #[prost(message, repeated, tag = "8")]
863    pub run_condition: ::prost::alloc::vec::Vec<Node>,
864    #[prost(uint32, tag = "9")]
865    pub winref: u32,
866    #[prost(bool, tag = "10")]
867    pub winstar: bool,
868    #[prost(bool, tag = "11")]
869    pub winagg: bool,
870    #[prost(int32, tag = "12")]
871    pub location: i32,
872}
873#[derive(serde::Serialize)]
874#[derive(Clone, PartialEq, ::prost::Message)]
875pub struct WindowFuncRunCondition {
876    #[prost(message, optional, boxed, tag = "1")]
877    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
878    #[prost(uint32, tag = "2")]
879    pub opno: u32,
880    #[prost(uint32, tag = "3")]
881    pub inputcollid: u32,
882    #[prost(bool, tag = "4")]
883    pub wfunc_left: bool,
884    #[prost(message, optional, boxed, tag = "5")]
885    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
886}
887#[derive(serde::Serialize)]
888#[derive(Clone, PartialEq, ::prost::Message)]
889pub struct MergeSupportFunc {
890    #[prost(message, optional, boxed, tag = "1")]
891    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
892    #[prost(uint32, tag = "2")]
893    pub msftype: u32,
894    #[prost(uint32, tag = "3")]
895    pub msfcollid: u32,
896    #[prost(int32, tag = "4")]
897    pub location: i32,
898}
899#[derive(serde::Serialize)]
900#[derive(Clone, PartialEq, ::prost::Message)]
901pub struct SubscriptingRef {
902    #[prost(message, optional, boxed, tag = "1")]
903    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
904    #[prost(uint32, tag = "2")]
905    pub refcontainertype: u32,
906    #[prost(uint32, tag = "3")]
907    pub refelemtype: u32,
908    #[prost(uint32, tag = "4")]
909    pub refrestype: u32,
910    #[prost(int32, tag = "5")]
911    pub reftypmod: i32,
912    #[prost(uint32, tag = "6")]
913    pub refcollid: u32,
914    #[prost(message, repeated, tag = "7")]
915    pub refupperindexpr: ::prost::alloc::vec::Vec<Node>,
916    #[prost(message, repeated, tag = "8")]
917    pub reflowerindexpr: ::prost::alloc::vec::Vec<Node>,
918    #[prost(message, optional, boxed, tag = "9")]
919    pub refexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
920    #[prost(message, optional, boxed, tag = "10")]
921    pub refassgnexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
922}
923#[derive(serde::Serialize)]
924#[derive(Clone, PartialEq, ::prost::Message)]
925pub struct FuncExpr {
926    #[prost(message, optional, boxed, tag = "1")]
927    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
928    #[prost(uint32, tag = "2")]
929    pub funcid: u32,
930    #[prost(uint32, tag = "3")]
931    pub funcresulttype: u32,
932    #[prost(bool, tag = "4")]
933    pub funcretset: bool,
934    #[prost(bool, tag = "5")]
935    pub funcvariadic: bool,
936    #[prost(enumeration = "CoercionForm", tag = "6")]
937    pub funcformat: i32,
938    #[prost(uint32, tag = "7")]
939    pub funccollid: u32,
940    #[prost(uint32, tag = "8")]
941    pub inputcollid: u32,
942    #[prost(message, repeated, tag = "9")]
943    pub args: ::prost::alloc::vec::Vec<Node>,
944    #[prost(int32, tag = "10")]
945    pub location: i32,
946}
947#[derive(serde::Serialize)]
948#[derive(Clone, PartialEq, ::prost::Message)]
949pub struct NamedArgExpr {
950    #[prost(message, optional, boxed, tag = "1")]
951    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
952    #[prost(message, optional, boxed, tag = "2")]
953    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
954    #[prost(string, tag = "3")]
955    pub name: ::prost::alloc::string::String,
956    #[prost(int32, tag = "4")]
957    pub argnumber: i32,
958    #[prost(int32, tag = "5")]
959    pub location: i32,
960}
961#[derive(serde::Serialize)]
962#[derive(Clone, PartialEq, ::prost::Message)]
963pub struct OpExpr {
964    #[prost(message, optional, boxed, tag = "1")]
965    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
966    #[prost(uint32, tag = "2")]
967    pub opno: u32,
968    #[prost(uint32, tag = "3")]
969    pub opresulttype: u32,
970    #[prost(bool, tag = "4")]
971    pub opretset: bool,
972    #[prost(uint32, tag = "5")]
973    pub opcollid: u32,
974    #[prost(uint32, tag = "6")]
975    pub inputcollid: u32,
976    #[prost(message, repeated, tag = "7")]
977    pub args: ::prost::alloc::vec::Vec<Node>,
978    #[prost(int32, tag = "8")]
979    pub location: i32,
980}
981#[derive(serde::Serialize)]
982#[derive(Clone, PartialEq, ::prost::Message)]
983pub struct DistinctExpr {
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(uint32, tag = "3")]
989    pub opresulttype: u32,
990    #[prost(bool, tag = "4")]
991    pub opretset: bool,
992    #[prost(uint32, tag = "5")]
993    pub opcollid: u32,
994    #[prost(uint32, tag = "6")]
995    pub inputcollid: u32,
996    #[prost(message, repeated, tag = "7")]
997    pub args: ::prost::alloc::vec::Vec<Node>,
998    #[prost(int32, tag = "8")]
999    pub location: i32,
1000}
1001#[derive(serde::Serialize)]
1002#[derive(Clone, PartialEq, ::prost::Message)]
1003pub struct NullIfExpr {
1004    #[prost(message, optional, boxed, tag = "1")]
1005    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1006    #[prost(uint32, tag = "2")]
1007    pub opno: u32,
1008    #[prost(uint32, tag = "3")]
1009    pub opresulttype: u32,
1010    #[prost(bool, tag = "4")]
1011    pub opretset: bool,
1012    #[prost(uint32, tag = "5")]
1013    pub opcollid: u32,
1014    #[prost(uint32, tag = "6")]
1015    pub inputcollid: u32,
1016    #[prost(message, repeated, tag = "7")]
1017    pub args: ::prost::alloc::vec::Vec<Node>,
1018    #[prost(int32, tag = "8")]
1019    pub location: i32,
1020}
1021#[derive(serde::Serialize)]
1022#[derive(Clone, PartialEq, ::prost::Message)]
1023pub struct ScalarArrayOpExpr {
1024    #[prost(message, optional, boxed, tag = "1")]
1025    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1026    #[prost(uint32, tag = "2")]
1027    pub opno: u32,
1028    #[prost(bool, tag = "3")]
1029    pub use_or: bool,
1030    #[prost(uint32, tag = "4")]
1031    pub inputcollid: u32,
1032    #[prost(message, repeated, tag = "5")]
1033    pub args: ::prost::alloc::vec::Vec<Node>,
1034    #[prost(int32, tag = "6")]
1035    pub location: i32,
1036}
1037#[derive(serde::Serialize)]
1038#[derive(Clone, PartialEq, ::prost::Message)]
1039pub struct BoolExpr {
1040    #[prost(message, optional, boxed, tag = "1")]
1041    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1042    #[prost(enumeration = "BoolExprType", tag = "2")]
1043    pub boolop: i32,
1044    #[prost(message, repeated, tag = "3")]
1045    pub args: ::prost::alloc::vec::Vec<Node>,
1046    #[prost(int32, tag = "4")]
1047    pub location: i32,
1048}
1049#[derive(serde::Serialize)]
1050#[derive(Clone, PartialEq, ::prost::Message)]
1051pub struct SubLink {
1052    #[prost(message, optional, boxed, tag = "1")]
1053    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1054    #[prost(enumeration = "SubLinkType", tag = "2")]
1055    pub sub_link_type: i32,
1056    #[prost(int32, tag = "3")]
1057    pub sub_link_id: i32,
1058    #[prost(message, optional, boxed, tag = "4")]
1059    pub testexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1060    #[prost(message, repeated, tag = "5")]
1061    pub oper_name: ::prost::alloc::vec::Vec<Node>,
1062    #[prost(message, optional, boxed, tag = "6")]
1063    pub subselect: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1064    #[prost(int32, tag = "7")]
1065    pub location: i32,
1066}
1067#[derive(serde::Serialize)]
1068#[derive(Clone, PartialEq, ::prost::Message)]
1069pub struct SubPlan {
1070    #[prost(message, optional, boxed, tag = "1")]
1071    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1072    #[prost(enumeration = "SubLinkType", tag = "2")]
1073    pub sub_link_type: i32,
1074    #[prost(message, optional, boxed, tag = "3")]
1075    pub testexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1076    #[prost(message, repeated, tag = "4")]
1077    pub param_ids: ::prost::alloc::vec::Vec<Node>,
1078    #[prost(int32, tag = "5")]
1079    pub plan_id: i32,
1080    #[prost(string, tag = "6")]
1081    pub plan_name: ::prost::alloc::string::String,
1082    #[prost(uint32, tag = "7")]
1083    pub first_col_type: u32,
1084    #[prost(int32, tag = "8")]
1085    pub first_col_typmod: i32,
1086    #[prost(uint32, tag = "9")]
1087    pub first_col_collation: u32,
1088    #[prost(bool, tag = "10")]
1089    pub use_hash_table: bool,
1090    #[prost(bool, tag = "11")]
1091    pub unknown_eq_false: bool,
1092    #[prost(bool, tag = "12")]
1093    pub parallel_safe: bool,
1094    #[prost(message, repeated, tag = "13")]
1095    pub set_param: ::prost::alloc::vec::Vec<Node>,
1096    #[prost(message, repeated, tag = "14")]
1097    pub par_param: ::prost::alloc::vec::Vec<Node>,
1098    #[prost(message, repeated, tag = "15")]
1099    pub args: ::prost::alloc::vec::Vec<Node>,
1100    #[prost(double, tag = "16")]
1101    pub startup_cost: f64,
1102    #[prost(double, tag = "17")]
1103    pub per_call_cost: f64,
1104}
1105#[derive(serde::Serialize)]
1106#[derive(Clone, PartialEq, ::prost::Message)]
1107pub struct AlternativeSubPlan {
1108    #[prost(message, optional, boxed, tag = "1")]
1109    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1110    #[prost(message, repeated, tag = "2")]
1111    pub subplans: ::prost::alloc::vec::Vec<Node>,
1112}
1113#[derive(serde::Serialize)]
1114#[derive(Clone, PartialEq, ::prost::Message)]
1115pub struct FieldSelect {
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(int32, tag = "3")]
1121    pub fieldnum: i32,
1122    #[prost(uint32, tag = "4")]
1123    pub resulttype: u32,
1124    #[prost(int32, tag = "5")]
1125    pub resulttypmod: i32,
1126    #[prost(uint32, tag = "6")]
1127    pub resultcollid: u32,
1128}
1129#[derive(serde::Serialize)]
1130#[derive(Clone, PartialEq, ::prost::Message)]
1131pub struct FieldStore {
1132    #[prost(message, optional, boxed, tag = "1")]
1133    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1134    #[prost(message, optional, boxed, tag = "2")]
1135    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1136    #[prost(message, repeated, tag = "3")]
1137    pub newvals: ::prost::alloc::vec::Vec<Node>,
1138    #[prost(message, repeated, tag = "4")]
1139    pub fieldnums: ::prost::alloc::vec::Vec<Node>,
1140    #[prost(uint32, tag = "5")]
1141    pub resulttype: u32,
1142}
1143#[derive(serde::Serialize)]
1144#[derive(Clone, PartialEq, ::prost::Message)]
1145pub struct RelabelType {
1146    #[prost(message, optional, boxed, tag = "1")]
1147    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1148    #[prost(message, optional, boxed, tag = "2")]
1149    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1150    #[prost(uint32, tag = "3")]
1151    pub resulttype: u32,
1152    #[prost(int32, tag = "4")]
1153    pub resulttypmod: i32,
1154    #[prost(uint32, tag = "5")]
1155    pub resultcollid: u32,
1156    #[prost(enumeration = "CoercionForm", tag = "6")]
1157    pub relabelformat: i32,
1158    #[prost(int32, tag = "7")]
1159    pub location: i32,
1160}
1161#[derive(serde::Serialize)]
1162#[derive(Clone, PartialEq, ::prost::Message)]
1163pub struct CoerceViaIo {
1164    #[prost(message, optional, boxed, tag = "1")]
1165    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1166    #[prost(message, optional, boxed, tag = "2")]
1167    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1168    #[prost(uint32, tag = "3")]
1169    pub resulttype: u32,
1170    #[prost(uint32, tag = "4")]
1171    pub resultcollid: u32,
1172    #[prost(enumeration = "CoercionForm", tag = "5")]
1173    pub coerceformat: i32,
1174    #[prost(int32, tag = "6")]
1175    pub location: i32,
1176}
1177#[derive(serde::Serialize)]
1178#[derive(Clone, PartialEq, ::prost::Message)]
1179pub struct ArrayCoerceExpr {
1180    #[prost(message, optional, boxed, tag = "1")]
1181    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1182    #[prost(message, optional, boxed, tag = "2")]
1183    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1184    #[prost(message, optional, boxed, tag = "3")]
1185    pub elemexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1186    #[prost(uint32, tag = "4")]
1187    pub resulttype: u32,
1188    #[prost(int32, tag = "5")]
1189    pub resulttypmod: i32,
1190    #[prost(uint32, tag = "6")]
1191    pub resultcollid: u32,
1192    #[prost(enumeration = "CoercionForm", tag = "7")]
1193    pub coerceformat: i32,
1194    #[prost(int32, tag = "8")]
1195    pub location: i32,
1196}
1197#[derive(serde::Serialize)]
1198#[derive(Clone, PartialEq, ::prost::Message)]
1199pub struct ConvertRowtypeExpr {
1200    #[prost(message, optional, boxed, tag = "1")]
1201    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1202    #[prost(message, optional, boxed, tag = "2")]
1203    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1204    #[prost(uint32, tag = "3")]
1205    pub resulttype: u32,
1206    #[prost(enumeration = "CoercionForm", tag = "4")]
1207    pub convertformat: i32,
1208    #[prost(int32, tag = "5")]
1209    pub location: i32,
1210}
1211#[derive(serde::Serialize)]
1212#[derive(Clone, PartialEq, ::prost::Message)]
1213pub struct CollateExpr {
1214    #[prost(message, optional, boxed, tag = "1")]
1215    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1216    #[prost(message, optional, boxed, tag = "2")]
1217    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1218    #[prost(uint32, tag = "3")]
1219    pub coll_oid: u32,
1220    #[prost(int32, tag = "4")]
1221    pub location: i32,
1222}
1223#[derive(serde::Serialize)]
1224#[derive(Clone, PartialEq, ::prost::Message)]
1225pub struct CaseExpr {
1226    #[prost(message, optional, boxed, tag = "1")]
1227    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1228    #[prost(uint32, tag = "2")]
1229    pub casetype: u32,
1230    #[prost(uint32, tag = "3")]
1231    pub casecollid: u32,
1232    #[prost(message, optional, boxed, tag = "4")]
1233    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1234    #[prost(message, repeated, tag = "5")]
1235    pub args: ::prost::alloc::vec::Vec<Node>,
1236    #[prost(message, optional, boxed, tag = "6")]
1237    pub defresult: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1238    #[prost(int32, tag = "7")]
1239    pub location: i32,
1240}
1241#[derive(serde::Serialize)]
1242#[derive(Clone, PartialEq, ::prost::Message)]
1243pub struct CaseWhen {
1244    #[prost(message, optional, boxed, tag = "1")]
1245    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1246    #[prost(message, optional, boxed, tag = "2")]
1247    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1248    #[prost(message, optional, boxed, tag = "3")]
1249    pub result: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1250    #[prost(int32, tag = "4")]
1251    pub location: i32,
1252}
1253#[derive(serde::Serialize)]
1254#[derive(Clone, PartialEq, ::prost::Message)]
1255pub struct CaseTestExpr {
1256    #[prost(message, optional, boxed, tag = "1")]
1257    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1258    #[prost(uint32, tag = "2")]
1259    pub type_id: u32,
1260    #[prost(int32, tag = "3")]
1261    pub type_mod: i32,
1262    #[prost(uint32, tag = "4")]
1263    pub collation: u32,
1264}
1265#[derive(serde::Serialize)]
1266#[derive(Clone, PartialEq, ::prost::Message)]
1267pub struct ArrayExpr {
1268    #[prost(message, optional, boxed, tag = "1")]
1269    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1270    #[prost(uint32, tag = "2")]
1271    pub array_typeid: u32,
1272    #[prost(uint32, tag = "3")]
1273    pub array_collid: u32,
1274    #[prost(uint32, tag = "4")]
1275    pub element_typeid: u32,
1276    #[prost(message, repeated, tag = "5")]
1277    pub elements: ::prost::alloc::vec::Vec<Node>,
1278    #[prost(bool, tag = "6")]
1279    pub multidims: bool,
1280    #[prost(int32, tag = "7")]
1281    pub list_start: i32,
1282    #[prost(int32, tag = "8")]
1283    pub list_end: i32,
1284    #[prost(int32, tag = "9")]
1285    pub location: i32,
1286}
1287#[derive(serde::Serialize)]
1288#[derive(Clone, PartialEq, ::prost::Message)]
1289pub struct RowExpr {
1290    #[prost(message, optional, boxed, tag = "1")]
1291    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1292    #[prost(message, repeated, tag = "2")]
1293    pub args: ::prost::alloc::vec::Vec<Node>,
1294    #[prost(uint32, tag = "3")]
1295    pub row_typeid: u32,
1296    #[prost(enumeration = "CoercionForm", tag = "4")]
1297    pub row_format: i32,
1298    #[prost(message, repeated, tag = "5")]
1299    pub colnames: ::prost::alloc::vec::Vec<Node>,
1300    #[prost(int32, tag = "6")]
1301    pub location: i32,
1302}
1303#[derive(serde::Serialize)]
1304#[derive(Clone, PartialEq, ::prost::Message)]
1305pub struct RowCompareExpr {
1306    #[prost(message, optional, boxed, tag = "1")]
1307    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1308    #[prost(enumeration = "CompareType", tag = "2")]
1309    pub cmptype: i32,
1310    #[prost(message, repeated, tag = "3")]
1311    pub opnos: ::prost::alloc::vec::Vec<Node>,
1312    #[prost(message, repeated, tag = "4")]
1313    pub opfamilies: ::prost::alloc::vec::Vec<Node>,
1314    #[prost(message, repeated, tag = "5")]
1315    pub inputcollids: ::prost::alloc::vec::Vec<Node>,
1316    #[prost(message, repeated, tag = "6")]
1317    pub largs: ::prost::alloc::vec::Vec<Node>,
1318    #[prost(message, repeated, tag = "7")]
1319    pub rargs: ::prost::alloc::vec::Vec<Node>,
1320}
1321#[derive(serde::Serialize)]
1322#[derive(Clone, PartialEq, ::prost::Message)]
1323pub struct CoalesceExpr {
1324    #[prost(message, optional, boxed, tag = "1")]
1325    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1326    #[prost(uint32, tag = "2")]
1327    pub coalescetype: u32,
1328    #[prost(uint32, tag = "3")]
1329    pub coalescecollid: u32,
1330    #[prost(message, repeated, tag = "4")]
1331    pub args: ::prost::alloc::vec::Vec<Node>,
1332    #[prost(int32, tag = "5")]
1333    pub location: i32,
1334}
1335#[derive(serde::Serialize)]
1336#[derive(Clone, PartialEq, ::prost::Message)]
1337pub struct MinMaxExpr {
1338    #[prost(message, optional, boxed, tag = "1")]
1339    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1340    #[prost(uint32, tag = "2")]
1341    pub minmaxtype: u32,
1342    #[prost(uint32, tag = "3")]
1343    pub minmaxcollid: u32,
1344    #[prost(uint32, tag = "4")]
1345    pub inputcollid: u32,
1346    #[prost(enumeration = "MinMaxOp", tag = "5")]
1347    pub op: i32,
1348    #[prost(message, repeated, tag = "6")]
1349    pub args: ::prost::alloc::vec::Vec<Node>,
1350    #[prost(int32, tag = "7")]
1351    pub location: i32,
1352}
1353#[derive(serde::Serialize)]
1354#[derive(Clone, PartialEq, ::prost::Message)]
1355pub struct SqlValueFunction {
1356    #[prost(message, optional, boxed, tag = "1")]
1357    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1358    #[prost(enumeration = "SqlValueFunctionOp", tag = "2")]
1359    pub op: i32,
1360    #[prost(uint32, tag = "3")]
1361    pub r#type: u32,
1362    #[prost(int32, tag = "4")]
1363    pub typmod: i32,
1364    #[prost(int32, tag = "5")]
1365    pub location: i32,
1366}
1367#[derive(serde::Serialize)]
1368#[derive(Clone, PartialEq, ::prost::Message)]
1369pub struct XmlExpr {
1370    #[prost(message, optional, boxed, tag = "1")]
1371    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1372    #[prost(enumeration = "XmlExprOp", tag = "2")]
1373    pub op: i32,
1374    #[prost(string, tag = "3")]
1375    pub name: ::prost::alloc::string::String,
1376    #[prost(message, repeated, tag = "4")]
1377    pub named_args: ::prost::alloc::vec::Vec<Node>,
1378    #[prost(message, repeated, tag = "5")]
1379    pub arg_names: ::prost::alloc::vec::Vec<Node>,
1380    #[prost(message, repeated, tag = "6")]
1381    pub args: ::prost::alloc::vec::Vec<Node>,
1382    #[prost(enumeration = "XmlOptionType", tag = "7")]
1383    pub xmloption: i32,
1384    #[prost(bool, tag = "8")]
1385    pub indent: bool,
1386    #[prost(uint32, tag = "9")]
1387    pub r#type: u32,
1388    #[prost(int32, tag = "10")]
1389    pub typmod: i32,
1390    #[prost(int32, tag = "11")]
1391    pub location: i32,
1392}
1393#[derive(serde::Serialize)]
1394#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1395pub struct JsonFormat {
1396    #[prost(enumeration = "JsonFormatType", tag = "1")]
1397    pub format_type: i32,
1398    #[prost(enumeration = "JsonEncoding", tag = "2")]
1399    pub encoding: i32,
1400    #[prost(int32, tag = "3")]
1401    pub location: i32,
1402}
1403#[derive(serde::Serialize)]
1404#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1405pub struct JsonReturning {
1406    #[prost(message, optional, tag = "1")]
1407    pub format: ::core::option::Option<JsonFormat>,
1408    #[prost(uint32, tag = "2")]
1409    pub typid: u32,
1410    #[prost(int32, tag = "3")]
1411    pub typmod: i32,
1412}
1413#[derive(serde::Serialize)]
1414#[derive(Clone, PartialEq, ::prost::Message)]
1415pub struct JsonValueExpr {
1416    #[prost(message, optional, boxed, tag = "1")]
1417    pub raw_expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1418    #[prost(message, optional, boxed, tag = "2")]
1419    pub formatted_expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1420    #[prost(message, optional, tag = "3")]
1421    pub format: ::core::option::Option<JsonFormat>,
1422}
1423#[derive(serde::Serialize)]
1424#[derive(Clone, PartialEq, ::prost::Message)]
1425pub struct JsonConstructorExpr {
1426    #[prost(message, optional, boxed, tag = "1")]
1427    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1428    #[prost(enumeration = "JsonConstructorType", tag = "2")]
1429    pub r#type: i32,
1430    #[prost(message, repeated, tag = "3")]
1431    pub args: ::prost::alloc::vec::Vec<Node>,
1432    #[prost(message, optional, boxed, tag = "4")]
1433    pub func: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1434    #[prost(message, optional, boxed, tag = "5")]
1435    pub coercion: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1436    #[prost(message, optional, tag = "6")]
1437    pub returning: ::core::option::Option<JsonReturning>,
1438    #[prost(bool, tag = "7")]
1439    pub absent_on_null: bool,
1440    #[prost(bool, tag = "8")]
1441    pub unique: bool,
1442    #[prost(int32, tag = "9")]
1443    pub location: i32,
1444}
1445#[derive(serde::Serialize)]
1446#[derive(Clone, PartialEq, ::prost::Message)]
1447pub struct JsonIsPredicate {
1448    #[prost(message, optional, boxed, tag = "1")]
1449    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1450    #[prost(message, optional, tag = "2")]
1451    pub format: ::core::option::Option<JsonFormat>,
1452    #[prost(enumeration = "JsonValueType", tag = "3")]
1453    pub item_type: i32,
1454    #[prost(bool, tag = "4")]
1455    pub unique_keys: bool,
1456    #[prost(int32, tag = "5")]
1457    pub location: i32,
1458}
1459#[derive(serde::Serialize)]
1460#[derive(Clone, PartialEq, ::prost::Message)]
1461pub struct JsonBehavior {
1462    #[prost(enumeration = "JsonBehaviorType", tag = "1")]
1463    pub btype: i32,
1464    #[prost(message, optional, boxed, tag = "2")]
1465    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1466    #[prost(bool, tag = "3")]
1467    pub coerce: bool,
1468    #[prost(int32, tag = "4")]
1469    pub location: i32,
1470}
1471#[derive(serde::Serialize)]
1472#[derive(Clone, PartialEq, ::prost::Message)]
1473pub struct JsonExpr {
1474    #[prost(message, optional, boxed, tag = "1")]
1475    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1476    #[prost(enumeration = "JsonExprOp", tag = "2")]
1477    pub op: i32,
1478    #[prost(string, tag = "3")]
1479    pub column_name: ::prost::alloc::string::String,
1480    #[prost(message, optional, boxed, tag = "4")]
1481    pub formatted_expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1482    #[prost(message, optional, tag = "5")]
1483    pub format: ::core::option::Option<JsonFormat>,
1484    #[prost(message, optional, boxed, tag = "6")]
1485    pub path_spec: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1486    #[prost(message, optional, tag = "7")]
1487    pub returning: ::core::option::Option<JsonReturning>,
1488    #[prost(message, repeated, tag = "8")]
1489    pub passing_names: ::prost::alloc::vec::Vec<Node>,
1490    #[prost(message, repeated, tag = "9")]
1491    pub passing_values: ::prost::alloc::vec::Vec<Node>,
1492    #[prost(message, optional, boxed, tag = "10")]
1493    pub on_empty: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
1494    #[prost(message, optional, boxed, tag = "11")]
1495    pub on_error: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
1496    #[prost(bool, tag = "12")]
1497    pub use_io_coercion: bool,
1498    #[prost(bool, tag = "13")]
1499    pub use_json_coercion: bool,
1500    #[prost(enumeration = "JsonWrapper", tag = "14")]
1501    pub wrapper: i32,
1502    #[prost(bool, tag = "15")]
1503    pub omit_quotes: bool,
1504    #[prost(uint32, tag = "16")]
1505    pub collation: u32,
1506    #[prost(int32, tag = "17")]
1507    pub location: i32,
1508}
1509#[derive(serde::Serialize)]
1510#[derive(Clone, PartialEq, ::prost::Message)]
1511pub struct JsonTablePath {
1512    #[prost(string, tag = "1")]
1513    pub name: ::prost::alloc::string::String,
1514}
1515#[derive(serde::Serialize)]
1516#[derive(Clone, PartialEq, ::prost::Message)]
1517pub struct JsonTablePathScan {
1518    #[prost(message, optional, boxed, tag = "1")]
1519    pub plan: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1520    #[prost(message, optional, tag = "2")]
1521    pub path: ::core::option::Option<JsonTablePath>,
1522    #[prost(bool, tag = "3")]
1523    pub error_on_error: bool,
1524    #[prost(message, optional, boxed, tag = "4")]
1525    pub child: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1526    #[prost(int32, tag = "5")]
1527    pub col_min: i32,
1528    #[prost(int32, tag = "6")]
1529    pub col_max: i32,
1530}
1531#[derive(serde::Serialize)]
1532#[derive(Clone, PartialEq, ::prost::Message)]
1533pub struct JsonTableSiblingJoin {
1534    #[prost(message, optional, boxed, tag = "1")]
1535    pub plan: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1536    #[prost(message, optional, boxed, tag = "2")]
1537    pub lplan: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1538    #[prost(message, optional, boxed, tag = "3")]
1539    pub rplan: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1540}
1541#[derive(serde::Serialize)]
1542#[derive(Clone, PartialEq, ::prost::Message)]
1543pub struct NullTest {
1544    #[prost(message, optional, boxed, tag = "1")]
1545    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1546    #[prost(message, optional, boxed, tag = "2")]
1547    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1548    #[prost(enumeration = "NullTestType", tag = "3")]
1549    pub nulltesttype: i32,
1550    #[prost(bool, tag = "4")]
1551    pub argisrow: bool,
1552    #[prost(int32, tag = "5")]
1553    pub location: i32,
1554}
1555#[derive(serde::Serialize)]
1556#[derive(Clone, PartialEq, ::prost::Message)]
1557pub struct BooleanTest {
1558    #[prost(message, optional, boxed, tag = "1")]
1559    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1560    #[prost(message, optional, boxed, tag = "2")]
1561    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1562    #[prost(enumeration = "BoolTestType", tag = "3")]
1563    pub booltesttype: i32,
1564    #[prost(int32, tag = "4")]
1565    pub location: i32,
1566}
1567#[derive(serde::Serialize)]
1568#[derive(Clone, PartialEq, ::prost::Message)]
1569pub struct MergeAction {
1570    #[prost(enumeration = "MergeMatchKind", tag = "1")]
1571    pub match_kind: i32,
1572    #[prost(enumeration = "CmdType", tag = "2")]
1573    pub command_type: i32,
1574    #[prost(enumeration = "OverridingKind", tag = "3")]
1575    pub r#override: i32,
1576    #[prost(message, optional, boxed, tag = "4")]
1577    pub qual: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1578    #[prost(message, repeated, tag = "5")]
1579    pub target_list: ::prost::alloc::vec::Vec<Node>,
1580    #[prost(message, repeated, tag = "6")]
1581    pub update_colnos: ::prost::alloc::vec::Vec<Node>,
1582}
1583#[derive(serde::Serialize)]
1584#[derive(Clone, PartialEq, ::prost::Message)]
1585pub struct CoerceToDomain {
1586    #[prost(message, optional, boxed, tag = "1")]
1587    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1588    #[prost(message, optional, boxed, tag = "2")]
1589    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1590    #[prost(uint32, tag = "3")]
1591    pub resulttype: u32,
1592    #[prost(int32, tag = "4")]
1593    pub resulttypmod: i32,
1594    #[prost(uint32, tag = "5")]
1595    pub resultcollid: u32,
1596    #[prost(enumeration = "CoercionForm", tag = "6")]
1597    pub coercionformat: i32,
1598    #[prost(int32, tag = "7")]
1599    pub location: i32,
1600}
1601#[derive(serde::Serialize)]
1602#[derive(Clone, PartialEq, ::prost::Message)]
1603pub struct CoerceToDomainValue {
1604    #[prost(message, optional, boxed, tag = "1")]
1605    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1606    #[prost(uint32, tag = "2")]
1607    pub type_id: u32,
1608    #[prost(int32, tag = "3")]
1609    pub type_mod: i32,
1610    #[prost(uint32, tag = "4")]
1611    pub collation: u32,
1612    #[prost(int32, tag = "5")]
1613    pub location: i32,
1614}
1615#[derive(serde::Serialize)]
1616#[derive(Clone, PartialEq, ::prost::Message)]
1617pub struct SetToDefault {
1618    #[prost(message, optional, boxed, tag = "1")]
1619    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1620    #[prost(uint32, tag = "2")]
1621    pub type_id: u32,
1622    #[prost(int32, tag = "3")]
1623    pub type_mod: i32,
1624    #[prost(uint32, tag = "4")]
1625    pub collation: u32,
1626    #[prost(int32, tag = "5")]
1627    pub location: i32,
1628}
1629#[derive(serde::Serialize)]
1630#[derive(Clone, PartialEq, ::prost::Message)]
1631pub struct CurrentOfExpr {
1632    #[prost(message, optional, boxed, tag = "1")]
1633    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1634    #[prost(uint32, tag = "2")]
1635    pub cvarno: u32,
1636    #[prost(string, tag = "3")]
1637    pub cursor_name: ::prost::alloc::string::String,
1638    #[prost(int32, tag = "4")]
1639    pub cursor_param: i32,
1640}
1641#[derive(serde::Serialize)]
1642#[derive(Clone, PartialEq, ::prost::Message)]
1643pub struct NextValueExpr {
1644    #[prost(message, optional, boxed, tag = "1")]
1645    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1646    #[prost(uint32, tag = "2")]
1647    pub seqid: u32,
1648    #[prost(uint32, tag = "3")]
1649    pub type_id: u32,
1650}
1651#[derive(serde::Serialize)]
1652#[derive(Clone, PartialEq, ::prost::Message)]
1653pub struct InferenceElem {
1654    #[prost(message, optional, boxed, tag = "1")]
1655    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1656    #[prost(message, optional, boxed, tag = "2")]
1657    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1658    #[prost(uint32, tag = "3")]
1659    pub infercollid: u32,
1660    #[prost(uint32, tag = "4")]
1661    pub inferopclass: u32,
1662}
1663#[derive(serde::Serialize)]
1664#[derive(Clone, PartialEq, ::prost::Message)]
1665pub struct ReturningExpr {
1666    #[prost(message, optional, boxed, tag = "1")]
1667    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1668    #[prost(int32, tag = "2")]
1669    pub retlevelsup: i32,
1670    #[prost(bool, tag = "3")]
1671    pub retold: bool,
1672    #[prost(message, optional, boxed, tag = "4")]
1673    pub retexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1674}
1675#[derive(serde::Serialize)]
1676#[derive(Clone, PartialEq, ::prost::Message)]
1677pub struct TargetEntry {
1678    #[prost(message, optional, boxed, tag = "1")]
1679    pub xpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1680    #[prost(message, optional, boxed, tag = "2")]
1681    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1682    #[prost(int32, tag = "3")]
1683    pub resno: i32,
1684    #[prost(string, tag = "4")]
1685    pub resname: ::prost::alloc::string::String,
1686    #[prost(uint32, tag = "5")]
1687    pub ressortgroupref: u32,
1688    #[prost(uint32, tag = "6")]
1689    pub resorigtbl: u32,
1690    #[prost(int32, tag = "7")]
1691    pub resorigcol: i32,
1692    #[prost(bool, tag = "8")]
1693    pub resjunk: bool,
1694}
1695#[derive(serde::Serialize)]
1696#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1697pub struct RangeTblRef {
1698    #[prost(int32, tag = "1")]
1699    pub rtindex: i32,
1700}
1701#[derive(serde::Serialize)]
1702#[derive(Clone, PartialEq, ::prost::Message)]
1703pub struct JoinExpr {
1704    #[prost(enumeration = "JoinType", tag = "1")]
1705    pub jointype: i32,
1706    #[prost(bool, tag = "2")]
1707    pub is_natural: bool,
1708    #[prost(message, optional, boxed, tag = "3")]
1709    pub larg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1710    #[prost(message, optional, boxed, tag = "4")]
1711    pub rarg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1712    #[prost(message, repeated, tag = "5")]
1713    pub using_clause: ::prost::alloc::vec::Vec<Node>,
1714    #[prost(message, optional, tag = "6")]
1715    pub join_using_alias: ::core::option::Option<Alias>,
1716    #[prost(message, optional, boxed, tag = "7")]
1717    pub quals: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1718    #[prost(message, optional, tag = "8")]
1719    pub alias: ::core::option::Option<Alias>,
1720    #[prost(int32, tag = "9")]
1721    pub rtindex: i32,
1722}
1723#[derive(serde::Serialize)]
1724#[derive(Clone, PartialEq, ::prost::Message)]
1725pub struct FromExpr {
1726    #[prost(message, repeated, tag = "1")]
1727    pub fromlist: ::prost::alloc::vec::Vec<Node>,
1728    #[prost(message, optional, boxed, tag = "2")]
1729    pub quals: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1730}
1731#[derive(serde::Serialize)]
1732#[derive(Clone, PartialEq, ::prost::Message)]
1733pub struct OnConflictExpr {
1734    #[prost(enumeration = "OnConflictAction", tag = "1")]
1735    pub action: i32,
1736    #[prost(message, repeated, tag = "2")]
1737    pub arbiter_elems: ::prost::alloc::vec::Vec<Node>,
1738    #[prost(message, optional, boxed, tag = "3")]
1739    pub arbiter_where: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1740    #[prost(uint32, tag = "4")]
1741    pub constraint: u32,
1742    #[prost(message, repeated, tag = "5")]
1743    pub on_conflict_set: ::prost::alloc::vec::Vec<Node>,
1744    #[prost(message, optional, boxed, tag = "6")]
1745    pub on_conflict_where: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1746    #[prost(int32, tag = "7")]
1747    pub excl_rel_index: i32,
1748    #[prost(message, repeated, tag = "8")]
1749    pub excl_rel_tlist: ::prost::alloc::vec::Vec<Node>,
1750}
1751#[derive(serde::Serialize)]
1752#[derive(Clone, PartialEq, ::prost::Message)]
1753pub struct Query {
1754    #[prost(enumeration = "CmdType", tag = "1")]
1755    pub command_type: i32,
1756    #[prost(enumeration = "QuerySource", tag = "2")]
1757    pub query_source: i32,
1758    #[prost(bool, tag = "3")]
1759    pub can_set_tag: bool,
1760    #[prost(message, optional, boxed, tag = "4")]
1761    pub utility_stmt: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1762    #[prost(int32, tag = "5")]
1763    pub result_relation: i32,
1764    #[prost(bool, tag = "6")]
1765    pub has_aggs: bool,
1766    #[prost(bool, tag = "7")]
1767    pub has_window_funcs: bool,
1768    #[prost(bool, tag = "8")]
1769    pub has_target_srfs: bool,
1770    #[prost(bool, tag = "9")]
1771    pub has_sub_links: bool,
1772    #[prost(bool, tag = "10")]
1773    pub has_distinct_on: bool,
1774    #[prost(bool, tag = "11")]
1775    pub has_recursive: bool,
1776    #[prost(bool, tag = "12")]
1777    pub has_modifying_cte: bool,
1778    #[prost(bool, tag = "13")]
1779    pub has_for_update: bool,
1780    #[prost(bool, tag = "14")]
1781    pub has_row_security: bool,
1782    #[prost(bool, tag = "15")]
1783    pub has_group_rte: bool,
1784    #[prost(bool, tag = "16")]
1785    pub is_return: bool,
1786    #[prost(message, repeated, tag = "17")]
1787    pub cte_list: ::prost::alloc::vec::Vec<Node>,
1788    #[prost(message, repeated, tag = "18")]
1789    pub rtable: ::prost::alloc::vec::Vec<Node>,
1790    #[prost(message, repeated, tag = "19")]
1791    pub rteperminfos: ::prost::alloc::vec::Vec<Node>,
1792    #[prost(message, optional, boxed, tag = "20")]
1793    pub jointree: ::core::option::Option<::prost::alloc::boxed::Box<FromExpr>>,
1794    #[prost(message, repeated, tag = "21")]
1795    pub merge_action_list: ::prost::alloc::vec::Vec<Node>,
1796    #[prost(int32, tag = "22")]
1797    pub merge_target_relation: i32,
1798    #[prost(message, optional, boxed, tag = "23")]
1799    pub merge_join_condition: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1800    #[prost(message, repeated, tag = "24")]
1801    pub target_list: ::prost::alloc::vec::Vec<Node>,
1802    #[prost(enumeration = "OverridingKind", tag = "25")]
1803    pub r#override: i32,
1804    #[prost(message, optional, boxed, tag = "26")]
1805    pub on_conflict: ::core::option::Option<::prost::alloc::boxed::Box<OnConflictExpr>>,
1806    #[prost(string, tag = "27")]
1807    pub returning_old_alias: ::prost::alloc::string::String,
1808    #[prost(string, tag = "28")]
1809    pub returning_new_alias: ::prost::alloc::string::String,
1810    #[prost(message, repeated, tag = "29")]
1811    pub returning_list: ::prost::alloc::vec::Vec<Node>,
1812    #[prost(message, repeated, tag = "30")]
1813    pub group_clause: ::prost::alloc::vec::Vec<Node>,
1814    #[prost(bool, tag = "31")]
1815    pub group_distinct: bool,
1816    #[prost(message, repeated, tag = "32")]
1817    pub grouping_sets: ::prost::alloc::vec::Vec<Node>,
1818    #[prost(message, optional, boxed, tag = "33")]
1819    pub having_qual: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1820    #[prost(message, repeated, tag = "34")]
1821    pub window_clause: ::prost::alloc::vec::Vec<Node>,
1822    #[prost(message, repeated, tag = "35")]
1823    pub distinct_clause: ::prost::alloc::vec::Vec<Node>,
1824    #[prost(message, repeated, tag = "36")]
1825    pub sort_clause: ::prost::alloc::vec::Vec<Node>,
1826    #[prost(message, optional, boxed, tag = "37")]
1827    pub limit_offset: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1828    #[prost(message, optional, boxed, tag = "38")]
1829    pub limit_count: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1830    #[prost(enumeration = "LimitOption", tag = "39")]
1831    pub limit_option: i32,
1832    #[prost(message, repeated, tag = "40")]
1833    pub row_marks: ::prost::alloc::vec::Vec<Node>,
1834    #[prost(message, optional, boxed, tag = "41")]
1835    pub set_operations: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1836    #[prost(message, repeated, tag = "42")]
1837    pub constraint_deps: ::prost::alloc::vec::Vec<Node>,
1838    #[prost(message, repeated, tag = "43")]
1839    pub with_check_options: ::prost::alloc::vec::Vec<Node>,
1840    #[prost(int32, tag = "44")]
1841    pub stmt_location: i32,
1842    #[prost(int32, tag = "45")]
1843    pub stmt_len: i32,
1844}
1845#[derive(serde::Serialize)]
1846#[derive(Clone, PartialEq, ::prost::Message)]
1847pub struct TypeName {
1848    #[prost(message, repeated, tag = "1")]
1849    pub names: ::prost::alloc::vec::Vec<Node>,
1850    #[prost(uint32, tag = "2")]
1851    pub type_oid: u32,
1852    #[prost(bool, tag = "3")]
1853    pub setof: bool,
1854    #[prost(bool, tag = "4")]
1855    pub pct_type: bool,
1856    #[prost(message, repeated, tag = "5")]
1857    pub typmods: ::prost::alloc::vec::Vec<Node>,
1858    #[prost(int32, tag = "6")]
1859    pub typemod: i32,
1860    #[prost(message, repeated, tag = "7")]
1861    pub array_bounds: ::prost::alloc::vec::Vec<Node>,
1862    #[prost(int32, tag = "8")]
1863    pub location: i32,
1864}
1865#[derive(serde::Serialize)]
1866#[derive(Clone, PartialEq, ::prost::Message)]
1867pub struct ColumnRef {
1868    #[prost(message, repeated, tag = "1")]
1869    pub fields: ::prost::alloc::vec::Vec<Node>,
1870    #[prost(int32, tag = "2")]
1871    pub location: i32,
1872}
1873#[derive(serde::Serialize)]
1874#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1875pub struct ParamRef {
1876    #[prost(int32, tag = "1")]
1877    pub number: i32,
1878    #[prost(int32, tag = "2")]
1879    pub location: i32,
1880}
1881#[derive(serde::Serialize)]
1882#[derive(Clone, PartialEq, ::prost::Message)]
1883pub struct AExpr {
1884    #[prost(enumeration = "AExprKind", tag = "1")]
1885    pub kind: i32,
1886    #[prost(message, repeated, tag = "2")]
1887    pub name: ::prost::alloc::vec::Vec<Node>,
1888    #[prost(message, optional, boxed, tag = "3")]
1889    pub lexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1890    #[prost(message, optional, boxed, tag = "4")]
1891    pub rexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1892    #[prost(int32, tag = "5")]
1893    pub rexpr_list_start: i32,
1894    #[prost(int32, tag = "6")]
1895    pub rexpr_list_end: i32,
1896    #[prost(int32, tag = "7")]
1897    pub location: i32,
1898}
1899#[derive(serde::Serialize)]
1900#[derive(Clone, PartialEq, ::prost::Message)]
1901pub struct TypeCast {
1902    #[prost(message, optional, boxed, tag = "1")]
1903    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1904    #[prost(message, optional, tag = "2")]
1905    pub type_name: ::core::option::Option<TypeName>,
1906    #[prost(int32, tag = "3")]
1907    pub location: i32,
1908}
1909#[derive(serde::Serialize)]
1910#[derive(Clone, PartialEq, ::prost::Message)]
1911pub struct CollateClause {
1912    #[prost(message, optional, boxed, tag = "1")]
1913    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1914    #[prost(message, repeated, tag = "2")]
1915    pub collname: ::prost::alloc::vec::Vec<Node>,
1916    #[prost(int32, tag = "3")]
1917    pub location: i32,
1918}
1919#[derive(serde::Serialize)]
1920#[derive(Clone, PartialEq, ::prost::Message)]
1921pub struct RoleSpec {
1922    #[prost(enumeration = "RoleSpecType", tag = "1")]
1923    pub roletype: i32,
1924    #[prost(string, tag = "2")]
1925    pub rolename: ::prost::alloc::string::String,
1926    #[prost(int32, tag = "3")]
1927    pub location: i32,
1928}
1929#[derive(serde::Serialize)]
1930#[derive(Clone, PartialEq, ::prost::Message)]
1931pub struct FuncCall {
1932    #[prost(message, repeated, tag = "1")]
1933    pub funcname: ::prost::alloc::vec::Vec<Node>,
1934    #[prost(message, repeated, tag = "2")]
1935    pub args: ::prost::alloc::vec::Vec<Node>,
1936    #[prost(message, repeated, tag = "3")]
1937    pub agg_order: ::prost::alloc::vec::Vec<Node>,
1938    #[prost(message, optional, boxed, tag = "4")]
1939    pub agg_filter: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1940    #[prost(message, optional, boxed, tag = "5")]
1941    pub over: ::core::option::Option<::prost::alloc::boxed::Box<WindowDef>>,
1942    #[prost(bool, tag = "6")]
1943    pub agg_within_group: bool,
1944    #[prost(bool, tag = "7")]
1945    pub agg_star: bool,
1946    #[prost(bool, tag = "8")]
1947    pub agg_distinct: bool,
1948    #[prost(bool, tag = "9")]
1949    pub func_variadic: bool,
1950    #[prost(enumeration = "CoercionForm", tag = "10")]
1951    pub funcformat: i32,
1952    #[prost(int32, tag = "11")]
1953    pub location: i32,
1954}
1955#[derive(serde::Serialize)]
1956#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1957pub struct AStar {}
1958#[derive(serde::Serialize)]
1959#[derive(Clone, PartialEq, ::prost::Message)]
1960pub struct AIndices {
1961    #[prost(bool, tag = "1")]
1962    pub is_slice: bool,
1963    #[prost(message, optional, boxed, tag = "2")]
1964    pub lidx: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1965    #[prost(message, optional, boxed, tag = "3")]
1966    pub uidx: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1967}
1968#[derive(serde::Serialize)]
1969#[derive(Clone, PartialEq, ::prost::Message)]
1970pub struct AIndirection {
1971    #[prost(message, optional, boxed, tag = "1")]
1972    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1973    #[prost(message, repeated, tag = "2")]
1974    pub indirection: ::prost::alloc::vec::Vec<Node>,
1975}
1976#[derive(serde::Serialize)]
1977#[derive(Clone, PartialEq, ::prost::Message)]
1978pub struct AArrayExpr {
1979    #[prost(message, repeated, tag = "1")]
1980    pub elements: ::prost::alloc::vec::Vec<Node>,
1981    #[prost(int32, tag = "2")]
1982    pub list_start: i32,
1983    #[prost(int32, tag = "3")]
1984    pub list_end: i32,
1985    #[prost(int32, tag = "4")]
1986    pub location: i32,
1987}
1988#[derive(serde::Serialize)]
1989#[derive(Clone, PartialEq, ::prost::Message)]
1990pub struct ResTarget {
1991    #[prost(string, tag = "1")]
1992    pub name: ::prost::alloc::string::String,
1993    #[prost(message, repeated, tag = "2")]
1994    pub indirection: ::prost::alloc::vec::Vec<Node>,
1995    #[prost(message, optional, boxed, tag = "3")]
1996    pub val: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
1997    #[prost(int32, tag = "4")]
1998    pub location: i32,
1999}
2000#[derive(serde::Serialize)]
2001#[derive(Clone, PartialEq, ::prost::Message)]
2002pub struct MultiAssignRef {
2003    #[prost(message, optional, boxed, tag = "1")]
2004    pub source: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2005    #[prost(int32, tag = "2")]
2006    pub colno: i32,
2007    #[prost(int32, tag = "3")]
2008    pub ncolumns: i32,
2009}
2010#[derive(serde::Serialize)]
2011#[derive(Clone, PartialEq, ::prost::Message)]
2012pub struct SortBy {
2013    #[prost(message, optional, boxed, tag = "1")]
2014    pub node: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2015    #[prost(enumeration = "SortByDir", tag = "2")]
2016    pub sortby_dir: i32,
2017    #[prost(enumeration = "SortByNulls", tag = "3")]
2018    pub sortby_nulls: i32,
2019    #[prost(message, repeated, tag = "4")]
2020    pub use_op: ::prost::alloc::vec::Vec<Node>,
2021    #[prost(int32, tag = "5")]
2022    pub location: i32,
2023}
2024#[derive(serde::Serialize)]
2025#[derive(Clone, PartialEq, ::prost::Message)]
2026pub struct WindowDef {
2027    #[prost(string, tag = "1")]
2028    pub name: ::prost::alloc::string::String,
2029    #[prost(string, tag = "2")]
2030    pub refname: ::prost::alloc::string::String,
2031    #[prost(message, repeated, tag = "3")]
2032    pub partition_clause: ::prost::alloc::vec::Vec<Node>,
2033    #[prost(message, repeated, tag = "4")]
2034    pub order_clause: ::prost::alloc::vec::Vec<Node>,
2035    #[prost(int32, tag = "5")]
2036    pub frame_options: i32,
2037    #[prost(message, optional, boxed, tag = "6")]
2038    pub start_offset: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2039    #[prost(message, optional, boxed, tag = "7")]
2040    pub end_offset: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2041    #[prost(int32, tag = "8")]
2042    pub location: i32,
2043}
2044#[derive(serde::Serialize)]
2045#[derive(Clone, PartialEq, ::prost::Message)]
2046pub struct RangeSubselect {
2047    #[prost(bool, tag = "1")]
2048    pub lateral: bool,
2049    #[prost(message, optional, boxed, tag = "2")]
2050    pub subquery: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2051    #[prost(message, optional, tag = "3")]
2052    pub alias: ::core::option::Option<Alias>,
2053}
2054#[derive(serde::Serialize)]
2055#[derive(Clone, PartialEq, ::prost::Message)]
2056pub struct RangeFunction {
2057    #[prost(bool, tag = "1")]
2058    pub lateral: bool,
2059    #[prost(bool, tag = "2")]
2060    pub ordinality: bool,
2061    #[prost(bool, tag = "3")]
2062    pub is_rowsfrom: bool,
2063    #[prost(message, repeated, tag = "4")]
2064    pub functions: ::prost::alloc::vec::Vec<Node>,
2065    #[prost(message, optional, tag = "5")]
2066    pub alias: ::core::option::Option<Alias>,
2067    #[prost(message, repeated, tag = "6")]
2068    pub coldeflist: ::prost::alloc::vec::Vec<Node>,
2069}
2070#[derive(serde::Serialize)]
2071#[derive(Clone, PartialEq, ::prost::Message)]
2072pub struct RangeTableFunc {
2073    #[prost(bool, tag = "1")]
2074    pub lateral: bool,
2075    #[prost(message, optional, boxed, tag = "2")]
2076    pub docexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2077    #[prost(message, optional, boxed, tag = "3")]
2078    pub rowexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2079    #[prost(message, repeated, tag = "4")]
2080    pub namespaces: ::prost::alloc::vec::Vec<Node>,
2081    #[prost(message, repeated, tag = "5")]
2082    pub columns: ::prost::alloc::vec::Vec<Node>,
2083    #[prost(message, optional, tag = "6")]
2084    pub alias: ::core::option::Option<Alias>,
2085    #[prost(int32, tag = "7")]
2086    pub location: i32,
2087}
2088#[derive(serde::Serialize)]
2089#[derive(Clone, PartialEq, ::prost::Message)]
2090pub struct RangeTableFuncCol {
2091    #[prost(string, tag = "1")]
2092    pub colname: ::prost::alloc::string::String,
2093    #[prost(message, optional, tag = "2")]
2094    pub type_name: ::core::option::Option<TypeName>,
2095    #[prost(bool, tag = "3")]
2096    pub for_ordinality: bool,
2097    #[prost(bool, tag = "4")]
2098    pub is_not_null: bool,
2099    #[prost(message, optional, boxed, tag = "5")]
2100    pub colexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2101    #[prost(message, optional, boxed, tag = "6")]
2102    pub coldefexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2103    #[prost(int32, tag = "7")]
2104    pub location: i32,
2105}
2106#[derive(serde::Serialize)]
2107#[derive(Clone, PartialEq, ::prost::Message)]
2108pub struct RangeTableSample {
2109    #[prost(message, optional, boxed, tag = "1")]
2110    pub relation: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2111    #[prost(message, repeated, tag = "2")]
2112    pub method: ::prost::alloc::vec::Vec<Node>,
2113    #[prost(message, repeated, tag = "3")]
2114    pub args: ::prost::alloc::vec::Vec<Node>,
2115    #[prost(message, optional, boxed, tag = "4")]
2116    pub repeatable: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2117    #[prost(int32, tag = "5")]
2118    pub location: i32,
2119}
2120#[derive(serde::Serialize)]
2121#[derive(Clone, PartialEq, ::prost::Message)]
2122pub struct ColumnDef {
2123    #[prost(string, tag = "1")]
2124    pub colname: ::prost::alloc::string::String,
2125    #[prost(message, optional, tag = "2")]
2126    pub type_name: ::core::option::Option<TypeName>,
2127    #[prost(string, tag = "3")]
2128    pub compression: ::prost::alloc::string::String,
2129    #[prost(int32, tag = "4")]
2130    pub inhcount: i32,
2131    #[prost(bool, tag = "5")]
2132    pub is_local: bool,
2133    #[prost(bool, tag = "6")]
2134    pub is_not_null: bool,
2135    #[prost(bool, tag = "7")]
2136    pub is_from_type: bool,
2137    #[prost(string, tag = "8")]
2138    pub storage: ::prost::alloc::string::String,
2139    #[prost(string, tag = "9")]
2140    pub storage_name: ::prost::alloc::string::String,
2141    #[prost(message, optional, boxed, tag = "10")]
2142    pub raw_default: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2143    #[prost(message, optional, boxed, tag = "11")]
2144    pub cooked_default: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2145    #[prost(string, tag = "12")]
2146    pub identity: ::prost::alloc::string::String,
2147    #[prost(message, optional, tag = "13")]
2148    pub identity_sequence: ::core::option::Option<RangeVar>,
2149    #[prost(string, tag = "14")]
2150    pub generated: ::prost::alloc::string::String,
2151    #[prost(message, optional, boxed, tag = "15")]
2152    pub coll_clause: ::core::option::Option<::prost::alloc::boxed::Box<CollateClause>>,
2153    #[prost(uint32, tag = "16")]
2154    pub coll_oid: u32,
2155    #[prost(message, repeated, tag = "17")]
2156    pub constraints: ::prost::alloc::vec::Vec<Node>,
2157    #[prost(message, repeated, tag = "18")]
2158    pub fdwoptions: ::prost::alloc::vec::Vec<Node>,
2159    #[prost(int32, tag = "19")]
2160    pub location: i32,
2161}
2162#[derive(serde::Serialize)]
2163#[derive(Clone, PartialEq, ::prost::Message)]
2164pub struct TableLikeClause {
2165    #[prost(message, optional, tag = "1")]
2166    pub relation: ::core::option::Option<RangeVar>,
2167    #[prost(uint32, tag = "2")]
2168    pub options: u32,
2169    #[prost(uint32, tag = "3")]
2170    pub relation_oid: u32,
2171}
2172#[derive(serde::Serialize)]
2173#[derive(Clone, PartialEq, ::prost::Message)]
2174pub struct IndexElem {
2175    #[prost(string, tag = "1")]
2176    pub name: ::prost::alloc::string::String,
2177    #[prost(message, optional, boxed, tag = "2")]
2178    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2179    #[prost(string, tag = "3")]
2180    pub indexcolname: ::prost::alloc::string::String,
2181    #[prost(message, repeated, tag = "4")]
2182    pub collation: ::prost::alloc::vec::Vec<Node>,
2183    #[prost(message, repeated, tag = "5")]
2184    pub opclass: ::prost::alloc::vec::Vec<Node>,
2185    #[prost(message, repeated, tag = "6")]
2186    pub opclassopts: ::prost::alloc::vec::Vec<Node>,
2187    #[prost(enumeration = "SortByDir", tag = "7")]
2188    pub ordering: i32,
2189    #[prost(enumeration = "SortByNulls", tag = "8")]
2190    pub nulls_ordering: i32,
2191}
2192#[derive(serde::Serialize)]
2193#[derive(Clone, PartialEq, ::prost::Message)]
2194pub struct DefElem {
2195    #[prost(string, tag = "1")]
2196    pub defnamespace: ::prost::alloc::string::String,
2197    #[prost(string, tag = "2")]
2198    pub defname: ::prost::alloc::string::String,
2199    #[prost(message, optional, boxed, tag = "3")]
2200    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2201    #[prost(enumeration = "DefElemAction", tag = "4")]
2202    pub defaction: i32,
2203    #[prost(int32, tag = "5")]
2204    pub location: i32,
2205}
2206#[derive(serde::Serialize)]
2207#[derive(Clone, PartialEq, ::prost::Message)]
2208pub struct LockingClause {
2209    #[prost(message, repeated, tag = "1")]
2210    pub locked_rels: ::prost::alloc::vec::Vec<Node>,
2211    #[prost(enumeration = "LockClauseStrength", tag = "2")]
2212    pub strength: i32,
2213    #[prost(enumeration = "LockWaitPolicy", tag = "3")]
2214    pub wait_policy: i32,
2215}
2216#[derive(serde::Serialize)]
2217#[derive(Clone, PartialEq, ::prost::Message)]
2218pub struct XmlSerialize {
2219    #[prost(enumeration = "XmlOptionType", tag = "1")]
2220    pub xmloption: i32,
2221    #[prost(message, optional, boxed, tag = "2")]
2222    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2223    #[prost(message, optional, tag = "3")]
2224    pub type_name: ::core::option::Option<TypeName>,
2225    #[prost(bool, tag = "4")]
2226    pub indent: bool,
2227    #[prost(int32, tag = "5")]
2228    pub location: i32,
2229}
2230#[derive(serde::Serialize)]
2231#[derive(Clone, PartialEq, ::prost::Message)]
2232pub struct PartitionElem {
2233    #[prost(string, tag = "1")]
2234    pub name: ::prost::alloc::string::String,
2235    #[prost(message, optional, boxed, tag = "2")]
2236    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2237    #[prost(message, repeated, tag = "3")]
2238    pub collation: ::prost::alloc::vec::Vec<Node>,
2239    #[prost(message, repeated, tag = "4")]
2240    pub opclass: ::prost::alloc::vec::Vec<Node>,
2241    #[prost(int32, tag = "5")]
2242    pub location: i32,
2243}
2244#[derive(serde::Serialize)]
2245#[derive(Clone, PartialEq, ::prost::Message)]
2246pub struct PartitionSpec {
2247    #[prost(enumeration = "PartitionStrategy", tag = "1")]
2248    pub strategy: i32,
2249    #[prost(message, repeated, tag = "2")]
2250    pub part_params: ::prost::alloc::vec::Vec<Node>,
2251    #[prost(int32, tag = "3")]
2252    pub location: i32,
2253}
2254#[derive(serde::Serialize)]
2255#[derive(Clone, PartialEq, ::prost::Message)]
2256pub struct PartitionBoundSpec {
2257    #[prost(string, tag = "1")]
2258    pub strategy: ::prost::alloc::string::String,
2259    #[prost(bool, tag = "2")]
2260    pub is_default: bool,
2261    #[prost(int32, tag = "3")]
2262    pub modulus: i32,
2263    #[prost(int32, tag = "4")]
2264    pub remainder: i32,
2265    #[prost(message, repeated, tag = "5")]
2266    pub listdatums: ::prost::alloc::vec::Vec<Node>,
2267    #[prost(message, repeated, tag = "6")]
2268    pub lowerdatums: ::prost::alloc::vec::Vec<Node>,
2269    #[prost(message, repeated, tag = "7")]
2270    pub upperdatums: ::prost::alloc::vec::Vec<Node>,
2271    #[prost(int32, tag = "8")]
2272    pub location: i32,
2273}
2274#[derive(serde::Serialize)]
2275#[derive(Clone, PartialEq, ::prost::Message)]
2276pub struct PartitionRangeDatum {
2277    #[prost(enumeration = "PartitionRangeDatumKind", tag = "1")]
2278    pub kind: i32,
2279    #[prost(message, optional, boxed, tag = "2")]
2280    pub value: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2281    #[prost(int32, tag = "3")]
2282    pub location: i32,
2283}
2284#[derive(serde::Serialize)]
2285#[derive(Clone, PartialEq, ::prost::Message)]
2286pub struct PartitionCmd {
2287    #[prost(message, optional, tag = "1")]
2288    pub name: ::core::option::Option<RangeVar>,
2289    #[prost(message, optional, tag = "2")]
2290    pub bound: ::core::option::Option<PartitionBoundSpec>,
2291    #[prost(bool, tag = "3")]
2292    pub concurrent: bool,
2293}
2294#[derive(serde::Serialize)]
2295#[derive(Clone, PartialEq, ::prost::Message)]
2296pub struct RangeTblEntry {
2297    #[prost(message, optional, tag = "1")]
2298    pub alias: ::core::option::Option<Alias>,
2299    #[prost(message, optional, tag = "2")]
2300    pub eref: ::core::option::Option<Alias>,
2301    #[prost(enumeration = "RteKind", tag = "3")]
2302    pub rtekind: i32,
2303    #[prost(uint32, tag = "4")]
2304    pub relid: u32,
2305    #[prost(bool, tag = "5")]
2306    pub inh: bool,
2307    #[prost(string, tag = "6")]
2308    pub relkind: ::prost::alloc::string::String,
2309    #[prost(int32, tag = "7")]
2310    pub rellockmode: i32,
2311    #[prost(uint32, tag = "8")]
2312    pub perminfoindex: u32,
2313    #[prost(message, optional, boxed, tag = "9")]
2314    pub tablesample: ::core::option::Option<
2315        ::prost::alloc::boxed::Box<TableSampleClause>,
2316    >,
2317    #[prost(message, optional, boxed, tag = "10")]
2318    pub subquery: ::core::option::Option<::prost::alloc::boxed::Box<Query>>,
2319    #[prost(bool, tag = "11")]
2320    pub security_barrier: bool,
2321    #[prost(enumeration = "JoinType", tag = "12")]
2322    pub jointype: i32,
2323    #[prost(int32, tag = "13")]
2324    pub joinmergedcols: i32,
2325    #[prost(message, repeated, tag = "14")]
2326    pub joinaliasvars: ::prost::alloc::vec::Vec<Node>,
2327    #[prost(message, repeated, tag = "15")]
2328    pub joinleftcols: ::prost::alloc::vec::Vec<Node>,
2329    #[prost(message, repeated, tag = "16")]
2330    pub joinrightcols: ::prost::alloc::vec::Vec<Node>,
2331    #[prost(message, optional, tag = "17")]
2332    pub join_using_alias: ::core::option::Option<Alias>,
2333    #[prost(message, repeated, tag = "18")]
2334    pub functions: ::prost::alloc::vec::Vec<Node>,
2335    #[prost(bool, tag = "19")]
2336    pub funcordinality: bool,
2337    #[prost(message, optional, boxed, tag = "20")]
2338    pub tablefunc: ::core::option::Option<::prost::alloc::boxed::Box<TableFunc>>,
2339    #[prost(message, repeated, tag = "21")]
2340    pub values_lists: ::prost::alloc::vec::Vec<Node>,
2341    #[prost(string, tag = "22")]
2342    pub ctename: ::prost::alloc::string::String,
2343    #[prost(uint32, tag = "23")]
2344    pub ctelevelsup: u32,
2345    #[prost(bool, tag = "24")]
2346    pub self_reference: bool,
2347    #[prost(message, repeated, tag = "25")]
2348    pub coltypes: ::prost::alloc::vec::Vec<Node>,
2349    #[prost(message, repeated, tag = "26")]
2350    pub coltypmods: ::prost::alloc::vec::Vec<Node>,
2351    #[prost(message, repeated, tag = "27")]
2352    pub colcollations: ::prost::alloc::vec::Vec<Node>,
2353    #[prost(string, tag = "28")]
2354    pub enrname: ::prost::alloc::string::String,
2355    #[prost(double, tag = "29")]
2356    pub enrtuples: f64,
2357    #[prost(message, repeated, tag = "30")]
2358    pub groupexprs: ::prost::alloc::vec::Vec<Node>,
2359    #[prost(bool, tag = "31")]
2360    pub lateral: bool,
2361    #[prost(bool, tag = "32")]
2362    pub in_from_cl: bool,
2363    #[prost(message, repeated, tag = "33")]
2364    pub security_quals: ::prost::alloc::vec::Vec<Node>,
2365}
2366#[derive(serde::Serialize)]
2367#[derive(Clone, PartialEq, ::prost::Message)]
2368pub struct RtePermissionInfo {
2369    #[prost(uint32, tag = "1")]
2370    pub relid: u32,
2371    #[prost(bool, tag = "2")]
2372    pub inh: bool,
2373    #[prost(uint64, tag = "3")]
2374    pub required_perms: u64,
2375    #[prost(uint32, tag = "4")]
2376    pub check_as_user: u32,
2377    #[prost(uint64, repeated, tag = "5")]
2378    pub selected_cols: ::prost::alloc::vec::Vec<u64>,
2379    #[prost(uint64, repeated, tag = "6")]
2380    pub inserted_cols: ::prost::alloc::vec::Vec<u64>,
2381    #[prost(uint64, repeated, tag = "7")]
2382    pub updated_cols: ::prost::alloc::vec::Vec<u64>,
2383}
2384#[derive(serde::Serialize)]
2385#[derive(Clone, PartialEq, ::prost::Message)]
2386pub struct RangeTblFunction {
2387    #[prost(message, optional, boxed, tag = "1")]
2388    pub funcexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2389    #[prost(int32, tag = "2")]
2390    pub funccolcount: i32,
2391    #[prost(message, repeated, tag = "3")]
2392    pub funccolnames: ::prost::alloc::vec::Vec<Node>,
2393    #[prost(message, repeated, tag = "4")]
2394    pub funccoltypes: ::prost::alloc::vec::Vec<Node>,
2395    #[prost(message, repeated, tag = "5")]
2396    pub funccoltypmods: ::prost::alloc::vec::Vec<Node>,
2397    #[prost(message, repeated, tag = "6")]
2398    pub funccolcollations: ::prost::alloc::vec::Vec<Node>,
2399    #[prost(uint64, repeated, tag = "7")]
2400    pub funcparams: ::prost::alloc::vec::Vec<u64>,
2401}
2402#[derive(serde::Serialize)]
2403#[derive(Clone, PartialEq, ::prost::Message)]
2404pub struct TableSampleClause {
2405    #[prost(uint32, tag = "1")]
2406    pub tsmhandler: u32,
2407    #[prost(message, repeated, tag = "2")]
2408    pub args: ::prost::alloc::vec::Vec<Node>,
2409    #[prost(message, optional, boxed, tag = "3")]
2410    pub repeatable: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2411}
2412#[derive(serde::Serialize)]
2413#[derive(Clone, PartialEq, ::prost::Message)]
2414pub struct WithCheckOption {
2415    #[prost(enumeration = "WcoKind", tag = "1")]
2416    pub kind: i32,
2417    #[prost(string, tag = "2")]
2418    pub relname: ::prost::alloc::string::String,
2419    #[prost(string, tag = "3")]
2420    pub polname: ::prost::alloc::string::String,
2421    #[prost(message, optional, boxed, tag = "4")]
2422    pub qual: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2423    #[prost(bool, tag = "5")]
2424    pub cascaded: bool,
2425}
2426#[derive(serde::Serialize)]
2427#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2428pub struct SortGroupClause {
2429    #[prost(uint32, tag = "1")]
2430    pub tle_sort_group_ref: u32,
2431    #[prost(uint32, tag = "2")]
2432    pub eqop: u32,
2433    #[prost(uint32, tag = "3")]
2434    pub sortop: u32,
2435    #[prost(bool, tag = "4")]
2436    pub reverse_sort: bool,
2437    #[prost(bool, tag = "5")]
2438    pub nulls_first: bool,
2439    #[prost(bool, tag = "6")]
2440    pub hashable: bool,
2441}
2442#[derive(serde::Serialize)]
2443#[derive(Clone, PartialEq, ::prost::Message)]
2444pub struct GroupingSet {
2445    #[prost(enumeration = "GroupingSetKind", tag = "1")]
2446    pub kind: i32,
2447    #[prost(message, repeated, tag = "2")]
2448    pub content: ::prost::alloc::vec::Vec<Node>,
2449    #[prost(int32, tag = "3")]
2450    pub location: i32,
2451}
2452#[derive(serde::Serialize)]
2453#[derive(Clone, PartialEq, ::prost::Message)]
2454pub struct WindowClause {
2455    #[prost(string, tag = "1")]
2456    pub name: ::prost::alloc::string::String,
2457    #[prost(string, tag = "2")]
2458    pub refname: ::prost::alloc::string::String,
2459    #[prost(message, repeated, tag = "3")]
2460    pub partition_clause: ::prost::alloc::vec::Vec<Node>,
2461    #[prost(message, repeated, tag = "4")]
2462    pub order_clause: ::prost::alloc::vec::Vec<Node>,
2463    #[prost(int32, tag = "5")]
2464    pub frame_options: i32,
2465    #[prost(message, optional, boxed, tag = "6")]
2466    pub start_offset: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2467    #[prost(message, optional, boxed, tag = "7")]
2468    pub end_offset: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2469    #[prost(uint32, tag = "8")]
2470    pub start_in_range_func: u32,
2471    #[prost(uint32, tag = "9")]
2472    pub end_in_range_func: u32,
2473    #[prost(uint32, tag = "10")]
2474    pub in_range_coll: u32,
2475    #[prost(bool, tag = "11")]
2476    pub in_range_asc: bool,
2477    #[prost(bool, tag = "12")]
2478    pub in_range_nulls_first: bool,
2479    #[prost(uint32, tag = "13")]
2480    pub winref: u32,
2481    #[prost(bool, tag = "14")]
2482    pub copied_order: bool,
2483}
2484#[derive(serde::Serialize)]
2485#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2486pub struct RowMarkClause {
2487    #[prost(uint32, tag = "1")]
2488    pub rti: u32,
2489    #[prost(enumeration = "LockClauseStrength", tag = "2")]
2490    pub strength: i32,
2491    #[prost(enumeration = "LockWaitPolicy", tag = "3")]
2492    pub wait_policy: i32,
2493    #[prost(bool, tag = "4")]
2494    pub pushed_down: bool,
2495}
2496#[derive(serde::Serialize)]
2497#[derive(Clone, PartialEq, ::prost::Message)]
2498pub struct WithClause {
2499    #[prost(message, repeated, tag = "1")]
2500    pub ctes: ::prost::alloc::vec::Vec<Node>,
2501    #[prost(bool, tag = "2")]
2502    pub recursive: bool,
2503    #[prost(int32, tag = "3")]
2504    pub location: i32,
2505}
2506#[derive(serde::Serialize)]
2507#[derive(Clone, PartialEq, ::prost::Message)]
2508pub struct InferClause {
2509    #[prost(message, repeated, tag = "1")]
2510    pub index_elems: ::prost::alloc::vec::Vec<Node>,
2511    #[prost(message, optional, boxed, tag = "2")]
2512    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2513    #[prost(string, tag = "3")]
2514    pub conname: ::prost::alloc::string::String,
2515    #[prost(int32, tag = "4")]
2516    pub location: i32,
2517}
2518#[derive(serde::Serialize)]
2519#[derive(Clone, PartialEq, ::prost::Message)]
2520pub struct OnConflictClause {
2521    #[prost(enumeration = "OnConflictAction", tag = "1")]
2522    pub action: i32,
2523    #[prost(message, optional, boxed, tag = "2")]
2524    pub infer: ::core::option::Option<::prost::alloc::boxed::Box<InferClause>>,
2525    #[prost(message, repeated, tag = "3")]
2526    pub target_list: ::prost::alloc::vec::Vec<Node>,
2527    #[prost(message, optional, boxed, tag = "4")]
2528    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2529    #[prost(int32, tag = "5")]
2530    pub location: i32,
2531}
2532#[derive(serde::Serialize)]
2533#[derive(Clone, PartialEq, ::prost::Message)]
2534pub struct CteSearchClause {
2535    #[prost(message, repeated, tag = "1")]
2536    pub search_col_list: ::prost::alloc::vec::Vec<Node>,
2537    #[prost(bool, tag = "2")]
2538    pub search_breadth_first: bool,
2539    #[prost(string, tag = "3")]
2540    pub search_seq_column: ::prost::alloc::string::String,
2541    #[prost(int32, tag = "4")]
2542    pub location: i32,
2543}
2544#[derive(serde::Serialize)]
2545#[derive(Clone, PartialEq, ::prost::Message)]
2546pub struct CteCycleClause {
2547    #[prost(message, repeated, tag = "1")]
2548    pub cycle_col_list: ::prost::alloc::vec::Vec<Node>,
2549    #[prost(string, tag = "2")]
2550    pub cycle_mark_column: ::prost::alloc::string::String,
2551    #[prost(message, optional, boxed, tag = "3")]
2552    pub cycle_mark_value: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2553    #[prost(message, optional, boxed, tag = "4")]
2554    pub cycle_mark_default: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2555    #[prost(string, tag = "5")]
2556    pub cycle_path_column: ::prost::alloc::string::String,
2557    #[prost(int32, tag = "6")]
2558    pub location: i32,
2559    #[prost(uint32, tag = "7")]
2560    pub cycle_mark_type: u32,
2561    #[prost(int32, tag = "8")]
2562    pub cycle_mark_typmod: i32,
2563    #[prost(uint32, tag = "9")]
2564    pub cycle_mark_collation: u32,
2565    #[prost(uint32, tag = "10")]
2566    pub cycle_mark_neop: u32,
2567}
2568#[derive(serde::Serialize)]
2569#[derive(Clone, PartialEq, ::prost::Message)]
2570pub struct CommonTableExpr {
2571    #[prost(string, tag = "1")]
2572    pub ctename: ::prost::alloc::string::String,
2573    #[prost(message, repeated, tag = "2")]
2574    pub aliascolnames: ::prost::alloc::vec::Vec<Node>,
2575    #[prost(enumeration = "CteMaterialize", tag = "3")]
2576    pub ctematerialized: i32,
2577    #[prost(message, optional, boxed, tag = "4")]
2578    pub ctequery: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2579    #[prost(message, optional, tag = "5")]
2580    pub search_clause: ::core::option::Option<CteSearchClause>,
2581    #[prost(message, optional, boxed, tag = "6")]
2582    pub cycle_clause: ::core::option::Option<::prost::alloc::boxed::Box<CteCycleClause>>,
2583    #[prost(int32, tag = "7")]
2584    pub location: i32,
2585    #[prost(bool, tag = "8")]
2586    pub cterecursive: bool,
2587    #[prost(int32, tag = "9")]
2588    pub cterefcount: i32,
2589    #[prost(message, repeated, tag = "10")]
2590    pub ctecolnames: ::prost::alloc::vec::Vec<Node>,
2591    #[prost(message, repeated, tag = "11")]
2592    pub ctecoltypes: ::prost::alloc::vec::Vec<Node>,
2593    #[prost(message, repeated, tag = "12")]
2594    pub ctecoltypmods: ::prost::alloc::vec::Vec<Node>,
2595    #[prost(message, repeated, tag = "13")]
2596    pub ctecolcollations: ::prost::alloc::vec::Vec<Node>,
2597}
2598#[derive(serde::Serialize)]
2599#[derive(Clone, PartialEq, ::prost::Message)]
2600pub struct MergeWhenClause {
2601    #[prost(enumeration = "MergeMatchKind", tag = "1")]
2602    pub match_kind: i32,
2603    #[prost(enumeration = "CmdType", tag = "2")]
2604    pub command_type: i32,
2605    #[prost(enumeration = "OverridingKind", tag = "3")]
2606    pub r#override: i32,
2607    #[prost(message, optional, boxed, tag = "4")]
2608    pub condition: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2609    #[prost(message, repeated, tag = "5")]
2610    pub target_list: ::prost::alloc::vec::Vec<Node>,
2611    #[prost(message, repeated, tag = "6")]
2612    pub values: ::prost::alloc::vec::Vec<Node>,
2613}
2614#[derive(serde::Serialize)]
2615#[derive(Clone, PartialEq, ::prost::Message)]
2616pub struct ReturningOption {
2617    #[prost(enumeration = "ReturningOptionKind", tag = "1")]
2618    pub option: i32,
2619    #[prost(string, tag = "2")]
2620    pub value: ::prost::alloc::string::String,
2621    #[prost(int32, tag = "3")]
2622    pub location: i32,
2623}
2624#[derive(serde::Serialize)]
2625#[derive(Clone, PartialEq, ::prost::Message)]
2626pub struct ReturningClause {
2627    #[prost(message, repeated, tag = "1")]
2628    pub options: ::prost::alloc::vec::Vec<Node>,
2629    #[prost(message, repeated, tag = "2")]
2630    pub exprs: ::prost::alloc::vec::Vec<Node>,
2631}
2632#[derive(serde::Serialize)]
2633#[derive(Clone, PartialEq, ::prost::Message)]
2634pub struct TriggerTransition {
2635    #[prost(string, tag = "1")]
2636    pub name: ::prost::alloc::string::String,
2637    #[prost(bool, tag = "2")]
2638    pub is_new: bool,
2639    #[prost(bool, tag = "3")]
2640    pub is_table: bool,
2641}
2642#[derive(serde::Serialize)]
2643#[derive(Clone, PartialEq, ::prost::Message)]
2644pub struct JsonOutput {
2645    #[prost(message, optional, tag = "1")]
2646    pub type_name: ::core::option::Option<TypeName>,
2647    #[prost(message, optional, tag = "2")]
2648    pub returning: ::core::option::Option<JsonReturning>,
2649}
2650#[derive(serde::Serialize)]
2651#[derive(Clone, PartialEq, ::prost::Message)]
2652pub struct JsonArgument {
2653    #[prost(message, optional, boxed, tag = "1")]
2654    pub val: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2655    #[prost(string, tag = "2")]
2656    pub name: ::prost::alloc::string::String,
2657}
2658#[derive(serde::Serialize)]
2659#[derive(Clone, PartialEq, ::prost::Message)]
2660pub struct JsonFuncExpr {
2661    #[prost(enumeration = "JsonExprOp", tag = "1")]
2662    pub op: i32,
2663    #[prost(string, tag = "2")]
2664    pub column_name: ::prost::alloc::string::String,
2665    #[prost(message, optional, boxed, tag = "3")]
2666    pub context_item: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2667    #[prost(message, optional, boxed, tag = "4")]
2668    pub pathspec: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2669    #[prost(message, repeated, tag = "5")]
2670    pub passing: ::prost::alloc::vec::Vec<Node>,
2671    #[prost(message, optional, tag = "6")]
2672    pub output: ::core::option::Option<JsonOutput>,
2673    #[prost(message, optional, boxed, tag = "7")]
2674    pub on_empty: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
2675    #[prost(message, optional, boxed, tag = "8")]
2676    pub on_error: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
2677    #[prost(enumeration = "JsonWrapper", tag = "9")]
2678    pub wrapper: i32,
2679    #[prost(enumeration = "JsonQuotes", tag = "10")]
2680    pub quotes: i32,
2681    #[prost(int32, tag = "11")]
2682    pub location: i32,
2683}
2684#[derive(serde::Serialize)]
2685#[derive(Clone, PartialEq, ::prost::Message)]
2686pub struct JsonTablePathSpec {
2687    #[prost(message, optional, boxed, tag = "1")]
2688    pub string: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2689    #[prost(string, tag = "2")]
2690    pub name: ::prost::alloc::string::String,
2691    #[prost(int32, tag = "3")]
2692    pub name_location: i32,
2693    #[prost(int32, tag = "4")]
2694    pub location: i32,
2695}
2696#[derive(serde::Serialize)]
2697#[derive(Clone, PartialEq, ::prost::Message)]
2698pub struct JsonTable {
2699    #[prost(message, optional, boxed, tag = "1")]
2700    pub context_item: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2701    #[prost(message, optional, boxed, tag = "2")]
2702    pub pathspec: ::core::option::Option<::prost::alloc::boxed::Box<JsonTablePathSpec>>,
2703    #[prost(message, repeated, tag = "3")]
2704    pub passing: ::prost::alloc::vec::Vec<Node>,
2705    #[prost(message, repeated, tag = "4")]
2706    pub columns: ::prost::alloc::vec::Vec<Node>,
2707    #[prost(message, optional, boxed, tag = "5")]
2708    pub on_error: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
2709    #[prost(message, optional, tag = "6")]
2710    pub alias: ::core::option::Option<Alias>,
2711    #[prost(bool, tag = "7")]
2712    pub lateral: bool,
2713    #[prost(int32, tag = "8")]
2714    pub location: i32,
2715}
2716#[derive(serde::Serialize)]
2717#[derive(Clone, PartialEq, ::prost::Message)]
2718pub struct JsonTableColumn {
2719    #[prost(enumeration = "JsonTableColumnType", tag = "1")]
2720    pub coltype: i32,
2721    #[prost(string, tag = "2")]
2722    pub name: ::prost::alloc::string::String,
2723    #[prost(message, optional, tag = "3")]
2724    pub type_name: ::core::option::Option<TypeName>,
2725    #[prost(message, optional, boxed, tag = "4")]
2726    pub pathspec: ::core::option::Option<::prost::alloc::boxed::Box<JsonTablePathSpec>>,
2727    #[prost(message, optional, tag = "5")]
2728    pub format: ::core::option::Option<JsonFormat>,
2729    #[prost(enumeration = "JsonWrapper", tag = "6")]
2730    pub wrapper: i32,
2731    #[prost(enumeration = "JsonQuotes", tag = "7")]
2732    pub quotes: i32,
2733    #[prost(message, repeated, tag = "8")]
2734    pub columns: ::prost::alloc::vec::Vec<Node>,
2735    #[prost(message, optional, boxed, tag = "9")]
2736    pub on_empty: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
2737    #[prost(message, optional, boxed, tag = "10")]
2738    pub on_error: ::core::option::Option<::prost::alloc::boxed::Box<JsonBehavior>>,
2739    #[prost(int32, tag = "11")]
2740    pub location: i32,
2741}
2742#[derive(serde::Serialize)]
2743#[derive(Clone, PartialEq, ::prost::Message)]
2744pub struct JsonKeyValue {
2745    #[prost(message, optional, boxed, tag = "1")]
2746    pub key: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2747    #[prost(message, optional, boxed, tag = "2")]
2748    pub value: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2749}
2750#[derive(serde::Serialize)]
2751#[derive(Clone, PartialEq, ::prost::Message)]
2752pub struct JsonParseExpr {
2753    #[prost(message, optional, boxed, tag = "1")]
2754    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2755    #[prost(message, optional, tag = "2")]
2756    pub output: ::core::option::Option<JsonOutput>,
2757    #[prost(bool, tag = "3")]
2758    pub unique_keys: bool,
2759    #[prost(int32, tag = "4")]
2760    pub location: i32,
2761}
2762#[derive(serde::Serialize)]
2763#[derive(Clone, PartialEq, ::prost::Message)]
2764pub struct JsonScalarExpr {
2765    #[prost(message, optional, boxed, tag = "1")]
2766    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2767    #[prost(message, optional, tag = "2")]
2768    pub output: ::core::option::Option<JsonOutput>,
2769    #[prost(int32, tag = "3")]
2770    pub location: i32,
2771}
2772#[derive(serde::Serialize)]
2773#[derive(Clone, PartialEq, ::prost::Message)]
2774pub struct JsonSerializeExpr {
2775    #[prost(message, optional, boxed, tag = "1")]
2776    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2777    #[prost(message, optional, tag = "2")]
2778    pub output: ::core::option::Option<JsonOutput>,
2779    #[prost(int32, tag = "3")]
2780    pub location: i32,
2781}
2782#[derive(serde::Serialize)]
2783#[derive(Clone, PartialEq, ::prost::Message)]
2784pub struct JsonObjectConstructor {
2785    #[prost(message, repeated, tag = "1")]
2786    pub exprs: ::prost::alloc::vec::Vec<Node>,
2787    #[prost(message, optional, tag = "2")]
2788    pub output: ::core::option::Option<JsonOutput>,
2789    #[prost(bool, tag = "3")]
2790    pub absent_on_null: bool,
2791    #[prost(bool, tag = "4")]
2792    pub unique: bool,
2793    #[prost(int32, tag = "5")]
2794    pub location: i32,
2795}
2796#[derive(serde::Serialize)]
2797#[derive(Clone, PartialEq, ::prost::Message)]
2798pub struct JsonArrayConstructor {
2799    #[prost(message, repeated, tag = "1")]
2800    pub exprs: ::prost::alloc::vec::Vec<Node>,
2801    #[prost(message, optional, tag = "2")]
2802    pub output: ::core::option::Option<JsonOutput>,
2803    #[prost(bool, tag = "3")]
2804    pub absent_on_null: bool,
2805    #[prost(int32, tag = "4")]
2806    pub location: i32,
2807}
2808#[derive(serde::Serialize)]
2809#[derive(Clone, PartialEq, ::prost::Message)]
2810pub struct JsonArrayQueryConstructor {
2811    #[prost(message, optional, boxed, tag = "1")]
2812    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2813    #[prost(message, optional, tag = "2")]
2814    pub output: ::core::option::Option<JsonOutput>,
2815    #[prost(message, optional, tag = "3")]
2816    pub format: ::core::option::Option<JsonFormat>,
2817    #[prost(bool, tag = "4")]
2818    pub absent_on_null: bool,
2819    #[prost(int32, tag = "5")]
2820    pub location: i32,
2821}
2822#[derive(serde::Serialize)]
2823#[derive(Clone, PartialEq, ::prost::Message)]
2824pub struct JsonAggConstructor {
2825    #[prost(message, optional, tag = "1")]
2826    pub output: ::core::option::Option<JsonOutput>,
2827    #[prost(message, optional, boxed, tag = "2")]
2828    pub agg_filter: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2829    #[prost(message, repeated, tag = "3")]
2830    pub agg_order: ::prost::alloc::vec::Vec<Node>,
2831    #[prost(message, optional, boxed, tag = "4")]
2832    pub over: ::core::option::Option<::prost::alloc::boxed::Box<WindowDef>>,
2833    #[prost(int32, tag = "5")]
2834    pub location: i32,
2835}
2836#[derive(serde::Serialize)]
2837#[derive(Clone, PartialEq, ::prost::Message)]
2838pub struct JsonObjectAgg {
2839    #[prost(message, optional, boxed, tag = "1")]
2840    pub constructor: ::core::option::Option<
2841        ::prost::alloc::boxed::Box<JsonAggConstructor>,
2842    >,
2843    #[prost(message, optional, boxed, tag = "2")]
2844    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<JsonKeyValue>>,
2845    #[prost(bool, tag = "3")]
2846    pub absent_on_null: bool,
2847    #[prost(bool, tag = "4")]
2848    pub unique: bool,
2849}
2850#[derive(serde::Serialize)]
2851#[derive(Clone, PartialEq, ::prost::Message)]
2852pub struct JsonArrayAgg {
2853    #[prost(message, optional, boxed, tag = "1")]
2854    pub constructor: ::core::option::Option<
2855        ::prost::alloc::boxed::Box<JsonAggConstructor>,
2856    >,
2857    #[prost(message, optional, boxed, tag = "2")]
2858    pub arg: ::core::option::Option<::prost::alloc::boxed::Box<JsonValueExpr>>,
2859    #[prost(bool, tag = "3")]
2860    pub absent_on_null: bool,
2861}
2862#[derive(serde::Serialize)]
2863#[derive(Clone, PartialEq, ::prost::Message)]
2864pub struct RawStmt {
2865    #[prost(message, optional, boxed, tag = "1")]
2866    pub stmt: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2867    #[prost(int32, tag = "2")]
2868    pub stmt_location: i32,
2869    #[prost(int32, tag = "3")]
2870    pub stmt_len: i32,
2871}
2872#[derive(serde::Serialize)]
2873#[derive(Clone, PartialEq, ::prost::Message)]
2874pub struct InsertStmt {
2875    #[prost(message, optional, tag = "1")]
2876    pub relation: ::core::option::Option<RangeVar>,
2877    #[prost(message, repeated, tag = "2")]
2878    pub cols: ::prost::alloc::vec::Vec<Node>,
2879    #[prost(message, optional, boxed, tag = "3")]
2880    pub select_stmt: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2881    #[prost(message, optional, boxed, tag = "4")]
2882    pub on_conflict_clause: ::core::option::Option<
2883        ::prost::alloc::boxed::Box<OnConflictClause>,
2884    >,
2885    #[prost(message, optional, tag = "5")]
2886    pub returning_clause: ::core::option::Option<ReturningClause>,
2887    #[prost(message, optional, tag = "6")]
2888    pub with_clause: ::core::option::Option<WithClause>,
2889    #[prost(enumeration = "OverridingKind", tag = "7")]
2890    pub r#override: i32,
2891}
2892#[derive(serde::Serialize)]
2893#[derive(Clone, PartialEq, ::prost::Message)]
2894pub struct DeleteStmt {
2895    #[prost(message, optional, tag = "1")]
2896    pub relation: ::core::option::Option<RangeVar>,
2897    #[prost(message, repeated, tag = "2")]
2898    pub using_clause: ::prost::alloc::vec::Vec<Node>,
2899    #[prost(message, optional, boxed, tag = "3")]
2900    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2901    #[prost(message, optional, tag = "4")]
2902    pub returning_clause: ::core::option::Option<ReturningClause>,
2903    #[prost(message, optional, tag = "5")]
2904    pub with_clause: ::core::option::Option<WithClause>,
2905}
2906#[derive(serde::Serialize)]
2907#[derive(Clone, PartialEq, ::prost::Message)]
2908pub struct UpdateStmt {
2909    #[prost(message, optional, tag = "1")]
2910    pub relation: ::core::option::Option<RangeVar>,
2911    #[prost(message, repeated, tag = "2")]
2912    pub target_list: ::prost::alloc::vec::Vec<Node>,
2913    #[prost(message, optional, boxed, tag = "3")]
2914    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2915    #[prost(message, repeated, tag = "4")]
2916    pub from_clause: ::prost::alloc::vec::Vec<Node>,
2917    #[prost(message, optional, tag = "5")]
2918    pub returning_clause: ::core::option::Option<ReturningClause>,
2919    #[prost(message, optional, tag = "6")]
2920    pub with_clause: ::core::option::Option<WithClause>,
2921}
2922#[derive(serde::Serialize)]
2923#[derive(Clone, PartialEq, ::prost::Message)]
2924pub struct MergeStmt {
2925    #[prost(message, optional, tag = "1")]
2926    pub relation: ::core::option::Option<RangeVar>,
2927    #[prost(message, optional, boxed, tag = "2")]
2928    pub source_relation: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2929    #[prost(message, optional, boxed, tag = "3")]
2930    pub join_condition: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2931    #[prost(message, repeated, tag = "4")]
2932    pub merge_when_clauses: ::prost::alloc::vec::Vec<Node>,
2933    #[prost(message, optional, tag = "5")]
2934    pub returning_clause: ::core::option::Option<ReturningClause>,
2935    #[prost(message, optional, tag = "6")]
2936    pub with_clause: ::core::option::Option<WithClause>,
2937}
2938#[derive(serde::Serialize)]
2939#[derive(Clone, PartialEq, ::prost::Message)]
2940pub struct SelectStmt {
2941    #[prost(message, repeated, tag = "1")]
2942    pub distinct_clause: ::prost::alloc::vec::Vec<Node>,
2943    #[prost(message, optional, boxed, tag = "2")]
2944    pub into_clause: ::core::option::Option<::prost::alloc::boxed::Box<IntoClause>>,
2945    #[prost(message, repeated, tag = "3")]
2946    pub target_list: ::prost::alloc::vec::Vec<Node>,
2947    #[prost(message, repeated, tag = "4")]
2948    pub from_clause: ::prost::alloc::vec::Vec<Node>,
2949    #[prost(message, optional, boxed, tag = "5")]
2950    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2951    #[prost(message, repeated, tag = "6")]
2952    pub group_clause: ::prost::alloc::vec::Vec<Node>,
2953    #[prost(bool, tag = "7")]
2954    pub group_distinct: bool,
2955    #[prost(message, optional, boxed, tag = "8")]
2956    pub having_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2957    #[prost(message, repeated, tag = "9")]
2958    pub window_clause: ::prost::alloc::vec::Vec<Node>,
2959    #[prost(message, repeated, tag = "10")]
2960    pub values_lists: ::prost::alloc::vec::Vec<Node>,
2961    #[prost(message, repeated, tag = "11")]
2962    pub sort_clause: ::prost::alloc::vec::Vec<Node>,
2963    #[prost(message, optional, boxed, tag = "12")]
2964    pub limit_offset: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2965    #[prost(message, optional, boxed, tag = "13")]
2966    pub limit_count: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2967    #[prost(enumeration = "LimitOption", tag = "14")]
2968    pub limit_option: i32,
2969    #[prost(message, repeated, tag = "15")]
2970    pub locking_clause: ::prost::alloc::vec::Vec<Node>,
2971    #[prost(message, optional, tag = "16")]
2972    pub with_clause: ::core::option::Option<WithClause>,
2973    #[prost(enumeration = "SetOperation", tag = "17")]
2974    pub op: i32,
2975    #[prost(bool, tag = "18")]
2976    pub all: bool,
2977    #[prost(message, optional, boxed, tag = "19")]
2978    pub larg: ::core::option::Option<::prost::alloc::boxed::Box<SelectStmt>>,
2979    #[prost(message, optional, boxed, tag = "20")]
2980    pub rarg: ::core::option::Option<::prost::alloc::boxed::Box<SelectStmt>>,
2981}
2982#[derive(serde::Serialize)]
2983#[derive(Clone, PartialEq, ::prost::Message)]
2984pub struct SetOperationStmt {
2985    #[prost(enumeration = "SetOperation", tag = "1")]
2986    pub op: i32,
2987    #[prost(bool, tag = "2")]
2988    pub all: bool,
2989    #[prost(message, optional, boxed, tag = "3")]
2990    pub larg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2991    #[prost(message, optional, boxed, tag = "4")]
2992    pub rarg: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
2993    #[prost(message, repeated, tag = "5")]
2994    pub col_types: ::prost::alloc::vec::Vec<Node>,
2995    #[prost(message, repeated, tag = "6")]
2996    pub col_typmods: ::prost::alloc::vec::Vec<Node>,
2997    #[prost(message, repeated, tag = "7")]
2998    pub col_collations: ::prost::alloc::vec::Vec<Node>,
2999    #[prost(message, repeated, tag = "8")]
3000    pub group_clauses: ::prost::alloc::vec::Vec<Node>,
3001}
3002#[derive(serde::Serialize)]
3003#[derive(Clone, PartialEq, ::prost::Message)]
3004pub struct ReturnStmt {
3005    #[prost(message, optional, boxed, tag = "1")]
3006    pub returnval: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3007}
3008#[derive(serde::Serialize)]
3009#[derive(Clone, PartialEq, ::prost::Message)]
3010pub struct PlAssignStmt {
3011    #[prost(string, tag = "1")]
3012    pub name: ::prost::alloc::string::String,
3013    #[prost(message, repeated, tag = "2")]
3014    pub indirection: ::prost::alloc::vec::Vec<Node>,
3015    #[prost(int32, tag = "3")]
3016    pub nnames: i32,
3017    #[prost(message, optional, boxed, tag = "4")]
3018    pub val: ::core::option::Option<::prost::alloc::boxed::Box<SelectStmt>>,
3019    #[prost(int32, tag = "5")]
3020    pub location: i32,
3021}
3022#[derive(serde::Serialize)]
3023#[derive(Clone, PartialEq, ::prost::Message)]
3024pub struct CreateSchemaStmt {
3025    #[prost(string, tag = "1")]
3026    pub schemaname: ::prost::alloc::string::String,
3027    #[prost(message, optional, tag = "2")]
3028    pub authrole: ::core::option::Option<RoleSpec>,
3029    #[prost(message, repeated, tag = "3")]
3030    pub schema_elts: ::prost::alloc::vec::Vec<Node>,
3031    #[prost(bool, tag = "4")]
3032    pub if_not_exists: bool,
3033}
3034#[derive(serde::Serialize)]
3035#[derive(Clone, PartialEq, ::prost::Message)]
3036pub struct AlterTableStmt {
3037    #[prost(message, optional, tag = "1")]
3038    pub relation: ::core::option::Option<RangeVar>,
3039    #[prost(message, repeated, tag = "2")]
3040    pub cmds: ::prost::alloc::vec::Vec<Node>,
3041    #[prost(enumeration = "ObjectType", tag = "3")]
3042    pub objtype: i32,
3043    #[prost(bool, tag = "4")]
3044    pub missing_ok: bool,
3045}
3046#[derive(serde::Serialize)]
3047#[derive(Clone, PartialEq, ::prost::Message)]
3048pub struct AlterTableCmd {
3049    #[prost(enumeration = "AlterTableType", tag = "1")]
3050    pub subtype: i32,
3051    #[prost(string, tag = "2")]
3052    pub name: ::prost::alloc::string::String,
3053    #[prost(int32, tag = "3")]
3054    pub num: i32,
3055    #[prost(message, optional, tag = "4")]
3056    pub newowner: ::core::option::Option<RoleSpec>,
3057    #[prost(message, optional, boxed, tag = "5")]
3058    pub def: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3059    #[prost(enumeration = "DropBehavior", tag = "6")]
3060    pub behavior: i32,
3061    #[prost(bool, tag = "7")]
3062    pub missing_ok: bool,
3063    #[prost(bool, tag = "8")]
3064    pub recurse: bool,
3065}
3066#[derive(serde::Serialize)]
3067#[derive(Clone, PartialEq, ::prost::Message)]
3068pub struct AtAlterConstraint {
3069    #[prost(string, tag = "1")]
3070    pub conname: ::prost::alloc::string::String,
3071    #[prost(bool, tag = "2")]
3072    pub alter_enforceability: bool,
3073    #[prost(bool, tag = "3")]
3074    pub is_enforced: bool,
3075    #[prost(bool, tag = "4")]
3076    pub alter_deferrability: bool,
3077    #[prost(bool, tag = "5")]
3078    pub deferrable: bool,
3079    #[prost(bool, tag = "6")]
3080    pub initdeferred: bool,
3081    #[prost(bool, tag = "7")]
3082    pub alter_inheritability: bool,
3083    #[prost(bool, tag = "8")]
3084    pub noinherit: bool,
3085}
3086#[derive(serde::Serialize)]
3087#[derive(Clone, PartialEq, ::prost::Message)]
3088pub struct ReplicaIdentityStmt {
3089    #[prost(string, tag = "1")]
3090    pub identity_type: ::prost::alloc::string::String,
3091    #[prost(string, tag = "2")]
3092    pub name: ::prost::alloc::string::String,
3093}
3094#[derive(serde::Serialize)]
3095#[derive(Clone, PartialEq, ::prost::Message)]
3096pub struct AlterCollationStmt {
3097    #[prost(message, repeated, tag = "1")]
3098    pub collname: ::prost::alloc::vec::Vec<Node>,
3099}
3100#[derive(serde::Serialize)]
3101#[derive(Clone, PartialEq, ::prost::Message)]
3102pub struct AlterDomainStmt {
3103    #[prost(string, tag = "1")]
3104    pub subtype: ::prost::alloc::string::String,
3105    #[prost(message, repeated, tag = "2")]
3106    pub type_name: ::prost::alloc::vec::Vec<Node>,
3107    #[prost(string, tag = "3")]
3108    pub name: ::prost::alloc::string::String,
3109    #[prost(message, optional, boxed, tag = "4")]
3110    pub def: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3111    #[prost(enumeration = "DropBehavior", tag = "5")]
3112    pub behavior: i32,
3113    #[prost(bool, tag = "6")]
3114    pub missing_ok: bool,
3115}
3116#[derive(serde::Serialize)]
3117#[derive(Clone, PartialEq, ::prost::Message)]
3118pub struct GrantStmt {
3119    #[prost(bool, tag = "1")]
3120    pub is_grant: bool,
3121    #[prost(enumeration = "GrantTargetType", tag = "2")]
3122    pub targtype: i32,
3123    #[prost(enumeration = "ObjectType", tag = "3")]
3124    pub objtype: i32,
3125    #[prost(message, repeated, tag = "4")]
3126    pub objects: ::prost::alloc::vec::Vec<Node>,
3127    #[prost(message, repeated, tag = "5")]
3128    pub privileges: ::prost::alloc::vec::Vec<Node>,
3129    #[prost(message, repeated, tag = "6")]
3130    pub grantees: ::prost::alloc::vec::Vec<Node>,
3131    #[prost(bool, tag = "7")]
3132    pub grant_option: bool,
3133    #[prost(message, optional, tag = "8")]
3134    pub grantor: ::core::option::Option<RoleSpec>,
3135    #[prost(enumeration = "DropBehavior", tag = "9")]
3136    pub behavior: i32,
3137}
3138#[derive(serde::Serialize)]
3139#[derive(Clone, PartialEq, ::prost::Message)]
3140pub struct ObjectWithArgs {
3141    #[prost(message, repeated, tag = "1")]
3142    pub objname: ::prost::alloc::vec::Vec<Node>,
3143    #[prost(message, repeated, tag = "2")]
3144    pub objargs: ::prost::alloc::vec::Vec<Node>,
3145    #[prost(message, repeated, tag = "3")]
3146    pub objfuncargs: ::prost::alloc::vec::Vec<Node>,
3147    #[prost(bool, tag = "4")]
3148    pub args_unspecified: bool,
3149}
3150#[derive(serde::Serialize)]
3151#[derive(Clone, PartialEq, ::prost::Message)]
3152pub struct AccessPriv {
3153    #[prost(string, tag = "1")]
3154    pub priv_name: ::prost::alloc::string::String,
3155    #[prost(message, repeated, tag = "2")]
3156    pub cols: ::prost::alloc::vec::Vec<Node>,
3157}
3158#[derive(serde::Serialize)]
3159#[derive(Clone, PartialEq, ::prost::Message)]
3160pub struct GrantRoleStmt {
3161    #[prost(message, repeated, tag = "1")]
3162    pub granted_roles: ::prost::alloc::vec::Vec<Node>,
3163    #[prost(message, repeated, tag = "2")]
3164    pub grantee_roles: ::prost::alloc::vec::Vec<Node>,
3165    #[prost(bool, tag = "3")]
3166    pub is_grant: bool,
3167    #[prost(message, repeated, tag = "4")]
3168    pub opt: ::prost::alloc::vec::Vec<Node>,
3169    #[prost(message, optional, tag = "5")]
3170    pub grantor: ::core::option::Option<RoleSpec>,
3171    #[prost(enumeration = "DropBehavior", tag = "6")]
3172    pub behavior: i32,
3173}
3174#[derive(serde::Serialize)]
3175#[derive(Clone, PartialEq, ::prost::Message)]
3176pub struct AlterDefaultPrivilegesStmt {
3177    #[prost(message, repeated, tag = "1")]
3178    pub options: ::prost::alloc::vec::Vec<Node>,
3179    #[prost(message, optional, tag = "2")]
3180    pub action: ::core::option::Option<GrantStmt>,
3181}
3182#[derive(serde::Serialize)]
3183#[derive(Clone, PartialEq, ::prost::Message)]
3184pub struct CopyStmt {
3185    #[prost(message, optional, tag = "1")]
3186    pub relation: ::core::option::Option<RangeVar>,
3187    #[prost(message, optional, boxed, tag = "2")]
3188    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3189    #[prost(message, repeated, tag = "3")]
3190    pub attlist: ::prost::alloc::vec::Vec<Node>,
3191    #[prost(bool, tag = "4")]
3192    pub is_from: bool,
3193    #[prost(bool, tag = "5")]
3194    pub is_program: bool,
3195    #[prost(string, tag = "6")]
3196    pub filename: ::prost::alloc::string::String,
3197    #[prost(message, repeated, tag = "7")]
3198    pub options: ::prost::alloc::vec::Vec<Node>,
3199    #[prost(message, optional, boxed, tag = "8")]
3200    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3201}
3202#[derive(serde::Serialize)]
3203#[derive(Clone, PartialEq, ::prost::Message)]
3204pub struct VariableSetStmt {
3205    #[prost(enumeration = "VariableSetKind", tag = "1")]
3206    pub kind: i32,
3207    #[prost(string, tag = "2")]
3208    pub name: ::prost::alloc::string::String,
3209    #[prost(message, repeated, tag = "3")]
3210    pub args: ::prost::alloc::vec::Vec<Node>,
3211    #[prost(bool, tag = "4")]
3212    pub jumble_args: bool,
3213    #[prost(bool, tag = "5")]
3214    pub is_local: bool,
3215    #[prost(int32, tag = "6")]
3216    pub location: i32,
3217}
3218#[derive(serde::Serialize)]
3219#[derive(Clone, PartialEq, ::prost::Message)]
3220pub struct VariableShowStmt {
3221    #[prost(string, tag = "1")]
3222    pub name: ::prost::alloc::string::String,
3223}
3224#[derive(serde::Serialize)]
3225#[derive(Clone, PartialEq, ::prost::Message)]
3226pub struct CreateStmt {
3227    #[prost(message, optional, tag = "1")]
3228    pub relation: ::core::option::Option<RangeVar>,
3229    #[prost(message, repeated, tag = "2")]
3230    pub table_elts: ::prost::alloc::vec::Vec<Node>,
3231    #[prost(message, repeated, tag = "3")]
3232    pub inh_relations: ::prost::alloc::vec::Vec<Node>,
3233    #[prost(message, optional, tag = "4")]
3234    pub partbound: ::core::option::Option<PartitionBoundSpec>,
3235    #[prost(message, optional, tag = "5")]
3236    pub partspec: ::core::option::Option<PartitionSpec>,
3237    #[prost(message, optional, tag = "6")]
3238    pub of_typename: ::core::option::Option<TypeName>,
3239    #[prost(message, repeated, tag = "7")]
3240    pub constraints: ::prost::alloc::vec::Vec<Node>,
3241    #[prost(message, repeated, tag = "8")]
3242    pub nnconstraints: ::prost::alloc::vec::Vec<Node>,
3243    #[prost(message, repeated, tag = "9")]
3244    pub options: ::prost::alloc::vec::Vec<Node>,
3245    #[prost(enumeration = "OnCommitAction", tag = "10")]
3246    pub oncommit: i32,
3247    #[prost(string, tag = "11")]
3248    pub tablespacename: ::prost::alloc::string::String,
3249    #[prost(string, tag = "12")]
3250    pub access_method: ::prost::alloc::string::String,
3251    #[prost(bool, tag = "13")]
3252    pub if_not_exists: bool,
3253}
3254#[derive(serde::Serialize)]
3255#[derive(Clone, PartialEq, ::prost::Message)]
3256pub struct Constraint {
3257    #[prost(enumeration = "ConstrType", tag = "1")]
3258    pub contype: i32,
3259    #[prost(string, tag = "2")]
3260    pub conname: ::prost::alloc::string::String,
3261    #[prost(bool, tag = "3")]
3262    pub deferrable: bool,
3263    #[prost(bool, tag = "4")]
3264    pub initdeferred: bool,
3265    #[prost(bool, tag = "5")]
3266    pub is_enforced: bool,
3267    #[prost(bool, tag = "6")]
3268    pub skip_validation: bool,
3269    #[prost(bool, tag = "7")]
3270    pub initially_valid: bool,
3271    #[prost(bool, tag = "8")]
3272    pub is_no_inherit: bool,
3273    #[prost(message, optional, boxed, tag = "9")]
3274    pub raw_expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3275    #[prost(string, tag = "10")]
3276    pub cooked_expr: ::prost::alloc::string::String,
3277    #[prost(string, tag = "11")]
3278    pub generated_when: ::prost::alloc::string::String,
3279    #[prost(string, tag = "12")]
3280    pub generated_kind: ::prost::alloc::string::String,
3281    #[prost(bool, tag = "13")]
3282    pub nulls_not_distinct: bool,
3283    #[prost(message, repeated, tag = "14")]
3284    pub keys: ::prost::alloc::vec::Vec<Node>,
3285    #[prost(bool, tag = "15")]
3286    pub without_overlaps: bool,
3287    #[prost(message, repeated, tag = "16")]
3288    pub including: ::prost::alloc::vec::Vec<Node>,
3289    #[prost(message, repeated, tag = "17")]
3290    pub exclusions: ::prost::alloc::vec::Vec<Node>,
3291    #[prost(message, repeated, tag = "18")]
3292    pub options: ::prost::alloc::vec::Vec<Node>,
3293    #[prost(string, tag = "19")]
3294    pub indexname: ::prost::alloc::string::String,
3295    #[prost(string, tag = "20")]
3296    pub indexspace: ::prost::alloc::string::String,
3297    #[prost(bool, tag = "21")]
3298    pub reset_default_tblspc: bool,
3299    #[prost(string, tag = "22")]
3300    pub access_method: ::prost::alloc::string::String,
3301    #[prost(message, optional, boxed, tag = "23")]
3302    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3303    #[prost(message, optional, tag = "24")]
3304    pub pktable: ::core::option::Option<RangeVar>,
3305    #[prost(message, repeated, tag = "25")]
3306    pub fk_attrs: ::prost::alloc::vec::Vec<Node>,
3307    #[prost(message, repeated, tag = "26")]
3308    pub pk_attrs: ::prost::alloc::vec::Vec<Node>,
3309    #[prost(bool, tag = "27")]
3310    pub fk_with_period: bool,
3311    #[prost(bool, tag = "28")]
3312    pub pk_with_period: bool,
3313    #[prost(string, tag = "29")]
3314    pub fk_matchtype: ::prost::alloc::string::String,
3315    #[prost(string, tag = "30")]
3316    pub fk_upd_action: ::prost::alloc::string::String,
3317    #[prost(string, tag = "31")]
3318    pub fk_del_action: ::prost::alloc::string::String,
3319    #[prost(message, repeated, tag = "32")]
3320    pub fk_del_set_cols: ::prost::alloc::vec::Vec<Node>,
3321    #[prost(message, repeated, tag = "33")]
3322    pub old_conpfeqop: ::prost::alloc::vec::Vec<Node>,
3323    #[prost(uint32, tag = "34")]
3324    pub old_pktable_oid: u32,
3325    #[prost(int32, tag = "35")]
3326    pub location: i32,
3327}
3328#[derive(serde::Serialize)]
3329#[derive(Clone, PartialEq, ::prost::Message)]
3330pub struct CreateTableSpaceStmt {
3331    #[prost(string, tag = "1")]
3332    pub tablespacename: ::prost::alloc::string::String,
3333    #[prost(message, optional, tag = "2")]
3334    pub owner: ::core::option::Option<RoleSpec>,
3335    #[prost(string, tag = "3")]
3336    pub location: ::prost::alloc::string::String,
3337    #[prost(message, repeated, tag = "4")]
3338    pub options: ::prost::alloc::vec::Vec<Node>,
3339}
3340#[derive(serde::Serialize)]
3341#[derive(Clone, PartialEq, ::prost::Message)]
3342pub struct DropTableSpaceStmt {
3343    #[prost(string, tag = "1")]
3344    pub tablespacename: ::prost::alloc::string::String,
3345    #[prost(bool, tag = "2")]
3346    pub missing_ok: bool,
3347}
3348#[derive(serde::Serialize)]
3349#[derive(Clone, PartialEq, ::prost::Message)]
3350pub struct AlterTableSpaceOptionsStmt {
3351    #[prost(string, tag = "1")]
3352    pub tablespacename: ::prost::alloc::string::String,
3353    #[prost(message, repeated, tag = "2")]
3354    pub options: ::prost::alloc::vec::Vec<Node>,
3355    #[prost(bool, tag = "3")]
3356    pub is_reset: bool,
3357}
3358#[derive(serde::Serialize)]
3359#[derive(Clone, PartialEq, ::prost::Message)]
3360pub struct AlterTableMoveAllStmt {
3361    #[prost(string, tag = "1")]
3362    pub orig_tablespacename: ::prost::alloc::string::String,
3363    #[prost(enumeration = "ObjectType", tag = "2")]
3364    pub objtype: i32,
3365    #[prost(message, repeated, tag = "3")]
3366    pub roles: ::prost::alloc::vec::Vec<Node>,
3367    #[prost(string, tag = "4")]
3368    pub new_tablespacename: ::prost::alloc::string::String,
3369    #[prost(bool, tag = "5")]
3370    pub nowait: bool,
3371}
3372#[derive(serde::Serialize)]
3373#[derive(Clone, PartialEq, ::prost::Message)]
3374pub struct CreateExtensionStmt {
3375    #[prost(string, tag = "1")]
3376    pub extname: ::prost::alloc::string::String,
3377    #[prost(bool, tag = "2")]
3378    pub if_not_exists: bool,
3379    #[prost(message, repeated, tag = "3")]
3380    pub options: ::prost::alloc::vec::Vec<Node>,
3381}
3382#[derive(serde::Serialize)]
3383#[derive(Clone, PartialEq, ::prost::Message)]
3384pub struct AlterExtensionStmt {
3385    #[prost(string, tag = "1")]
3386    pub extname: ::prost::alloc::string::String,
3387    #[prost(message, repeated, tag = "2")]
3388    pub options: ::prost::alloc::vec::Vec<Node>,
3389}
3390#[derive(serde::Serialize)]
3391#[derive(Clone, PartialEq, ::prost::Message)]
3392pub struct AlterExtensionContentsStmt {
3393    #[prost(string, tag = "1")]
3394    pub extname: ::prost::alloc::string::String,
3395    #[prost(int32, tag = "2")]
3396    pub action: i32,
3397    #[prost(enumeration = "ObjectType", tag = "3")]
3398    pub objtype: i32,
3399    #[prost(message, optional, boxed, tag = "4")]
3400    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3401}
3402#[derive(serde::Serialize)]
3403#[derive(Clone, PartialEq, ::prost::Message)]
3404pub struct CreateFdwStmt {
3405    #[prost(string, tag = "1")]
3406    pub fdwname: ::prost::alloc::string::String,
3407    #[prost(message, repeated, tag = "2")]
3408    pub func_options: ::prost::alloc::vec::Vec<Node>,
3409    #[prost(message, repeated, tag = "3")]
3410    pub options: ::prost::alloc::vec::Vec<Node>,
3411}
3412#[derive(serde::Serialize)]
3413#[derive(Clone, PartialEq, ::prost::Message)]
3414pub struct AlterFdwStmt {
3415    #[prost(string, tag = "1")]
3416    pub fdwname: ::prost::alloc::string::String,
3417    #[prost(message, repeated, tag = "2")]
3418    pub func_options: ::prost::alloc::vec::Vec<Node>,
3419    #[prost(message, repeated, tag = "3")]
3420    pub options: ::prost::alloc::vec::Vec<Node>,
3421}
3422#[derive(serde::Serialize)]
3423#[derive(Clone, PartialEq, ::prost::Message)]
3424pub struct CreateForeignServerStmt {
3425    #[prost(string, tag = "1")]
3426    pub servername: ::prost::alloc::string::String,
3427    #[prost(string, tag = "2")]
3428    pub servertype: ::prost::alloc::string::String,
3429    #[prost(string, tag = "3")]
3430    pub version: ::prost::alloc::string::String,
3431    #[prost(string, tag = "4")]
3432    pub fdwname: ::prost::alloc::string::String,
3433    #[prost(bool, tag = "5")]
3434    pub if_not_exists: bool,
3435    #[prost(message, repeated, tag = "6")]
3436    pub options: ::prost::alloc::vec::Vec<Node>,
3437}
3438#[derive(serde::Serialize)]
3439#[derive(Clone, PartialEq, ::prost::Message)]
3440pub struct AlterForeignServerStmt {
3441    #[prost(string, tag = "1")]
3442    pub servername: ::prost::alloc::string::String,
3443    #[prost(string, tag = "2")]
3444    pub version: ::prost::alloc::string::String,
3445    #[prost(message, repeated, tag = "3")]
3446    pub options: ::prost::alloc::vec::Vec<Node>,
3447    #[prost(bool, tag = "4")]
3448    pub has_version: bool,
3449}
3450#[derive(serde::Serialize)]
3451#[derive(Clone, PartialEq, ::prost::Message)]
3452pub struct CreateForeignTableStmt {
3453    #[prost(message, optional, tag = "1")]
3454    pub base_stmt: ::core::option::Option<CreateStmt>,
3455    #[prost(string, tag = "2")]
3456    pub servername: ::prost::alloc::string::String,
3457    #[prost(message, repeated, tag = "3")]
3458    pub options: ::prost::alloc::vec::Vec<Node>,
3459}
3460#[derive(serde::Serialize)]
3461#[derive(Clone, PartialEq, ::prost::Message)]
3462pub struct CreateUserMappingStmt {
3463    #[prost(message, optional, tag = "1")]
3464    pub user: ::core::option::Option<RoleSpec>,
3465    #[prost(string, tag = "2")]
3466    pub servername: ::prost::alloc::string::String,
3467    #[prost(bool, tag = "3")]
3468    pub if_not_exists: bool,
3469    #[prost(message, repeated, tag = "4")]
3470    pub options: ::prost::alloc::vec::Vec<Node>,
3471}
3472#[derive(serde::Serialize)]
3473#[derive(Clone, PartialEq, ::prost::Message)]
3474pub struct AlterUserMappingStmt {
3475    #[prost(message, optional, tag = "1")]
3476    pub user: ::core::option::Option<RoleSpec>,
3477    #[prost(string, tag = "2")]
3478    pub servername: ::prost::alloc::string::String,
3479    #[prost(message, repeated, tag = "3")]
3480    pub options: ::prost::alloc::vec::Vec<Node>,
3481}
3482#[derive(serde::Serialize)]
3483#[derive(Clone, PartialEq, ::prost::Message)]
3484pub struct DropUserMappingStmt {
3485    #[prost(message, optional, tag = "1")]
3486    pub user: ::core::option::Option<RoleSpec>,
3487    #[prost(string, tag = "2")]
3488    pub servername: ::prost::alloc::string::String,
3489    #[prost(bool, tag = "3")]
3490    pub missing_ok: bool,
3491}
3492#[derive(serde::Serialize)]
3493#[derive(Clone, PartialEq, ::prost::Message)]
3494pub struct ImportForeignSchemaStmt {
3495    #[prost(string, tag = "1")]
3496    pub server_name: ::prost::alloc::string::String,
3497    #[prost(string, tag = "2")]
3498    pub remote_schema: ::prost::alloc::string::String,
3499    #[prost(string, tag = "3")]
3500    pub local_schema: ::prost::alloc::string::String,
3501    #[prost(enumeration = "ImportForeignSchemaType", tag = "4")]
3502    pub list_type: i32,
3503    #[prost(message, repeated, tag = "5")]
3504    pub table_list: ::prost::alloc::vec::Vec<Node>,
3505    #[prost(message, repeated, tag = "6")]
3506    pub options: ::prost::alloc::vec::Vec<Node>,
3507}
3508#[derive(serde::Serialize)]
3509#[derive(Clone, PartialEq, ::prost::Message)]
3510pub struct CreatePolicyStmt {
3511    #[prost(string, tag = "1")]
3512    pub policy_name: ::prost::alloc::string::String,
3513    #[prost(message, optional, tag = "2")]
3514    pub table: ::core::option::Option<RangeVar>,
3515    #[prost(string, tag = "3")]
3516    pub cmd_name: ::prost::alloc::string::String,
3517    #[prost(bool, tag = "4")]
3518    pub permissive: bool,
3519    #[prost(message, repeated, tag = "5")]
3520    pub roles: ::prost::alloc::vec::Vec<Node>,
3521    #[prost(message, optional, boxed, tag = "6")]
3522    pub qual: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3523    #[prost(message, optional, boxed, tag = "7")]
3524    pub with_check: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3525}
3526#[derive(serde::Serialize)]
3527#[derive(Clone, PartialEq, ::prost::Message)]
3528pub struct AlterPolicyStmt {
3529    #[prost(string, tag = "1")]
3530    pub policy_name: ::prost::alloc::string::String,
3531    #[prost(message, optional, tag = "2")]
3532    pub table: ::core::option::Option<RangeVar>,
3533    #[prost(message, repeated, tag = "3")]
3534    pub roles: ::prost::alloc::vec::Vec<Node>,
3535    #[prost(message, optional, boxed, tag = "4")]
3536    pub qual: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3537    #[prost(message, optional, boxed, tag = "5")]
3538    pub with_check: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3539}
3540#[derive(serde::Serialize)]
3541#[derive(Clone, PartialEq, ::prost::Message)]
3542pub struct CreateAmStmt {
3543    #[prost(string, tag = "1")]
3544    pub amname: ::prost::alloc::string::String,
3545    #[prost(message, repeated, tag = "2")]
3546    pub handler_name: ::prost::alloc::vec::Vec<Node>,
3547    #[prost(string, tag = "3")]
3548    pub amtype: ::prost::alloc::string::String,
3549}
3550#[derive(serde::Serialize)]
3551#[derive(Clone, PartialEq, ::prost::Message)]
3552pub struct CreateTrigStmt {
3553    #[prost(bool, tag = "1")]
3554    pub replace: bool,
3555    #[prost(bool, tag = "2")]
3556    pub isconstraint: bool,
3557    #[prost(string, tag = "3")]
3558    pub trigname: ::prost::alloc::string::String,
3559    #[prost(message, optional, tag = "4")]
3560    pub relation: ::core::option::Option<RangeVar>,
3561    #[prost(message, repeated, tag = "5")]
3562    pub funcname: ::prost::alloc::vec::Vec<Node>,
3563    #[prost(message, repeated, tag = "6")]
3564    pub args: ::prost::alloc::vec::Vec<Node>,
3565    #[prost(bool, tag = "7")]
3566    pub row: bool,
3567    #[prost(int32, tag = "8")]
3568    pub timing: i32,
3569    #[prost(int32, tag = "9")]
3570    pub events: i32,
3571    #[prost(message, repeated, tag = "10")]
3572    pub columns: ::prost::alloc::vec::Vec<Node>,
3573    #[prost(message, optional, boxed, tag = "11")]
3574    pub when_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3575    #[prost(message, repeated, tag = "12")]
3576    pub transition_rels: ::prost::alloc::vec::Vec<Node>,
3577    #[prost(bool, tag = "13")]
3578    pub deferrable: bool,
3579    #[prost(bool, tag = "14")]
3580    pub initdeferred: bool,
3581    #[prost(message, optional, tag = "15")]
3582    pub constrrel: ::core::option::Option<RangeVar>,
3583}
3584#[derive(serde::Serialize)]
3585#[derive(Clone, PartialEq, ::prost::Message)]
3586pub struct CreateEventTrigStmt {
3587    #[prost(string, tag = "1")]
3588    pub trigname: ::prost::alloc::string::String,
3589    #[prost(string, tag = "2")]
3590    pub eventname: ::prost::alloc::string::String,
3591    #[prost(message, repeated, tag = "3")]
3592    pub whenclause: ::prost::alloc::vec::Vec<Node>,
3593    #[prost(message, repeated, tag = "4")]
3594    pub funcname: ::prost::alloc::vec::Vec<Node>,
3595}
3596#[derive(serde::Serialize)]
3597#[derive(Clone, PartialEq, ::prost::Message)]
3598pub struct AlterEventTrigStmt {
3599    #[prost(string, tag = "1")]
3600    pub trigname: ::prost::alloc::string::String,
3601    #[prost(string, tag = "2")]
3602    pub tgenabled: ::prost::alloc::string::String,
3603}
3604#[derive(serde::Serialize)]
3605#[derive(Clone, PartialEq, ::prost::Message)]
3606pub struct CreatePLangStmt {
3607    #[prost(bool, tag = "1")]
3608    pub replace: bool,
3609    #[prost(string, tag = "2")]
3610    pub plname: ::prost::alloc::string::String,
3611    #[prost(message, repeated, tag = "3")]
3612    pub plhandler: ::prost::alloc::vec::Vec<Node>,
3613    #[prost(message, repeated, tag = "4")]
3614    pub plinline: ::prost::alloc::vec::Vec<Node>,
3615    #[prost(message, repeated, tag = "5")]
3616    pub plvalidator: ::prost::alloc::vec::Vec<Node>,
3617    #[prost(bool, tag = "6")]
3618    pub pltrusted: bool,
3619}
3620#[derive(serde::Serialize)]
3621#[derive(Clone, PartialEq, ::prost::Message)]
3622pub struct CreateRoleStmt {
3623    #[prost(enumeration = "RoleStmtType", tag = "1")]
3624    pub stmt_type: i32,
3625    #[prost(string, tag = "2")]
3626    pub role: ::prost::alloc::string::String,
3627    #[prost(message, repeated, tag = "3")]
3628    pub options: ::prost::alloc::vec::Vec<Node>,
3629}
3630#[derive(serde::Serialize)]
3631#[derive(Clone, PartialEq, ::prost::Message)]
3632pub struct AlterRoleStmt {
3633    #[prost(message, optional, tag = "1")]
3634    pub role: ::core::option::Option<RoleSpec>,
3635    #[prost(message, repeated, tag = "2")]
3636    pub options: ::prost::alloc::vec::Vec<Node>,
3637    #[prost(int32, tag = "3")]
3638    pub action: i32,
3639}
3640#[derive(serde::Serialize)]
3641#[derive(Clone, PartialEq, ::prost::Message)]
3642pub struct AlterRoleSetStmt {
3643    #[prost(message, optional, tag = "1")]
3644    pub role: ::core::option::Option<RoleSpec>,
3645    #[prost(string, tag = "2")]
3646    pub database: ::prost::alloc::string::String,
3647    #[prost(message, optional, tag = "3")]
3648    pub setstmt: ::core::option::Option<VariableSetStmt>,
3649}
3650#[derive(serde::Serialize)]
3651#[derive(Clone, PartialEq, ::prost::Message)]
3652pub struct DropRoleStmt {
3653    #[prost(message, repeated, tag = "1")]
3654    pub roles: ::prost::alloc::vec::Vec<Node>,
3655    #[prost(bool, tag = "2")]
3656    pub missing_ok: bool,
3657}
3658#[derive(serde::Serialize)]
3659#[derive(Clone, PartialEq, ::prost::Message)]
3660pub struct CreateSeqStmt {
3661    #[prost(message, optional, tag = "1")]
3662    pub sequence: ::core::option::Option<RangeVar>,
3663    #[prost(message, repeated, tag = "2")]
3664    pub options: ::prost::alloc::vec::Vec<Node>,
3665    #[prost(uint32, tag = "3")]
3666    pub owner_id: u32,
3667    #[prost(bool, tag = "4")]
3668    pub for_identity: bool,
3669    #[prost(bool, tag = "5")]
3670    pub if_not_exists: bool,
3671}
3672#[derive(serde::Serialize)]
3673#[derive(Clone, PartialEq, ::prost::Message)]
3674pub struct AlterSeqStmt {
3675    #[prost(message, optional, tag = "1")]
3676    pub sequence: ::core::option::Option<RangeVar>,
3677    #[prost(message, repeated, tag = "2")]
3678    pub options: ::prost::alloc::vec::Vec<Node>,
3679    #[prost(bool, tag = "3")]
3680    pub for_identity: bool,
3681    #[prost(bool, tag = "4")]
3682    pub missing_ok: bool,
3683}
3684#[derive(serde::Serialize)]
3685#[derive(Clone, PartialEq, ::prost::Message)]
3686pub struct DefineStmt {
3687    #[prost(enumeration = "ObjectType", tag = "1")]
3688    pub kind: i32,
3689    #[prost(bool, tag = "2")]
3690    pub oldstyle: bool,
3691    #[prost(message, repeated, tag = "3")]
3692    pub defnames: ::prost::alloc::vec::Vec<Node>,
3693    #[prost(message, repeated, tag = "4")]
3694    pub args: ::prost::alloc::vec::Vec<Node>,
3695    #[prost(message, repeated, tag = "5")]
3696    pub definition: ::prost::alloc::vec::Vec<Node>,
3697    #[prost(bool, tag = "6")]
3698    pub if_not_exists: bool,
3699    #[prost(bool, tag = "7")]
3700    pub replace: bool,
3701}
3702#[derive(serde::Serialize)]
3703#[derive(Clone, PartialEq, ::prost::Message)]
3704pub struct CreateDomainStmt {
3705    #[prost(message, repeated, tag = "1")]
3706    pub domainname: ::prost::alloc::vec::Vec<Node>,
3707    #[prost(message, optional, tag = "2")]
3708    pub type_name: ::core::option::Option<TypeName>,
3709    #[prost(message, optional, boxed, tag = "3")]
3710    pub coll_clause: ::core::option::Option<::prost::alloc::boxed::Box<CollateClause>>,
3711    #[prost(message, repeated, tag = "4")]
3712    pub constraints: ::prost::alloc::vec::Vec<Node>,
3713}
3714#[derive(serde::Serialize)]
3715#[derive(Clone, PartialEq, ::prost::Message)]
3716pub struct CreateOpClassStmt {
3717    #[prost(message, repeated, tag = "1")]
3718    pub opclassname: ::prost::alloc::vec::Vec<Node>,
3719    #[prost(message, repeated, tag = "2")]
3720    pub opfamilyname: ::prost::alloc::vec::Vec<Node>,
3721    #[prost(string, tag = "3")]
3722    pub amname: ::prost::alloc::string::String,
3723    #[prost(message, optional, tag = "4")]
3724    pub datatype: ::core::option::Option<TypeName>,
3725    #[prost(message, repeated, tag = "5")]
3726    pub items: ::prost::alloc::vec::Vec<Node>,
3727    #[prost(bool, tag = "6")]
3728    pub is_default: bool,
3729}
3730#[derive(serde::Serialize)]
3731#[derive(Clone, PartialEq, ::prost::Message)]
3732pub struct CreateOpClassItem {
3733    #[prost(int32, tag = "1")]
3734    pub itemtype: i32,
3735    #[prost(message, optional, tag = "2")]
3736    pub name: ::core::option::Option<ObjectWithArgs>,
3737    #[prost(int32, tag = "3")]
3738    pub number: i32,
3739    #[prost(message, repeated, tag = "4")]
3740    pub order_family: ::prost::alloc::vec::Vec<Node>,
3741    #[prost(message, repeated, tag = "5")]
3742    pub class_args: ::prost::alloc::vec::Vec<Node>,
3743    #[prost(message, optional, tag = "6")]
3744    pub storedtype: ::core::option::Option<TypeName>,
3745}
3746#[derive(serde::Serialize)]
3747#[derive(Clone, PartialEq, ::prost::Message)]
3748pub struct CreateOpFamilyStmt {
3749    #[prost(message, repeated, tag = "1")]
3750    pub opfamilyname: ::prost::alloc::vec::Vec<Node>,
3751    #[prost(string, tag = "2")]
3752    pub amname: ::prost::alloc::string::String,
3753}
3754#[derive(serde::Serialize)]
3755#[derive(Clone, PartialEq, ::prost::Message)]
3756pub struct AlterOpFamilyStmt {
3757    #[prost(message, repeated, tag = "1")]
3758    pub opfamilyname: ::prost::alloc::vec::Vec<Node>,
3759    #[prost(string, tag = "2")]
3760    pub amname: ::prost::alloc::string::String,
3761    #[prost(bool, tag = "3")]
3762    pub is_drop: bool,
3763    #[prost(message, repeated, tag = "4")]
3764    pub items: ::prost::alloc::vec::Vec<Node>,
3765}
3766#[derive(serde::Serialize)]
3767#[derive(Clone, PartialEq, ::prost::Message)]
3768pub struct DropStmt {
3769    #[prost(message, repeated, tag = "1")]
3770    pub objects: ::prost::alloc::vec::Vec<Node>,
3771    #[prost(enumeration = "ObjectType", tag = "2")]
3772    pub remove_type: i32,
3773    #[prost(enumeration = "DropBehavior", tag = "3")]
3774    pub behavior: i32,
3775    #[prost(bool, tag = "4")]
3776    pub missing_ok: bool,
3777    #[prost(bool, tag = "5")]
3778    pub concurrent: bool,
3779}
3780#[derive(serde::Serialize)]
3781#[derive(Clone, PartialEq, ::prost::Message)]
3782pub struct TruncateStmt {
3783    #[prost(message, repeated, tag = "1")]
3784    pub relations: ::prost::alloc::vec::Vec<Node>,
3785    #[prost(bool, tag = "2")]
3786    pub restart_seqs: bool,
3787    #[prost(enumeration = "DropBehavior", tag = "3")]
3788    pub behavior: i32,
3789}
3790#[derive(serde::Serialize)]
3791#[derive(Clone, PartialEq, ::prost::Message)]
3792pub struct CommentStmt {
3793    #[prost(enumeration = "ObjectType", tag = "1")]
3794    pub objtype: i32,
3795    #[prost(message, optional, boxed, tag = "2")]
3796    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3797    #[prost(string, tag = "3")]
3798    pub comment: ::prost::alloc::string::String,
3799}
3800#[derive(serde::Serialize)]
3801#[derive(Clone, PartialEq, ::prost::Message)]
3802pub struct SecLabelStmt {
3803    #[prost(enumeration = "ObjectType", tag = "1")]
3804    pub objtype: i32,
3805    #[prost(message, optional, boxed, tag = "2")]
3806    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3807    #[prost(string, tag = "3")]
3808    pub provider: ::prost::alloc::string::String,
3809    #[prost(string, tag = "4")]
3810    pub label: ::prost::alloc::string::String,
3811}
3812#[derive(serde::Serialize)]
3813#[derive(Clone, PartialEq, ::prost::Message)]
3814pub struct DeclareCursorStmt {
3815    #[prost(string, tag = "1")]
3816    pub portalname: ::prost::alloc::string::String,
3817    #[prost(int32, tag = "2")]
3818    pub options: i32,
3819    #[prost(message, optional, boxed, tag = "3")]
3820    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3821}
3822#[derive(serde::Serialize)]
3823#[derive(Clone, PartialEq, ::prost::Message)]
3824pub struct ClosePortalStmt {
3825    #[prost(string, tag = "1")]
3826    pub portalname: ::prost::alloc::string::String,
3827}
3828#[derive(serde::Serialize)]
3829#[derive(Clone, PartialEq, ::prost::Message)]
3830pub struct FetchStmt {
3831    #[prost(enumeration = "FetchDirection", tag = "1")]
3832    pub direction: i32,
3833    #[prost(int64, tag = "2")]
3834    pub how_many: i64,
3835    #[prost(string, tag = "3")]
3836    pub portalname: ::prost::alloc::string::String,
3837    #[prost(bool, tag = "4")]
3838    pub ismove: bool,
3839}
3840#[derive(serde::Serialize)]
3841#[derive(Clone, PartialEq, ::prost::Message)]
3842pub struct IndexStmt {
3843    #[prost(string, tag = "1")]
3844    pub idxname: ::prost::alloc::string::String,
3845    #[prost(message, optional, tag = "2")]
3846    pub relation: ::core::option::Option<RangeVar>,
3847    #[prost(string, tag = "3")]
3848    pub access_method: ::prost::alloc::string::String,
3849    #[prost(string, tag = "4")]
3850    pub table_space: ::prost::alloc::string::String,
3851    #[prost(message, repeated, tag = "5")]
3852    pub index_params: ::prost::alloc::vec::Vec<Node>,
3853    #[prost(message, repeated, tag = "6")]
3854    pub index_including_params: ::prost::alloc::vec::Vec<Node>,
3855    #[prost(message, repeated, tag = "7")]
3856    pub options: ::prost::alloc::vec::Vec<Node>,
3857    #[prost(message, optional, boxed, tag = "8")]
3858    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3859    #[prost(message, repeated, tag = "9")]
3860    pub exclude_op_names: ::prost::alloc::vec::Vec<Node>,
3861    #[prost(string, tag = "10")]
3862    pub idxcomment: ::prost::alloc::string::String,
3863    #[prost(uint32, tag = "11")]
3864    pub index_oid: u32,
3865    #[prost(uint32, tag = "12")]
3866    pub old_number: u32,
3867    #[prost(uint32, tag = "13")]
3868    pub old_create_subid: u32,
3869    #[prost(uint32, tag = "14")]
3870    pub old_first_relfilelocator_subid: u32,
3871    #[prost(bool, tag = "15")]
3872    pub unique: bool,
3873    #[prost(bool, tag = "16")]
3874    pub nulls_not_distinct: bool,
3875    #[prost(bool, tag = "17")]
3876    pub primary: bool,
3877    #[prost(bool, tag = "18")]
3878    pub isconstraint: bool,
3879    #[prost(bool, tag = "19")]
3880    pub iswithoutoverlaps: bool,
3881    #[prost(bool, tag = "20")]
3882    pub deferrable: bool,
3883    #[prost(bool, tag = "21")]
3884    pub initdeferred: bool,
3885    #[prost(bool, tag = "22")]
3886    pub transformed: bool,
3887    #[prost(bool, tag = "23")]
3888    pub concurrent: bool,
3889    #[prost(bool, tag = "24")]
3890    pub if_not_exists: bool,
3891    #[prost(bool, tag = "25")]
3892    pub reset_default_tblspc: bool,
3893}
3894#[derive(serde::Serialize)]
3895#[derive(Clone, PartialEq, ::prost::Message)]
3896pub struct CreateStatsStmt {
3897    #[prost(message, repeated, tag = "1")]
3898    pub defnames: ::prost::alloc::vec::Vec<Node>,
3899    #[prost(message, repeated, tag = "2")]
3900    pub stat_types: ::prost::alloc::vec::Vec<Node>,
3901    #[prost(message, repeated, tag = "3")]
3902    pub exprs: ::prost::alloc::vec::Vec<Node>,
3903    #[prost(message, repeated, tag = "4")]
3904    pub relations: ::prost::alloc::vec::Vec<Node>,
3905    #[prost(string, tag = "5")]
3906    pub stxcomment: ::prost::alloc::string::String,
3907    #[prost(bool, tag = "6")]
3908    pub transformed: bool,
3909    #[prost(bool, tag = "7")]
3910    pub if_not_exists: bool,
3911}
3912#[derive(serde::Serialize)]
3913#[derive(Clone, PartialEq, ::prost::Message)]
3914pub struct StatsElem {
3915    #[prost(string, tag = "1")]
3916    pub name: ::prost::alloc::string::String,
3917    #[prost(message, optional, boxed, tag = "2")]
3918    pub expr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3919}
3920#[derive(serde::Serialize)]
3921#[derive(Clone, PartialEq, ::prost::Message)]
3922pub struct AlterStatsStmt {
3923    #[prost(message, repeated, tag = "1")]
3924    pub defnames: ::prost::alloc::vec::Vec<Node>,
3925    #[prost(message, optional, boxed, tag = "2")]
3926    pub stxstattarget: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3927    #[prost(bool, tag = "3")]
3928    pub missing_ok: bool,
3929}
3930#[derive(serde::Serialize)]
3931#[derive(Clone, PartialEq, ::prost::Message)]
3932pub struct CreateFunctionStmt {
3933    #[prost(bool, tag = "1")]
3934    pub is_procedure: bool,
3935    #[prost(bool, tag = "2")]
3936    pub replace: bool,
3937    #[prost(message, repeated, tag = "3")]
3938    pub funcname: ::prost::alloc::vec::Vec<Node>,
3939    #[prost(message, repeated, tag = "4")]
3940    pub parameters: ::prost::alloc::vec::Vec<Node>,
3941    #[prost(message, optional, tag = "5")]
3942    pub return_type: ::core::option::Option<TypeName>,
3943    #[prost(message, repeated, tag = "6")]
3944    pub options: ::prost::alloc::vec::Vec<Node>,
3945    #[prost(message, optional, boxed, tag = "7")]
3946    pub sql_body: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3947}
3948#[derive(serde::Serialize)]
3949#[derive(Clone, PartialEq, ::prost::Message)]
3950pub struct FunctionParameter {
3951    #[prost(string, tag = "1")]
3952    pub name: ::prost::alloc::string::String,
3953    #[prost(message, optional, tag = "2")]
3954    pub arg_type: ::core::option::Option<TypeName>,
3955    #[prost(enumeration = "FunctionParameterMode", tag = "3")]
3956    pub mode: i32,
3957    #[prost(message, optional, boxed, tag = "4")]
3958    pub defexpr: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
3959    #[prost(int32, tag = "5")]
3960    pub location: i32,
3961}
3962#[derive(serde::Serialize)]
3963#[derive(Clone, PartialEq, ::prost::Message)]
3964pub struct AlterFunctionStmt {
3965    #[prost(enumeration = "ObjectType", tag = "1")]
3966    pub objtype: i32,
3967    #[prost(message, optional, tag = "2")]
3968    pub func: ::core::option::Option<ObjectWithArgs>,
3969    #[prost(message, repeated, tag = "3")]
3970    pub actions: ::prost::alloc::vec::Vec<Node>,
3971}
3972#[derive(serde::Serialize)]
3973#[derive(Clone, PartialEq, ::prost::Message)]
3974pub struct DoStmt {
3975    #[prost(message, repeated, tag = "1")]
3976    pub args: ::prost::alloc::vec::Vec<Node>,
3977}
3978#[derive(serde::Serialize)]
3979#[derive(Clone, PartialEq, ::prost::Message)]
3980pub struct InlineCodeBlock {
3981    #[prost(string, tag = "1")]
3982    pub source_text: ::prost::alloc::string::String,
3983    #[prost(uint32, tag = "2")]
3984    pub lang_oid: u32,
3985    #[prost(bool, tag = "3")]
3986    pub lang_is_trusted: bool,
3987    #[prost(bool, tag = "4")]
3988    pub atomic: bool,
3989}
3990#[derive(serde::Serialize)]
3991#[derive(Clone, PartialEq, ::prost::Message)]
3992pub struct CallStmt {
3993    #[prost(message, optional, boxed, tag = "1")]
3994    pub funccall: ::core::option::Option<::prost::alloc::boxed::Box<FuncCall>>,
3995    #[prost(message, optional, boxed, tag = "2")]
3996    pub funcexpr: ::core::option::Option<::prost::alloc::boxed::Box<FuncExpr>>,
3997    #[prost(message, repeated, tag = "3")]
3998    pub outargs: ::prost::alloc::vec::Vec<Node>,
3999}
4000#[derive(serde::Serialize)]
4001#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4002pub struct CallContext {
4003    #[prost(bool, tag = "1")]
4004    pub atomic: bool,
4005}
4006#[derive(serde::Serialize)]
4007#[derive(Clone, PartialEq, ::prost::Message)]
4008pub struct RenameStmt {
4009    #[prost(enumeration = "ObjectType", tag = "1")]
4010    pub rename_type: i32,
4011    #[prost(enumeration = "ObjectType", tag = "2")]
4012    pub relation_type: i32,
4013    #[prost(message, optional, tag = "3")]
4014    pub relation: ::core::option::Option<RangeVar>,
4015    #[prost(message, optional, boxed, tag = "4")]
4016    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
4017    #[prost(string, tag = "5")]
4018    pub subname: ::prost::alloc::string::String,
4019    #[prost(string, tag = "6")]
4020    pub newname: ::prost::alloc::string::String,
4021    #[prost(enumeration = "DropBehavior", tag = "7")]
4022    pub behavior: i32,
4023    #[prost(bool, tag = "8")]
4024    pub missing_ok: bool,
4025}
4026#[derive(serde::Serialize)]
4027#[derive(Clone, PartialEq, ::prost::Message)]
4028pub struct AlterObjectDependsStmt {
4029    #[prost(enumeration = "ObjectType", tag = "1")]
4030    pub object_type: i32,
4031    #[prost(message, optional, tag = "2")]
4032    pub relation: ::core::option::Option<RangeVar>,
4033    #[prost(message, optional, boxed, tag = "3")]
4034    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
4035    #[prost(message, optional, tag = "4")]
4036    pub extname: ::core::option::Option<String>,
4037    #[prost(bool, tag = "5")]
4038    pub remove: bool,
4039}
4040#[derive(serde::Serialize)]
4041#[derive(Clone, PartialEq, ::prost::Message)]
4042pub struct AlterObjectSchemaStmt {
4043    #[prost(enumeration = "ObjectType", tag = "1")]
4044    pub object_type: i32,
4045    #[prost(message, optional, tag = "2")]
4046    pub relation: ::core::option::Option<RangeVar>,
4047    #[prost(message, optional, boxed, tag = "3")]
4048    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
4049    #[prost(string, tag = "4")]
4050    pub newschema: ::prost::alloc::string::String,
4051    #[prost(bool, tag = "5")]
4052    pub missing_ok: bool,
4053}
4054#[derive(serde::Serialize)]
4055#[derive(Clone, PartialEq, ::prost::Message)]
4056pub struct AlterOwnerStmt {
4057    #[prost(enumeration = "ObjectType", tag = "1")]
4058    pub object_type: i32,
4059    #[prost(message, optional, tag = "2")]
4060    pub relation: ::core::option::Option<RangeVar>,
4061    #[prost(message, optional, boxed, tag = "3")]
4062    pub object: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
4063    #[prost(message, optional, tag = "4")]
4064    pub newowner: ::core::option::Option<RoleSpec>,
4065}
4066#[derive(serde::Serialize)]
4067#[derive(Clone, PartialEq, ::prost::Message)]
4068pub struct AlterOperatorStmt {
4069    #[prost(message, optional, tag = "1")]
4070    pub opername: ::core::option::Option<ObjectWithArgs>,
4071    #[prost(message, repeated, tag = "2")]
4072    pub options: ::prost::alloc::vec::Vec<Node>,
4073}
4074#[derive(serde::Serialize)]
4075#[derive(Clone, PartialEq, ::prost::Message)]
4076pub struct AlterTypeStmt {
4077    #[prost(message, repeated, tag = "1")]
4078    pub type_name: ::prost::alloc::vec::Vec<Node>,
4079    #[prost(message, repeated, tag = "2")]
4080    pub options: ::prost::alloc::vec::Vec<Node>,
4081}
4082#[derive(serde::Serialize)]
4083#[derive(Clone, PartialEq, ::prost::Message)]
4084pub struct RuleStmt {
4085    #[prost(message, optional, tag = "1")]
4086    pub relation: ::core::option::Option<RangeVar>,
4087    #[prost(string, tag = "2")]
4088    pub rulename: ::prost::alloc::string::String,
4089    #[prost(message, optional, boxed, tag = "3")]
4090    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
4091    #[prost(enumeration = "CmdType", tag = "4")]
4092    pub event: i32,
4093    #[prost(bool, tag = "5")]
4094    pub instead: bool,
4095    #[prost(message, repeated, tag = "6")]
4096    pub actions: ::prost::alloc::vec::Vec<Node>,
4097    #[prost(bool, tag = "7")]
4098    pub replace: bool,
4099}
4100#[derive(serde::Serialize)]
4101#[derive(Clone, PartialEq, ::prost::Message)]
4102pub struct NotifyStmt {
4103    #[prost(string, tag = "1")]
4104    pub conditionname: ::prost::alloc::string::String,
4105    #[prost(string, tag = "2")]
4106    pub payload: ::prost::alloc::string::String,
4107}
4108#[derive(serde::Serialize)]
4109#[derive(Clone, PartialEq, ::prost::Message)]
4110pub struct ListenStmt {
4111    #[prost(string, tag = "1")]
4112    pub conditionname: ::prost::alloc::string::String,
4113}
4114#[derive(serde::Serialize)]
4115#[derive(Clone, PartialEq, ::prost::Message)]
4116pub struct UnlistenStmt {
4117    #[prost(string, tag = "1")]
4118    pub conditionname: ::prost::alloc::string::String,
4119}
4120#[derive(serde::Serialize)]
4121#[derive(Clone, PartialEq, ::prost::Message)]
4122pub struct TransactionStmt {
4123    #[prost(enumeration = "TransactionStmtKind", tag = "1")]
4124    pub kind: i32,
4125    #[prost(message, repeated, tag = "2")]
4126    pub options: ::prost::alloc::vec::Vec<Node>,
4127    #[prost(string, tag = "3")]
4128    pub savepoint_name: ::prost::alloc::string::String,
4129    #[prost(string, tag = "4")]
4130    pub gid: ::prost::alloc::string::String,
4131    #[prost(bool, tag = "5")]
4132    pub chain: bool,
4133    #[prost(int32, tag = "6")]
4134    pub location: i32,
4135}
4136#[derive(serde::Serialize)]
4137#[derive(Clone, PartialEq, ::prost::Message)]
4138pub struct CompositeTypeStmt {
4139    #[prost(message, optional, tag = "1")]
4140    pub typevar: ::core::option::Option<RangeVar>,
4141    #[prost(message, repeated, tag = "2")]
4142    pub coldeflist: ::prost::alloc::vec::Vec<Node>,
4143}
4144#[derive(serde::Serialize)]
4145#[derive(Clone, PartialEq, ::prost::Message)]
4146pub struct CreateEnumStmt {
4147    #[prost(message, repeated, tag = "1")]
4148    pub type_name: ::prost::alloc::vec::Vec<Node>,
4149    #[prost(message, repeated, tag = "2")]
4150    pub vals: ::prost::alloc::vec::Vec<Node>,
4151}
4152#[derive(serde::Serialize)]
4153#[derive(Clone, PartialEq, ::prost::Message)]
4154pub struct CreateRangeStmt {
4155    #[prost(message, repeated, tag = "1")]
4156    pub type_name: ::prost::alloc::vec::Vec<Node>,
4157    #[prost(message, repeated, tag = "2")]
4158    pub params: ::prost::alloc::vec::Vec<Node>,
4159}
4160#[derive(serde::Serialize)]
4161#[derive(Clone, PartialEq, ::prost::Message)]
4162pub struct AlterEnumStmt {
4163    #[prost(message, repeated, tag = "1")]
4164    pub type_name: ::prost::alloc::vec::Vec<Node>,
4165    #[prost(string, tag = "2")]
4166    pub old_val: ::prost::alloc::string::String,
4167    #[prost(string, tag = "3")]
4168    pub new_val: ::prost::alloc::string::String,
4169    #[prost(string, tag = "4")]
4170    pub new_val_neighbor: ::prost::alloc::string::String,
4171    #[prost(bool, tag = "5")]
4172    pub new_val_is_after: bool,
4173    #[prost(bool, tag = "6")]
4174    pub skip_if_new_val_exists: bool,
4175}
4176#[derive(serde::Serialize)]
4177#[derive(Clone, PartialEq, ::prost::Message)]
4178pub struct ViewStmt {
4179    #[prost(message, optional, tag = "1")]
4180    pub view: ::core::option::Option<RangeVar>,
4181    #[prost(message, repeated, tag = "2")]
4182    pub aliases: ::prost::alloc::vec::Vec<Node>,
4183    #[prost(message, optional, boxed, tag = "3")]
4184    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
4185    #[prost(bool, tag = "4")]
4186    pub replace: bool,
4187    #[prost(message, repeated, tag = "5")]
4188    pub options: ::prost::alloc::vec::Vec<Node>,
4189    #[prost(enumeration = "ViewCheckOption", tag = "6")]
4190    pub with_check_option: i32,
4191}
4192#[derive(serde::Serialize)]
4193#[derive(Clone, PartialEq, ::prost::Message)]
4194pub struct LoadStmt {
4195    #[prost(string, tag = "1")]
4196    pub filename: ::prost::alloc::string::String,
4197}
4198#[derive(serde::Serialize)]
4199#[derive(Clone, PartialEq, ::prost::Message)]
4200pub struct CreatedbStmt {
4201    #[prost(string, tag = "1")]
4202    pub dbname: ::prost::alloc::string::String,
4203    #[prost(message, repeated, tag = "2")]
4204    pub options: ::prost::alloc::vec::Vec<Node>,
4205}
4206#[derive(serde::Serialize)]
4207#[derive(Clone, PartialEq, ::prost::Message)]
4208pub struct AlterDatabaseStmt {
4209    #[prost(string, tag = "1")]
4210    pub dbname: ::prost::alloc::string::String,
4211    #[prost(message, repeated, tag = "2")]
4212    pub options: ::prost::alloc::vec::Vec<Node>,
4213}
4214#[derive(serde::Serialize)]
4215#[derive(Clone, PartialEq, ::prost::Message)]
4216pub struct AlterDatabaseRefreshCollStmt {
4217    #[prost(string, tag = "1")]
4218    pub dbname: ::prost::alloc::string::String,
4219}
4220#[derive(serde::Serialize)]
4221#[derive(Clone, PartialEq, ::prost::Message)]
4222pub struct AlterDatabaseSetStmt {
4223    #[prost(string, tag = "1")]
4224    pub dbname: ::prost::alloc::string::String,
4225    #[prost(message, optional, tag = "2")]
4226    pub setstmt: ::core::option::Option<VariableSetStmt>,
4227}
4228#[derive(serde::Serialize)]
4229#[derive(Clone, PartialEq, ::prost::Message)]
4230pub struct DropdbStmt {
4231    #[prost(string, tag = "1")]
4232    pub dbname: ::prost::alloc::string::String,
4233    #[prost(bool, tag = "2")]
4234    pub missing_ok: bool,
4235    #[prost(message, repeated, tag = "3")]
4236    pub options: ::prost::alloc::vec::Vec<Node>,
4237}
4238#[derive(serde::Serialize)]
4239#[derive(Clone, PartialEq, ::prost::Message)]
4240pub struct AlterSystemStmt {
4241    #[prost(message, optional, tag = "1")]
4242    pub setstmt: ::core::option::Option<VariableSetStmt>,
4243}
4244#[derive(serde::Serialize)]
4245#[derive(Clone, PartialEq, ::prost::Message)]
4246pub struct ClusterStmt {
4247    #[prost(message, optional, tag = "1")]
4248    pub relation: ::core::option::Option<RangeVar>,
4249    #[prost(string, tag = "2")]
4250    pub indexname: ::prost::alloc::string::String,
4251    #[prost(message, repeated, tag = "3")]
4252    pub params: ::prost::alloc::vec::Vec<Node>,
4253}
4254#[derive(serde::Serialize)]
4255#[derive(Clone, PartialEq, ::prost::Message)]
4256pub struct VacuumStmt {
4257    #[prost(message, repeated, tag = "1")]
4258    pub options: ::prost::alloc::vec::Vec<Node>,
4259    #[prost(message, repeated, tag = "2")]
4260    pub rels: ::prost::alloc::vec::Vec<Node>,
4261    #[prost(bool, tag = "3")]
4262    pub is_vacuumcmd: bool,
4263}
4264#[derive(serde::Serialize)]
4265#[derive(Clone, PartialEq, ::prost::Message)]
4266pub struct VacuumRelation {
4267    #[prost(message, optional, tag = "1")]
4268    pub relation: ::core::option::Option<RangeVar>,
4269    #[prost(uint32, tag = "2")]
4270    pub oid: u32,
4271    #[prost(message, repeated, tag = "3")]
4272    pub va_cols: ::prost::alloc::vec::Vec<Node>,
4273}
4274#[derive(serde::Serialize)]
4275#[derive(Clone, PartialEq, ::prost::Message)]
4276pub struct ExplainStmt {
4277    #[prost(message, optional, boxed, tag = "1")]
4278    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
4279    #[prost(message, repeated, tag = "2")]
4280    pub options: ::prost::alloc::vec::Vec<Node>,
4281}
4282#[derive(serde::Serialize)]
4283#[derive(Clone, PartialEq, ::prost::Message)]
4284pub struct CreateTableAsStmt {
4285    #[prost(message, optional, boxed, tag = "1")]
4286    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
4287    #[prost(message, optional, boxed, tag = "2")]
4288    pub into: ::core::option::Option<::prost::alloc::boxed::Box<IntoClause>>,
4289    #[prost(enumeration = "ObjectType", tag = "3")]
4290    pub objtype: i32,
4291    #[prost(bool, tag = "4")]
4292    pub is_select_into: bool,
4293    #[prost(bool, tag = "5")]
4294    pub if_not_exists: bool,
4295}
4296#[derive(serde::Serialize)]
4297#[derive(Clone, PartialEq, ::prost::Message)]
4298pub struct RefreshMatViewStmt {
4299    #[prost(bool, tag = "1")]
4300    pub concurrent: bool,
4301    #[prost(bool, tag = "2")]
4302    pub skip_data: bool,
4303    #[prost(message, optional, tag = "3")]
4304    pub relation: ::core::option::Option<RangeVar>,
4305}
4306#[derive(serde::Serialize)]
4307#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4308pub struct CheckPointStmt {}
4309#[derive(serde::Serialize)]
4310#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4311pub struct DiscardStmt {
4312    #[prost(enumeration = "DiscardMode", tag = "1")]
4313    pub target: i32,
4314}
4315#[derive(serde::Serialize)]
4316#[derive(Clone, PartialEq, ::prost::Message)]
4317pub struct LockStmt {
4318    #[prost(message, repeated, tag = "1")]
4319    pub relations: ::prost::alloc::vec::Vec<Node>,
4320    #[prost(int32, tag = "2")]
4321    pub mode: i32,
4322    #[prost(bool, tag = "3")]
4323    pub nowait: bool,
4324}
4325#[derive(serde::Serialize)]
4326#[derive(Clone, PartialEq, ::prost::Message)]
4327pub struct ConstraintsSetStmt {
4328    #[prost(message, repeated, tag = "1")]
4329    pub constraints: ::prost::alloc::vec::Vec<Node>,
4330    #[prost(bool, tag = "2")]
4331    pub deferred: bool,
4332}
4333#[derive(serde::Serialize)]
4334#[derive(Clone, PartialEq, ::prost::Message)]
4335pub struct ReindexStmt {
4336    #[prost(enumeration = "ReindexObjectType", tag = "1")]
4337    pub kind: i32,
4338    #[prost(message, optional, tag = "2")]
4339    pub relation: ::core::option::Option<RangeVar>,
4340    #[prost(string, tag = "3")]
4341    pub name: ::prost::alloc::string::String,
4342    #[prost(message, repeated, tag = "4")]
4343    pub params: ::prost::alloc::vec::Vec<Node>,
4344}
4345#[derive(serde::Serialize)]
4346#[derive(Clone, PartialEq, ::prost::Message)]
4347pub struct CreateConversionStmt {
4348    #[prost(message, repeated, tag = "1")]
4349    pub conversion_name: ::prost::alloc::vec::Vec<Node>,
4350    #[prost(string, tag = "2")]
4351    pub for_encoding_name: ::prost::alloc::string::String,
4352    #[prost(string, tag = "3")]
4353    pub to_encoding_name: ::prost::alloc::string::String,
4354    #[prost(message, repeated, tag = "4")]
4355    pub func_name: ::prost::alloc::vec::Vec<Node>,
4356    #[prost(bool, tag = "5")]
4357    pub def: bool,
4358}
4359#[derive(serde::Serialize)]
4360#[derive(Clone, PartialEq, ::prost::Message)]
4361pub struct CreateCastStmt {
4362    #[prost(message, optional, tag = "1")]
4363    pub sourcetype: ::core::option::Option<TypeName>,
4364    #[prost(message, optional, tag = "2")]
4365    pub targettype: ::core::option::Option<TypeName>,
4366    #[prost(message, optional, tag = "3")]
4367    pub func: ::core::option::Option<ObjectWithArgs>,
4368    #[prost(enumeration = "CoercionContext", tag = "4")]
4369    pub context: i32,
4370    #[prost(bool, tag = "5")]
4371    pub inout: bool,
4372}
4373#[derive(serde::Serialize)]
4374#[derive(Clone, PartialEq, ::prost::Message)]
4375pub struct CreateTransformStmt {
4376    #[prost(bool, tag = "1")]
4377    pub replace: bool,
4378    #[prost(message, optional, tag = "2")]
4379    pub type_name: ::core::option::Option<TypeName>,
4380    #[prost(string, tag = "3")]
4381    pub lang: ::prost::alloc::string::String,
4382    #[prost(message, optional, tag = "4")]
4383    pub fromsql: ::core::option::Option<ObjectWithArgs>,
4384    #[prost(message, optional, tag = "5")]
4385    pub tosql: ::core::option::Option<ObjectWithArgs>,
4386}
4387#[derive(serde::Serialize)]
4388#[derive(Clone, PartialEq, ::prost::Message)]
4389pub struct PrepareStmt {
4390    #[prost(string, tag = "1")]
4391    pub name: ::prost::alloc::string::String,
4392    #[prost(message, repeated, tag = "2")]
4393    pub argtypes: ::prost::alloc::vec::Vec<Node>,
4394    #[prost(message, optional, boxed, tag = "3")]
4395    pub query: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
4396}
4397#[derive(serde::Serialize)]
4398#[derive(Clone, PartialEq, ::prost::Message)]
4399pub struct ExecuteStmt {
4400    #[prost(string, tag = "1")]
4401    pub name: ::prost::alloc::string::String,
4402    #[prost(message, repeated, tag = "2")]
4403    pub params: ::prost::alloc::vec::Vec<Node>,
4404}
4405#[derive(serde::Serialize)]
4406#[derive(Clone, PartialEq, ::prost::Message)]
4407pub struct DeallocateStmt {
4408    #[prost(string, tag = "1")]
4409    pub name: ::prost::alloc::string::String,
4410    #[prost(bool, tag = "2")]
4411    pub isall: bool,
4412    #[prost(int32, tag = "3")]
4413    pub location: i32,
4414}
4415#[derive(serde::Serialize)]
4416#[derive(Clone, PartialEq, ::prost::Message)]
4417pub struct DropOwnedStmt {
4418    #[prost(message, repeated, tag = "1")]
4419    pub roles: ::prost::alloc::vec::Vec<Node>,
4420    #[prost(enumeration = "DropBehavior", tag = "2")]
4421    pub behavior: i32,
4422}
4423#[derive(serde::Serialize)]
4424#[derive(Clone, PartialEq, ::prost::Message)]
4425pub struct ReassignOwnedStmt {
4426    #[prost(message, repeated, tag = "1")]
4427    pub roles: ::prost::alloc::vec::Vec<Node>,
4428    #[prost(message, optional, tag = "2")]
4429    pub newrole: ::core::option::Option<RoleSpec>,
4430}
4431#[derive(serde::Serialize)]
4432#[derive(Clone, PartialEq, ::prost::Message)]
4433pub struct AlterTsDictionaryStmt {
4434    #[prost(message, repeated, tag = "1")]
4435    pub dictname: ::prost::alloc::vec::Vec<Node>,
4436    #[prost(message, repeated, tag = "2")]
4437    pub options: ::prost::alloc::vec::Vec<Node>,
4438}
4439#[derive(serde::Serialize)]
4440#[derive(Clone, PartialEq, ::prost::Message)]
4441pub struct AlterTsConfigurationStmt {
4442    #[prost(enumeration = "AlterTsConfigType", tag = "1")]
4443    pub kind: i32,
4444    #[prost(message, repeated, tag = "2")]
4445    pub cfgname: ::prost::alloc::vec::Vec<Node>,
4446    #[prost(message, repeated, tag = "3")]
4447    pub tokentype: ::prost::alloc::vec::Vec<Node>,
4448    #[prost(message, repeated, tag = "4")]
4449    pub dicts: ::prost::alloc::vec::Vec<Node>,
4450    #[prost(bool, tag = "5")]
4451    pub r#override: bool,
4452    #[prost(bool, tag = "6")]
4453    pub replace: bool,
4454    #[prost(bool, tag = "7")]
4455    pub missing_ok: bool,
4456}
4457#[derive(serde::Serialize)]
4458#[derive(Clone, PartialEq, ::prost::Message)]
4459pub struct PublicationTable {
4460    #[prost(message, optional, tag = "1")]
4461    pub relation: ::core::option::Option<RangeVar>,
4462    #[prost(message, optional, boxed, tag = "2")]
4463    pub where_clause: ::core::option::Option<::prost::alloc::boxed::Box<Node>>,
4464    #[prost(message, repeated, tag = "3")]
4465    pub columns: ::prost::alloc::vec::Vec<Node>,
4466}
4467#[derive(serde::Serialize)]
4468#[derive(Clone, PartialEq, ::prost::Message)]
4469pub struct PublicationObjSpec {
4470    #[prost(enumeration = "PublicationObjSpecType", tag = "1")]
4471    pub pubobjtype: i32,
4472    #[prost(string, tag = "2")]
4473    pub name: ::prost::alloc::string::String,
4474    #[prost(message, optional, boxed, tag = "3")]
4475    pub pubtable: ::core::option::Option<::prost::alloc::boxed::Box<PublicationTable>>,
4476    #[prost(int32, tag = "4")]
4477    pub location: i32,
4478}
4479#[derive(serde::Serialize)]
4480#[derive(Clone, PartialEq, ::prost::Message)]
4481pub struct CreatePublicationStmt {
4482    #[prost(string, tag = "1")]
4483    pub pubname: ::prost::alloc::string::String,
4484    #[prost(message, repeated, tag = "2")]
4485    pub options: ::prost::alloc::vec::Vec<Node>,
4486    #[prost(message, repeated, tag = "3")]
4487    pub pubobjects: ::prost::alloc::vec::Vec<Node>,
4488    #[prost(bool, tag = "4")]
4489    pub for_all_tables: bool,
4490}
4491#[derive(serde::Serialize)]
4492#[derive(Clone, PartialEq, ::prost::Message)]
4493pub struct AlterPublicationStmt {
4494    #[prost(string, tag = "1")]
4495    pub pubname: ::prost::alloc::string::String,
4496    #[prost(message, repeated, tag = "2")]
4497    pub options: ::prost::alloc::vec::Vec<Node>,
4498    #[prost(message, repeated, tag = "3")]
4499    pub pubobjects: ::prost::alloc::vec::Vec<Node>,
4500    #[prost(bool, tag = "4")]
4501    pub for_all_tables: bool,
4502    #[prost(enumeration = "AlterPublicationAction", tag = "5")]
4503    pub action: i32,
4504}
4505#[derive(serde::Serialize)]
4506#[derive(Clone, PartialEq, ::prost::Message)]
4507pub struct CreateSubscriptionStmt {
4508    #[prost(string, tag = "1")]
4509    pub subname: ::prost::alloc::string::String,
4510    #[prost(string, tag = "2")]
4511    pub conninfo: ::prost::alloc::string::String,
4512    #[prost(message, repeated, tag = "3")]
4513    pub publication: ::prost::alloc::vec::Vec<Node>,
4514    #[prost(message, repeated, tag = "4")]
4515    pub options: ::prost::alloc::vec::Vec<Node>,
4516}
4517#[derive(serde::Serialize)]
4518#[derive(Clone, PartialEq, ::prost::Message)]
4519pub struct AlterSubscriptionStmt {
4520    #[prost(enumeration = "AlterSubscriptionType", tag = "1")]
4521    pub kind: i32,
4522    #[prost(string, tag = "2")]
4523    pub subname: ::prost::alloc::string::String,
4524    #[prost(string, tag = "3")]
4525    pub conninfo: ::prost::alloc::string::String,
4526    #[prost(message, repeated, tag = "4")]
4527    pub publication: ::prost::alloc::vec::Vec<Node>,
4528    #[prost(message, repeated, tag = "5")]
4529    pub options: ::prost::alloc::vec::Vec<Node>,
4530}
4531#[derive(serde::Serialize)]
4532#[derive(Clone, PartialEq, ::prost::Message)]
4533pub struct DropSubscriptionStmt {
4534    #[prost(string, tag = "1")]
4535    pub subname: ::prost::alloc::string::String,
4536    #[prost(bool, tag = "2")]
4537    pub missing_ok: bool,
4538    #[prost(enumeration = "DropBehavior", tag = "3")]
4539    pub behavior: i32,
4540}
4541#[derive(serde::Serialize)]
4542#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4543pub struct ScanToken {
4544    #[prost(int32, tag = "1")]
4545    pub start: i32,
4546    #[prost(int32, tag = "2")]
4547    pub end: i32,
4548    #[prost(enumeration = "Token", tag = "4")]
4549    pub token: i32,
4550    #[prost(enumeration = "KeywordKind", tag = "5")]
4551    pub keyword_kind: i32,
4552}
4553/// protobuf-c doesn't support optional fields, so any optional strings
4554/// are just an empty string if it should be the equivalent of None/nil.
4555///
4556/// These fields have `// optional` at the end of the line.
4557///
4558/// Upstream issue: <https://github.com/protobuf-c/protobuf-c/issues/476>
4559#[derive(serde::Serialize)]
4560#[derive(Clone, PartialEq, ::prost::Message)]
4561pub struct SummaryResult {
4562    #[prost(message, repeated, tag = "1")]
4563    pub tables: ::prost::alloc::vec::Vec<summary_result::Table>,
4564    /// The value here is the table name (i.e. schema.table or just table).
4565    #[prost(map = "string, string", tag = "2")]
4566    pub aliases: ::std::collections::HashMap<
4567        ::prost::alloc::string::String,
4568        ::prost::alloc::string::String,
4569    >,
4570    #[prost(string, repeated, tag = "3")]
4571    pub cte_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4572    #[prost(message, repeated, tag = "4")]
4573    pub functions: ::prost::alloc::vec::Vec<summary_result::Function>,
4574    #[prost(message, repeated, tag = "5")]
4575    pub filter_columns: ::prost::alloc::vec::Vec<summary_result::FilterColumn>,
4576    #[prost(string, repeated, tag = "6")]
4577    pub statement_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4578    /// optional, empty if truncation limit is -1
4579    #[prost(string, tag = "7")]
4580    pub truncated_query: ::prost::alloc::string::String,
4581}
4582/// Nested message and enum types in `SummaryResult`.
4583pub mod summary_result {
4584    #[derive(serde::Serialize)]
4585    #[derive(Clone, PartialEq, ::prost::Message)]
4586    pub struct Table {
4587        #[prost(string, tag = "1")]
4588        pub name: ::prost::alloc::string::String,
4589        #[prost(string, tag = "2")]
4590        pub schema_name: ::prost::alloc::string::String,
4591        #[prost(string, tag = "3")]
4592        pub table_name: ::prost::alloc::string::String,
4593        #[prost(enumeration = "Context", tag = "4")]
4594        pub context: i32,
4595    }
4596    #[derive(serde::Serialize)]
4597    #[derive(Clone, PartialEq, ::prost::Message)]
4598    pub struct Function {
4599        #[prost(string, tag = "1")]
4600        pub name: ::prost::alloc::string::String,
4601        #[prost(string, tag = "2")]
4602        pub function_name: ::prost::alloc::string::String,
4603        /// optional
4604        #[prost(string, tag = "3")]
4605        pub schema_name: ::prost::alloc::string::String,
4606        #[prost(enumeration = "Context", tag = "4")]
4607        pub context: i32,
4608    }
4609    #[derive(serde::Serialize)]
4610    #[derive(Clone, PartialEq, ::prost::Message)]
4611    pub struct FilterColumn {
4612        /// optional
4613        #[prost(string, tag = "1")]
4614        pub schema_name: ::prost::alloc::string::String,
4615        /// optional
4616        #[prost(string, tag = "2")]
4617        pub table_name: ::prost::alloc::string::String,
4618        #[prost(string, tag = "3")]
4619        pub column: ::prost::alloc::string::String,
4620    }
4621    #[derive(serde::Serialize)]
4622    #[derive(
4623        Clone,
4624        Copy,
4625        Debug,
4626        PartialEq,
4627        Eq,
4628        Hash,
4629        PartialOrd,
4630        Ord,
4631        ::prost::Enumeration
4632    )]
4633    #[repr(i32)]
4634    pub enum Context {
4635        None = 0,
4636        Select = 1,
4637        Dml = 2,
4638        Ddl = 3,
4639        Call = 4,
4640    }
4641    impl Context {
4642        /// String value of the enum field names used in the ProtoBuf definition.
4643        ///
4644        /// The values are not transformed in any way and thus are considered stable
4645        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4646        pub fn as_str_name(&self) -> &'static str {
4647            match self {
4648                Self::None => "None",
4649                Self::Select => "Select",
4650                Self::Dml => "DML",
4651                Self::Ddl => "DDL",
4652                Self::Call => "Call",
4653            }
4654        }
4655        /// Creates an enum from field names used in the ProtoBuf definition.
4656        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4657            match value {
4658                "None" => Some(Self::None),
4659                "Select" => Some(Self::Select),
4660                "DML" => Some(Self::Dml),
4661                "DDL" => Some(Self::Ddl),
4662                "Call" => Some(Self::Call),
4663                _ => None,
4664            }
4665        }
4666    }
4667}
4668#[derive(serde::Serialize)]
4669#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4670#[repr(i32)]
4671pub enum QuerySource {
4672    Undefined = 0,
4673    QsrcOriginal = 1,
4674    QsrcParser = 2,
4675    QsrcInsteadRule = 3,
4676    QsrcQualInsteadRule = 4,
4677    QsrcNonInsteadRule = 5,
4678}
4679impl QuerySource {
4680    /// String value of the enum field names used in the ProtoBuf definition.
4681    ///
4682    /// The values are not transformed in any way and thus are considered stable
4683    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4684    pub fn as_str_name(&self) -> &'static str {
4685        match self {
4686            Self::Undefined => "QUERY_SOURCE_UNDEFINED",
4687            Self::QsrcOriginal => "QSRC_ORIGINAL",
4688            Self::QsrcParser => "QSRC_PARSER",
4689            Self::QsrcInsteadRule => "QSRC_INSTEAD_RULE",
4690            Self::QsrcQualInsteadRule => "QSRC_QUAL_INSTEAD_RULE",
4691            Self::QsrcNonInsteadRule => "QSRC_NON_INSTEAD_RULE",
4692        }
4693    }
4694    /// Creates an enum from field names used in the ProtoBuf definition.
4695    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4696        match value {
4697            "QUERY_SOURCE_UNDEFINED" => Some(Self::Undefined),
4698            "QSRC_ORIGINAL" => Some(Self::QsrcOriginal),
4699            "QSRC_PARSER" => Some(Self::QsrcParser),
4700            "QSRC_INSTEAD_RULE" => Some(Self::QsrcInsteadRule),
4701            "QSRC_QUAL_INSTEAD_RULE" => Some(Self::QsrcQualInsteadRule),
4702            "QSRC_NON_INSTEAD_RULE" => Some(Self::QsrcNonInsteadRule),
4703            _ => None,
4704        }
4705    }
4706}
4707#[derive(serde::Serialize)]
4708#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4709#[repr(i32)]
4710pub enum SortByDir {
4711    Undefined = 0,
4712    SortbyDefault = 1,
4713    SortbyAsc = 2,
4714    SortbyDesc = 3,
4715    SortbyUsing = 4,
4716}
4717impl SortByDir {
4718    /// String value of the enum field names used in the ProtoBuf definition.
4719    ///
4720    /// The values are not transformed in any way and thus are considered stable
4721    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4722    pub fn as_str_name(&self) -> &'static str {
4723        match self {
4724            Self::Undefined => "SORT_BY_DIR_UNDEFINED",
4725            Self::SortbyDefault => "SORTBY_DEFAULT",
4726            Self::SortbyAsc => "SORTBY_ASC",
4727            Self::SortbyDesc => "SORTBY_DESC",
4728            Self::SortbyUsing => "SORTBY_USING",
4729        }
4730    }
4731    /// Creates an enum from field names used in the ProtoBuf definition.
4732    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4733        match value {
4734            "SORT_BY_DIR_UNDEFINED" => Some(Self::Undefined),
4735            "SORTBY_DEFAULT" => Some(Self::SortbyDefault),
4736            "SORTBY_ASC" => Some(Self::SortbyAsc),
4737            "SORTBY_DESC" => Some(Self::SortbyDesc),
4738            "SORTBY_USING" => Some(Self::SortbyUsing),
4739            _ => None,
4740        }
4741    }
4742}
4743#[derive(serde::Serialize)]
4744#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4745#[repr(i32)]
4746pub enum SortByNulls {
4747    Undefined = 0,
4748    SortbyNullsDefault = 1,
4749    SortbyNullsFirst = 2,
4750    SortbyNullsLast = 3,
4751}
4752impl SortByNulls {
4753    /// String value of the enum field names used in the ProtoBuf definition.
4754    ///
4755    /// The values are not transformed in any way and thus are considered stable
4756    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4757    pub fn as_str_name(&self) -> &'static str {
4758        match self {
4759            Self::Undefined => "SORT_BY_NULLS_UNDEFINED",
4760            Self::SortbyNullsDefault => "SORTBY_NULLS_DEFAULT",
4761            Self::SortbyNullsFirst => "SORTBY_NULLS_FIRST",
4762            Self::SortbyNullsLast => "SORTBY_NULLS_LAST",
4763        }
4764    }
4765    /// Creates an enum from field names used in the ProtoBuf definition.
4766    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4767        match value {
4768            "SORT_BY_NULLS_UNDEFINED" => Some(Self::Undefined),
4769            "SORTBY_NULLS_DEFAULT" => Some(Self::SortbyNullsDefault),
4770            "SORTBY_NULLS_FIRST" => Some(Self::SortbyNullsFirst),
4771            "SORTBY_NULLS_LAST" => Some(Self::SortbyNullsLast),
4772            _ => None,
4773        }
4774    }
4775}
4776#[derive(serde::Serialize)]
4777#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4778#[repr(i32)]
4779pub enum SetQuantifier {
4780    Undefined = 0,
4781    Default = 1,
4782    All = 2,
4783    Distinct = 3,
4784}
4785impl SetQuantifier {
4786    /// String value of the enum field names used in the ProtoBuf definition.
4787    ///
4788    /// The values are not transformed in any way and thus are considered stable
4789    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4790    pub fn as_str_name(&self) -> &'static str {
4791        match self {
4792            Self::Undefined => "SET_QUANTIFIER_UNDEFINED",
4793            Self::Default => "SET_QUANTIFIER_DEFAULT",
4794            Self::All => "SET_QUANTIFIER_ALL",
4795            Self::Distinct => "SET_QUANTIFIER_DISTINCT",
4796        }
4797    }
4798    /// Creates an enum from field names used in the ProtoBuf definition.
4799    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4800        match value {
4801            "SET_QUANTIFIER_UNDEFINED" => Some(Self::Undefined),
4802            "SET_QUANTIFIER_DEFAULT" => Some(Self::Default),
4803            "SET_QUANTIFIER_ALL" => Some(Self::All),
4804            "SET_QUANTIFIER_DISTINCT" => Some(Self::Distinct),
4805            _ => None,
4806        }
4807    }
4808}
4809#[derive(serde::Serialize)]
4810#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4811#[repr(i32)]
4812pub enum AExprKind {
4813    Undefined = 0,
4814    AexprOp = 1,
4815    AexprOpAny = 2,
4816    AexprOpAll = 3,
4817    AexprDistinct = 4,
4818    AexprNotDistinct = 5,
4819    AexprNullif = 6,
4820    AexprIn = 7,
4821    AexprLike = 8,
4822    AexprIlike = 9,
4823    AexprSimilar = 10,
4824    AexprBetween = 11,
4825    AexprNotBetween = 12,
4826    AexprBetweenSym = 13,
4827    AexprNotBetweenSym = 14,
4828}
4829impl AExprKind {
4830    /// String value of the enum field names used in the ProtoBuf definition.
4831    ///
4832    /// The values are not transformed in any way and thus are considered stable
4833    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4834    pub fn as_str_name(&self) -> &'static str {
4835        match self {
4836            Self::Undefined => "A_EXPR_KIND_UNDEFINED",
4837            Self::AexprOp => "AEXPR_OP",
4838            Self::AexprOpAny => "AEXPR_OP_ANY",
4839            Self::AexprOpAll => "AEXPR_OP_ALL",
4840            Self::AexprDistinct => "AEXPR_DISTINCT",
4841            Self::AexprNotDistinct => "AEXPR_NOT_DISTINCT",
4842            Self::AexprNullif => "AEXPR_NULLIF",
4843            Self::AexprIn => "AEXPR_IN",
4844            Self::AexprLike => "AEXPR_LIKE",
4845            Self::AexprIlike => "AEXPR_ILIKE",
4846            Self::AexprSimilar => "AEXPR_SIMILAR",
4847            Self::AexprBetween => "AEXPR_BETWEEN",
4848            Self::AexprNotBetween => "AEXPR_NOT_BETWEEN",
4849            Self::AexprBetweenSym => "AEXPR_BETWEEN_SYM",
4850            Self::AexprNotBetweenSym => "AEXPR_NOT_BETWEEN_SYM",
4851        }
4852    }
4853    /// Creates an enum from field names used in the ProtoBuf definition.
4854    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4855        match value {
4856            "A_EXPR_KIND_UNDEFINED" => Some(Self::Undefined),
4857            "AEXPR_OP" => Some(Self::AexprOp),
4858            "AEXPR_OP_ANY" => Some(Self::AexprOpAny),
4859            "AEXPR_OP_ALL" => Some(Self::AexprOpAll),
4860            "AEXPR_DISTINCT" => Some(Self::AexprDistinct),
4861            "AEXPR_NOT_DISTINCT" => Some(Self::AexprNotDistinct),
4862            "AEXPR_NULLIF" => Some(Self::AexprNullif),
4863            "AEXPR_IN" => Some(Self::AexprIn),
4864            "AEXPR_LIKE" => Some(Self::AexprLike),
4865            "AEXPR_ILIKE" => Some(Self::AexprIlike),
4866            "AEXPR_SIMILAR" => Some(Self::AexprSimilar),
4867            "AEXPR_BETWEEN" => Some(Self::AexprBetween),
4868            "AEXPR_NOT_BETWEEN" => Some(Self::AexprNotBetween),
4869            "AEXPR_BETWEEN_SYM" => Some(Self::AexprBetweenSym),
4870            "AEXPR_NOT_BETWEEN_SYM" => Some(Self::AexprNotBetweenSym),
4871            _ => None,
4872        }
4873    }
4874}
4875#[derive(serde::Serialize)]
4876#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4877#[repr(i32)]
4878pub enum RoleSpecType {
4879    Undefined = 0,
4880    RolespecCstring = 1,
4881    RolespecCurrentRole = 2,
4882    RolespecCurrentUser = 3,
4883    RolespecSessionUser = 4,
4884    RolespecPublic = 5,
4885}
4886impl RoleSpecType {
4887    /// String value of the enum field names used in the ProtoBuf definition.
4888    ///
4889    /// The values are not transformed in any way and thus are considered stable
4890    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4891    pub fn as_str_name(&self) -> &'static str {
4892        match self {
4893            Self::Undefined => "ROLE_SPEC_TYPE_UNDEFINED",
4894            Self::RolespecCstring => "ROLESPEC_CSTRING",
4895            Self::RolespecCurrentRole => "ROLESPEC_CURRENT_ROLE",
4896            Self::RolespecCurrentUser => "ROLESPEC_CURRENT_USER",
4897            Self::RolespecSessionUser => "ROLESPEC_SESSION_USER",
4898            Self::RolespecPublic => "ROLESPEC_PUBLIC",
4899        }
4900    }
4901    /// Creates an enum from field names used in the ProtoBuf definition.
4902    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4903        match value {
4904            "ROLE_SPEC_TYPE_UNDEFINED" => Some(Self::Undefined),
4905            "ROLESPEC_CSTRING" => Some(Self::RolespecCstring),
4906            "ROLESPEC_CURRENT_ROLE" => Some(Self::RolespecCurrentRole),
4907            "ROLESPEC_CURRENT_USER" => Some(Self::RolespecCurrentUser),
4908            "ROLESPEC_SESSION_USER" => Some(Self::RolespecSessionUser),
4909            "ROLESPEC_PUBLIC" => Some(Self::RolespecPublic),
4910            _ => None,
4911        }
4912    }
4913}
4914#[derive(serde::Serialize)]
4915#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4916#[repr(i32)]
4917pub enum TableLikeOption {
4918    Undefined = 0,
4919    CreateTableLikeComments = 1,
4920    CreateTableLikeCompression = 2,
4921    CreateTableLikeConstraints = 3,
4922    CreateTableLikeDefaults = 4,
4923    CreateTableLikeGenerated = 5,
4924    CreateTableLikeIdentity = 6,
4925    CreateTableLikeIndexes = 7,
4926    CreateTableLikeStatistics = 8,
4927    CreateTableLikeStorage = 9,
4928    CreateTableLikeAll = 10,
4929}
4930impl TableLikeOption {
4931    /// String value of the enum field names used in the ProtoBuf definition.
4932    ///
4933    /// The values are not transformed in any way and thus are considered stable
4934    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4935    pub fn as_str_name(&self) -> &'static str {
4936        match self {
4937            Self::Undefined => "TABLE_LIKE_OPTION_UNDEFINED",
4938            Self::CreateTableLikeComments => "CREATE_TABLE_LIKE_COMMENTS",
4939            Self::CreateTableLikeCompression => "CREATE_TABLE_LIKE_COMPRESSION",
4940            Self::CreateTableLikeConstraints => "CREATE_TABLE_LIKE_CONSTRAINTS",
4941            Self::CreateTableLikeDefaults => "CREATE_TABLE_LIKE_DEFAULTS",
4942            Self::CreateTableLikeGenerated => "CREATE_TABLE_LIKE_GENERATED",
4943            Self::CreateTableLikeIdentity => "CREATE_TABLE_LIKE_IDENTITY",
4944            Self::CreateTableLikeIndexes => "CREATE_TABLE_LIKE_INDEXES",
4945            Self::CreateTableLikeStatistics => "CREATE_TABLE_LIKE_STATISTICS",
4946            Self::CreateTableLikeStorage => "CREATE_TABLE_LIKE_STORAGE",
4947            Self::CreateTableLikeAll => "CREATE_TABLE_LIKE_ALL",
4948        }
4949    }
4950    /// Creates an enum from field names used in the ProtoBuf definition.
4951    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4952        match value {
4953            "TABLE_LIKE_OPTION_UNDEFINED" => Some(Self::Undefined),
4954            "CREATE_TABLE_LIKE_COMMENTS" => Some(Self::CreateTableLikeComments),
4955            "CREATE_TABLE_LIKE_COMPRESSION" => Some(Self::CreateTableLikeCompression),
4956            "CREATE_TABLE_LIKE_CONSTRAINTS" => Some(Self::CreateTableLikeConstraints),
4957            "CREATE_TABLE_LIKE_DEFAULTS" => Some(Self::CreateTableLikeDefaults),
4958            "CREATE_TABLE_LIKE_GENERATED" => Some(Self::CreateTableLikeGenerated),
4959            "CREATE_TABLE_LIKE_IDENTITY" => Some(Self::CreateTableLikeIdentity),
4960            "CREATE_TABLE_LIKE_INDEXES" => Some(Self::CreateTableLikeIndexes),
4961            "CREATE_TABLE_LIKE_STATISTICS" => Some(Self::CreateTableLikeStatistics),
4962            "CREATE_TABLE_LIKE_STORAGE" => Some(Self::CreateTableLikeStorage),
4963            "CREATE_TABLE_LIKE_ALL" => Some(Self::CreateTableLikeAll),
4964            _ => None,
4965        }
4966    }
4967}
4968#[derive(serde::Serialize)]
4969#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4970#[repr(i32)]
4971pub enum DefElemAction {
4972    Undefined = 0,
4973    DefelemUnspec = 1,
4974    DefelemSet = 2,
4975    DefelemAdd = 3,
4976    DefelemDrop = 4,
4977}
4978impl DefElemAction {
4979    /// String value of the enum field names used in the ProtoBuf definition.
4980    ///
4981    /// The values are not transformed in any way and thus are considered stable
4982    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4983    pub fn as_str_name(&self) -> &'static str {
4984        match self {
4985            Self::Undefined => "DEF_ELEM_ACTION_UNDEFINED",
4986            Self::DefelemUnspec => "DEFELEM_UNSPEC",
4987            Self::DefelemSet => "DEFELEM_SET",
4988            Self::DefelemAdd => "DEFELEM_ADD",
4989            Self::DefelemDrop => "DEFELEM_DROP",
4990        }
4991    }
4992    /// Creates an enum from field names used in the ProtoBuf definition.
4993    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4994        match value {
4995            "DEF_ELEM_ACTION_UNDEFINED" => Some(Self::Undefined),
4996            "DEFELEM_UNSPEC" => Some(Self::DefelemUnspec),
4997            "DEFELEM_SET" => Some(Self::DefelemSet),
4998            "DEFELEM_ADD" => Some(Self::DefelemAdd),
4999            "DEFELEM_DROP" => Some(Self::DefelemDrop),
5000            _ => None,
5001        }
5002    }
5003}
5004#[derive(serde::Serialize)]
5005#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5006#[repr(i32)]
5007pub enum PartitionStrategy {
5008    Undefined = 0,
5009    List = 1,
5010    Range = 2,
5011    Hash = 3,
5012}
5013impl PartitionStrategy {
5014    /// String value of the enum field names used in the ProtoBuf definition.
5015    ///
5016    /// The values are not transformed in any way and thus are considered stable
5017    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5018    pub fn as_str_name(&self) -> &'static str {
5019        match self {
5020            Self::Undefined => "PARTITION_STRATEGY_UNDEFINED",
5021            Self::List => "PARTITION_STRATEGY_LIST",
5022            Self::Range => "PARTITION_STRATEGY_RANGE",
5023            Self::Hash => "PARTITION_STRATEGY_HASH",
5024        }
5025    }
5026    /// Creates an enum from field names used in the ProtoBuf definition.
5027    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5028        match value {
5029            "PARTITION_STRATEGY_UNDEFINED" => Some(Self::Undefined),
5030            "PARTITION_STRATEGY_LIST" => Some(Self::List),
5031            "PARTITION_STRATEGY_RANGE" => Some(Self::Range),
5032            "PARTITION_STRATEGY_HASH" => Some(Self::Hash),
5033            _ => None,
5034        }
5035    }
5036}
5037#[derive(serde::Serialize)]
5038#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5039#[repr(i32)]
5040pub enum PartitionRangeDatumKind {
5041    Undefined = 0,
5042    PartitionRangeDatumMinvalue = 1,
5043    PartitionRangeDatumValue = 2,
5044    PartitionRangeDatumMaxvalue = 3,
5045}
5046impl PartitionRangeDatumKind {
5047    /// String value of the enum field names used in the ProtoBuf definition.
5048    ///
5049    /// The values are not transformed in any way and thus are considered stable
5050    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5051    pub fn as_str_name(&self) -> &'static str {
5052        match self {
5053            Self::Undefined => "PARTITION_RANGE_DATUM_KIND_UNDEFINED",
5054            Self::PartitionRangeDatumMinvalue => "PARTITION_RANGE_DATUM_MINVALUE",
5055            Self::PartitionRangeDatumValue => "PARTITION_RANGE_DATUM_VALUE",
5056            Self::PartitionRangeDatumMaxvalue => "PARTITION_RANGE_DATUM_MAXVALUE",
5057        }
5058    }
5059    /// Creates an enum from field names used in the ProtoBuf definition.
5060    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5061        match value {
5062            "PARTITION_RANGE_DATUM_KIND_UNDEFINED" => Some(Self::Undefined),
5063            "PARTITION_RANGE_DATUM_MINVALUE" => Some(Self::PartitionRangeDatumMinvalue),
5064            "PARTITION_RANGE_DATUM_VALUE" => Some(Self::PartitionRangeDatumValue),
5065            "PARTITION_RANGE_DATUM_MAXVALUE" => Some(Self::PartitionRangeDatumMaxvalue),
5066            _ => None,
5067        }
5068    }
5069}
5070#[derive(serde::Serialize)]
5071#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5072#[repr(i32)]
5073pub enum RteKind {
5074    RtekindUndefined = 0,
5075    RteRelation = 1,
5076    RteSubquery = 2,
5077    RteJoin = 3,
5078    RteFunction = 4,
5079    RteTablefunc = 5,
5080    RteValues = 6,
5081    RteCte = 7,
5082    RteNamedtuplestore = 8,
5083    RteResult = 9,
5084    RteGroup = 10,
5085}
5086impl RteKind {
5087    /// String value of the enum field names used in the ProtoBuf definition.
5088    ///
5089    /// The values are not transformed in any way and thus are considered stable
5090    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5091    pub fn as_str_name(&self) -> &'static str {
5092        match self {
5093            Self::RtekindUndefined => "RTEKIND_UNDEFINED",
5094            Self::RteRelation => "RTE_RELATION",
5095            Self::RteSubquery => "RTE_SUBQUERY",
5096            Self::RteJoin => "RTE_JOIN",
5097            Self::RteFunction => "RTE_FUNCTION",
5098            Self::RteTablefunc => "RTE_TABLEFUNC",
5099            Self::RteValues => "RTE_VALUES",
5100            Self::RteCte => "RTE_CTE",
5101            Self::RteNamedtuplestore => "RTE_NAMEDTUPLESTORE",
5102            Self::RteResult => "RTE_RESULT",
5103            Self::RteGroup => "RTE_GROUP",
5104        }
5105    }
5106    /// Creates an enum from field names used in the ProtoBuf definition.
5107    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5108        match value {
5109            "RTEKIND_UNDEFINED" => Some(Self::RtekindUndefined),
5110            "RTE_RELATION" => Some(Self::RteRelation),
5111            "RTE_SUBQUERY" => Some(Self::RteSubquery),
5112            "RTE_JOIN" => Some(Self::RteJoin),
5113            "RTE_FUNCTION" => Some(Self::RteFunction),
5114            "RTE_TABLEFUNC" => Some(Self::RteTablefunc),
5115            "RTE_VALUES" => Some(Self::RteValues),
5116            "RTE_CTE" => Some(Self::RteCte),
5117            "RTE_NAMEDTUPLESTORE" => Some(Self::RteNamedtuplestore),
5118            "RTE_RESULT" => Some(Self::RteResult),
5119            "RTE_GROUP" => Some(Self::RteGroup),
5120            _ => None,
5121        }
5122    }
5123}
5124#[derive(serde::Serialize)]
5125#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5126#[repr(i32)]
5127pub enum WcoKind {
5128    WcokindUndefined = 0,
5129    WcoViewCheck = 1,
5130    WcoRlsInsertCheck = 2,
5131    WcoRlsUpdateCheck = 3,
5132    WcoRlsConflictCheck = 4,
5133    WcoRlsMergeUpdateCheck = 5,
5134    WcoRlsMergeDeleteCheck = 6,
5135}
5136impl WcoKind {
5137    /// String value of the enum field names used in the ProtoBuf definition.
5138    ///
5139    /// The values are not transformed in any way and thus are considered stable
5140    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5141    pub fn as_str_name(&self) -> &'static str {
5142        match self {
5143            Self::WcokindUndefined => "WCOKIND_UNDEFINED",
5144            Self::WcoViewCheck => "WCO_VIEW_CHECK",
5145            Self::WcoRlsInsertCheck => "WCO_RLS_INSERT_CHECK",
5146            Self::WcoRlsUpdateCheck => "WCO_RLS_UPDATE_CHECK",
5147            Self::WcoRlsConflictCheck => "WCO_RLS_CONFLICT_CHECK",
5148            Self::WcoRlsMergeUpdateCheck => "WCO_RLS_MERGE_UPDATE_CHECK",
5149            Self::WcoRlsMergeDeleteCheck => "WCO_RLS_MERGE_DELETE_CHECK",
5150        }
5151    }
5152    /// Creates an enum from field names used in the ProtoBuf definition.
5153    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5154        match value {
5155            "WCOKIND_UNDEFINED" => Some(Self::WcokindUndefined),
5156            "WCO_VIEW_CHECK" => Some(Self::WcoViewCheck),
5157            "WCO_RLS_INSERT_CHECK" => Some(Self::WcoRlsInsertCheck),
5158            "WCO_RLS_UPDATE_CHECK" => Some(Self::WcoRlsUpdateCheck),
5159            "WCO_RLS_CONFLICT_CHECK" => Some(Self::WcoRlsConflictCheck),
5160            "WCO_RLS_MERGE_UPDATE_CHECK" => Some(Self::WcoRlsMergeUpdateCheck),
5161            "WCO_RLS_MERGE_DELETE_CHECK" => Some(Self::WcoRlsMergeDeleteCheck),
5162            _ => None,
5163        }
5164    }
5165}
5166#[derive(serde::Serialize)]
5167#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5168#[repr(i32)]
5169pub enum GroupingSetKind {
5170    Undefined = 0,
5171    GroupingSetEmpty = 1,
5172    GroupingSetSimple = 2,
5173    GroupingSetRollup = 3,
5174    GroupingSetCube = 4,
5175    GroupingSetSets = 5,
5176}
5177impl GroupingSetKind {
5178    /// String value of the enum field names used in the ProtoBuf definition.
5179    ///
5180    /// The values are not transformed in any way and thus are considered stable
5181    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5182    pub fn as_str_name(&self) -> &'static str {
5183        match self {
5184            Self::Undefined => "GROUPING_SET_KIND_UNDEFINED",
5185            Self::GroupingSetEmpty => "GROUPING_SET_EMPTY",
5186            Self::GroupingSetSimple => "GROUPING_SET_SIMPLE",
5187            Self::GroupingSetRollup => "GROUPING_SET_ROLLUP",
5188            Self::GroupingSetCube => "GROUPING_SET_CUBE",
5189            Self::GroupingSetSets => "GROUPING_SET_SETS",
5190        }
5191    }
5192    /// Creates an enum from field names used in the ProtoBuf definition.
5193    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5194        match value {
5195            "GROUPING_SET_KIND_UNDEFINED" => Some(Self::Undefined),
5196            "GROUPING_SET_EMPTY" => Some(Self::GroupingSetEmpty),
5197            "GROUPING_SET_SIMPLE" => Some(Self::GroupingSetSimple),
5198            "GROUPING_SET_ROLLUP" => Some(Self::GroupingSetRollup),
5199            "GROUPING_SET_CUBE" => Some(Self::GroupingSetCube),
5200            "GROUPING_SET_SETS" => Some(Self::GroupingSetSets),
5201            _ => None,
5202        }
5203    }
5204}
5205#[derive(serde::Serialize)]
5206#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5207#[repr(i32)]
5208pub enum CteMaterialize {
5209    CtematerializeUndefined = 0,
5210    Default = 1,
5211    Always = 2,
5212    Never = 3,
5213}
5214impl CteMaterialize {
5215    /// String value of the enum field names used in the ProtoBuf definition.
5216    ///
5217    /// The values are not transformed in any way and thus are considered stable
5218    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5219    pub fn as_str_name(&self) -> &'static str {
5220        match self {
5221            Self::CtematerializeUndefined => "CTEMATERIALIZE_UNDEFINED",
5222            Self::Default => "CTEMaterializeDefault",
5223            Self::Always => "CTEMaterializeAlways",
5224            Self::Never => "CTEMaterializeNever",
5225        }
5226    }
5227    /// Creates an enum from field names used in the ProtoBuf definition.
5228    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5229        match value {
5230            "CTEMATERIALIZE_UNDEFINED" => Some(Self::CtematerializeUndefined),
5231            "CTEMaterializeDefault" => Some(Self::Default),
5232            "CTEMaterializeAlways" => Some(Self::Always),
5233            "CTEMaterializeNever" => Some(Self::Never),
5234            _ => None,
5235        }
5236    }
5237}
5238#[derive(serde::Serialize)]
5239#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5240#[repr(i32)]
5241pub enum ReturningOptionKind {
5242    Undefined = 0,
5243    ReturningOptionOld = 1,
5244    ReturningOptionNew = 2,
5245}
5246impl ReturningOptionKind {
5247    /// String value of the enum field names used in the ProtoBuf definition.
5248    ///
5249    /// The values are not transformed in any way and thus are considered stable
5250    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5251    pub fn as_str_name(&self) -> &'static str {
5252        match self {
5253            Self::Undefined => "RETURNING_OPTION_KIND_UNDEFINED",
5254            Self::ReturningOptionOld => "RETURNING_OPTION_OLD",
5255            Self::ReturningOptionNew => "RETURNING_OPTION_NEW",
5256        }
5257    }
5258    /// Creates an enum from field names used in the ProtoBuf definition.
5259    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5260        match value {
5261            "RETURNING_OPTION_KIND_UNDEFINED" => Some(Self::Undefined),
5262            "RETURNING_OPTION_OLD" => Some(Self::ReturningOptionOld),
5263            "RETURNING_OPTION_NEW" => Some(Self::ReturningOptionNew),
5264            _ => None,
5265        }
5266    }
5267}
5268#[derive(serde::Serialize)]
5269#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5270#[repr(i32)]
5271pub enum JsonQuotes {
5272    Undefined = 0,
5273    JsQuotesUnspec = 1,
5274    JsQuotesKeep = 2,
5275    JsQuotesOmit = 3,
5276}
5277impl JsonQuotes {
5278    /// String value of the enum field names used in the ProtoBuf definition.
5279    ///
5280    /// The values are not transformed in any way and thus are considered stable
5281    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5282    pub fn as_str_name(&self) -> &'static str {
5283        match self {
5284            Self::Undefined => "JSON_QUOTES_UNDEFINED",
5285            Self::JsQuotesUnspec => "JS_QUOTES_UNSPEC",
5286            Self::JsQuotesKeep => "JS_QUOTES_KEEP",
5287            Self::JsQuotesOmit => "JS_QUOTES_OMIT",
5288        }
5289    }
5290    /// Creates an enum from field names used in the ProtoBuf definition.
5291    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5292        match value {
5293            "JSON_QUOTES_UNDEFINED" => Some(Self::Undefined),
5294            "JS_QUOTES_UNSPEC" => Some(Self::JsQuotesUnspec),
5295            "JS_QUOTES_KEEP" => Some(Self::JsQuotesKeep),
5296            "JS_QUOTES_OMIT" => Some(Self::JsQuotesOmit),
5297            _ => None,
5298        }
5299    }
5300}
5301#[derive(serde::Serialize)]
5302#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5303#[repr(i32)]
5304pub enum JsonTableColumnType {
5305    Undefined = 0,
5306    JtcForOrdinality = 1,
5307    JtcRegular = 2,
5308    JtcExists = 3,
5309    JtcFormatted = 4,
5310    JtcNested = 5,
5311}
5312impl JsonTableColumnType {
5313    /// String value of the enum field names used in the ProtoBuf definition.
5314    ///
5315    /// The values are not transformed in any way and thus are considered stable
5316    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5317    pub fn as_str_name(&self) -> &'static str {
5318        match self {
5319            Self::Undefined => "JSON_TABLE_COLUMN_TYPE_UNDEFINED",
5320            Self::JtcForOrdinality => "JTC_FOR_ORDINALITY",
5321            Self::JtcRegular => "JTC_REGULAR",
5322            Self::JtcExists => "JTC_EXISTS",
5323            Self::JtcFormatted => "JTC_FORMATTED",
5324            Self::JtcNested => "JTC_NESTED",
5325        }
5326    }
5327    /// Creates an enum from field names used in the ProtoBuf definition.
5328    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5329        match value {
5330            "JSON_TABLE_COLUMN_TYPE_UNDEFINED" => Some(Self::Undefined),
5331            "JTC_FOR_ORDINALITY" => Some(Self::JtcForOrdinality),
5332            "JTC_REGULAR" => Some(Self::JtcRegular),
5333            "JTC_EXISTS" => Some(Self::JtcExists),
5334            "JTC_FORMATTED" => Some(Self::JtcFormatted),
5335            "JTC_NESTED" => Some(Self::JtcNested),
5336            _ => None,
5337        }
5338    }
5339}
5340#[derive(serde::Serialize)]
5341#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5342#[repr(i32)]
5343pub enum SetOperation {
5344    Undefined = 0,
5345    SetopNone = 1,
5346    SetopUnion = 2,
5347    SetopIntersect = 3,
5348    SetopExcept = 4,
5349}
5350impl SetOperation {
5351    /// String value of the enum field names used in the ProtoBuf definition.
5352    ///
5353    /// The values are not transformed in any way and thus are considered stable
5354    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5355    pub fn as_str_name(&self) -> &'static str {
5356        match self {
5357            Self::Undefined => "SET_OPERATION_UNDEFINED",
5358            Self::SetopNone => "SETOP_NONE",
5359            Self::SetopUnion => "SETOP_UNION",
5360            Self::SetopIntersect => "SETOP_INTERSECT",
5361            Self::SetopExcept => "SETOP_EXCEPT",
5362        }
5363    }
5364    /// Creates an enum from field names used in the ProtoBuf definition.
5365    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5366        match value {
5367            "SET_OPERATION_UNDEFINED" => Some(Self::Undefined),
5368            "SETOP_NONE" => Some(Self::SetopNone),
5369            "SETOP_UNION" => Some(Self::SetopUnion),
5370            "SETOP_INTERSECT" => Some(Self::SetopIntersect),
5371            "SETOP_EXCEPT" => Some(Self::SetopExcept),
5372            _ => None,
5373        }
5374    }
5375}
5376#[derive(serde::Serialize)]
5377#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5378#[repr(i32)]
5379pub enum ObjectType {
5380    Undefined = 0,
5381    ObjectAccessMethod = 1,
5382    ObjectAggregate = 2,
5383    ObjectAmop = 3,
5384    ObjectAmproc = 4,
5385    ObjectAttribute = 5,
5386    ObjectCast = 6,
5387    ObjectColumn = 7,
5388    ObjectCollation = 8,
5389    ObjectConversion = 9,
5390    ObjectDatabase = 10,
5391    ObjectDefault = 11,
5392    ObjectDefacl = 12,
5393    ObjectDomain = 13,
5394    ObjectDomconstraint = 14,
5395    ObjectEventTrigger = 15,
5396    ObjectExtension = 16,
5397    ObjectFdw = 17,
5398    ObjectForeignServer = 18,
5399    ObjectForeignTable = 19,
5400    ObjectFunction = 20,
5401    ObjectIndex = 21,
5402    ObjectLanguage = 22,
5403    ObjectLargeobject = 23,
5404    ObjectMatview = 24,
5405    ObjectOpclass = 25,
5406    ObjectOperator = 26,
5407    ObjectOpfamily = 27,
5408    ObjectParameterAcl = 28,
5409    ObjectPolicy = 29,
5410    ObjectProcedure = 30,
5411    ObjectPublication = 31,
5412    ObjectPublicationNamespace = 32,
5413    ObjectPublicationRel = 33,
5414    ObjectRole = 34,
5415    ObjectRoutine = 35,
5416    ObjectRule = 36,
5417    ObjectSchema = 37,
5418    ObjectSequence = 38,
5419    ObjectSubscription = 39,
5420    ObjectStatisticExt = 40,
5421    ObjectTabconstraint = 41,
5422    ObjectTable = 42,
5423    ObjectTablespace = 43,
5424    ObjectTransform = 44,
5425    ObjectTrigger = 45,
5426    ObjectTsconfiguration = 46,
5427    ObjectTsdictionary = 47,
5428    ObjectTsparser = 48,
5429    ObjectTstemplate = 49,
5430    ObjectType = 50,
5431    ObjectUserMapping = 51,
5432    ObjectView = 52,
5433}
5434impl ObjectType {
5435    /// String value of the enum field names used in the ProtoBuf definition.
5436    ///
5437    /// The values are not transformed in any way and thus are considered stable
5438    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5439    pub fn as_str_name(&self) -> &'static str {
5440        match self {
5441            Self::Undefined => "OBJECT_TYPE_UNDEFINED",
5442            Self::ObjectAccessMethod => "OBJECT_ACCESS_METHOD",
5443            Self::ObjectAggregate => "OBJECT_AGGREGATE",
5444            Self::ObjectAmop => "OBJECT_AMOP",
5445            Self::ObjectAmproc => "OBJECT_AMPROC",
5446            Self::ObjectAttribute => "OBJECT_ATTRIBUTE",
5447            Self::ObjectCast => "OBJECT_CAST",
5448            Self::ObjectColumn => "OBJECT_COLUMN",
5449            Self::ObjectCollation => "OBJECT_COLLATION",
5450            Self::ObjectConversion => "OBJECT_CONVERSION",
5451            Self::ObjectDatabase => "OBJECT_DATABASE",
5452            Self::ObjectDefault => "OBJECT_DEFAULT",
5453            Self::ObjectDefacl => "OBJECT_DEFACL",
5454            Self::ObjectDomain => "OBJECT_DOMAIN",
5455            Self::ObjectDomconstraint => "OBJECT_DOMCONSTRAINT",
5456            Self::ObjectEventTrigger => "OBJECT_EVENT_TRIGGER",
5457            Self::ObjectExtension => "OBJECT_EXTENSION",
5458            Self::ObjectFdw => "OBJECT_FDW",
5459            Self::ObjectForeignServer => "OBJECT_FOREIGN_SERVER",
5460            Self::ObjectForeignTable => "OBJECT_FOREIGN_TABLE",
5461            Self::ObjectFunction => "OBJECT_FUNCTION",
5462            Self::ObjectIndex => "OBJECT_INDEX",
5463            Self::ObjectLanguage => "OBJECT_LANGUAGE",
5464            Self::ObjectLargeobject => "OBJECT_LARGEOBJECT",
5465            Self::ObjectMatview => "OBJECT_MATVIEW",
5466            Self::ObjectOpclass => "OBJECT_OPCLASS",
5467            Self::ObjectOperator => "OBJECT_OPERATOR",
5468            Self::ObjectOpfamily => "OBJECT_OPFAMILY",
5469            Self::ObjectParameterAcl => "OBJECT_PARAMETER_ACL",
5470            Self::ObjectPolicy => "OBJECT_POLICY",
5471            Self::ObjectProcedure => "OBJECT_PROCEDURE",
5472            Self::ObjectPublication => "OBJECT_PUBLICATION",
5473            Self::ObjectPublicationNamespace => "OBJECT_PUBLICATION_NAMESPACE",
5474            Self::ObjectPublicationRel => "OBJECT_PUBLICATION_REL",
5475            Self::ObjectRole => "OBJECT_ROLE",
5476            Self::ObjectRoutine => "OBJECT_ROUTINE",
5477            Self::ObjectRule => "OBJECT_RULE",
5478            Self::ObjectSchema => "OBJECT_SCHEMA",
5479            Self::ObjectSequence => "OBJECT_SEQUENCE",
5480            Self::ObjectSubscription => "OBJECT_SUBSCRIPTION",
5481            Self::ObjectStatisticExt => "OBJECT_STATISTIC_EXT",
5482            Self::ObjectTabconstraint => "OBJECT_TABCONSTRAINT",
5483            Self::ObjectTable => "OBJECT_TABLE",
5484            Self::ObjectTablespace => "OBJECT_TABLESPACE",
5485            Self::ObjectTransform => "OBJECT_TRANSFORM",
5486            Self::ObjectTrigger => "OBJECT_TRIGGER",
5487            Self::ObjectTsconfiguration => "OBJECT_TSCONFIGURATION",
5488            Self::ObjectTsdictionary => "OBJECT_TSDICTIONARY",
5489            Self::ObjectTsparser => "OBJECT_TSPARSER",
5490            Self::ObjectTstemplate => "OBJECT_TSTEMPLATE",
5491            Self::ObjectType => "OBJECT_TYPE",
5492            Self::ObjectUserMapping => "OBJECT_USER_MAPPING",
5493            Self::ObjectView => "OBJECT_VIEW",
5494        }
5495    }
5496    /// Creates an enum from field names used in the ProtoBuf definition.
5497    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5498        match value {
5499            "OBJECT_TYPE_UNDEFINED" => Some(Self::Undefined),
5500            "OBJECT_ACCESS_METHOD" => Some(Self::ObjectAccessMethod),
5501            "OBJECT_AGGREGATE" => Some(Self::ObjectAggregate),
5502            "OBJECT_AMOP" => Some(Self::ObjectAmop),
5503            "OBJECT_AMPROC" => Some(Self::ObjectAmproc),
5504            "OBJECT_ATTRIBUTE" => Some(Self::ObjectAttribute),
5505            "OBJECT_CAST" => Some(Self::ObjectCast),
5506            "OBJECT_COLUMN" => Some(Self::ObjectColumn),
5507            "OBJECT_COLLATION" => Some(Self::ObjectCollation),
5508            "OBJECT_CONVERSION" => Some(Self::ObjectConversion),
5509            "OBJECT_DATABASE" => Some(Self::ObjectDatabase),
5510            "OBJECT_DEFAULT" => Some(Self::ObjectDefault),
5511            "OBJECT_DEFACL" => Some(Self::ObjectDefacl),
5512            "OBJECT_DOMAIN" => Some(Self::ObjectDomain),
5513            "OBJECT_DOMCONSTRAINT" => Some(Self::ObjectDomconstraint),
5514            "OBJECT_EVENT_TRIGGER" => Some(Self::ObjectEventTrigger),
5515            "OBJECT_EXTENSION" => Some(Self::ObjectExtension),
5516            "OBJECT_FDW" => Some(Self::ObjectFdw),
5517            "OBJECT_FOREIGN_SERVER" => Some(Self::ObjectForeignServer),
5518            "OBJECT_FOREIGN_TABLE" => Some(Self::ObjectForeignTable),
5519            "OBJECT_FUNCTION" => Some(Self::ObjectFunction),
5520            "OBJECT_INDEX" => Some(Self::ObjectIndex),
5521            "OBJECT_LANGUAGE" => Some(Self::ObjectLanguage),
5522            "OBJECT_LARGEOBJECT" => Some(Self::ObjectLargeobject),
5523            "OBJECT_MATVIEW" => Some(Self::ObjectMatview),
5524            "OBJECT_OPCLASS" => Some(Self::ObjectOpclass),
5525            "OBJECT_OPERATOR" => Some(Self::ObjectOperator),
5526            "OBJECT_OPFAMILY" => Some(Self::ObjectOpfamily),
5527            "OBJECT_PARAMETER_ACL" => Some(Self::ObjectParameterAcl),
5528            "OBJECT_POLICY" => Some(Self::ObjectPolicy),
5529            "OBJECT_PROCEDURE" => Some(Self::ObjectProcedure),
5530            "OBJECT_PUBLICATION" => Some(Self::ObjectPublication),
5531            "OBJECT_PUBLICATION_NAMESPACE" => Some(Self::ObjectPublicationNamespace),
5532            "OBJECT_PUBLICATION_REL" => Some(Self::ObjectPublicationRel),
5533            "OBJECT_ROLE" => Some(Self::ObjectRole),
5534            "OBJECT_ROUTINE" => Some(Self::ObjectRoutine),
5535            "OBJECT_RULE" => Some(Self::ObjectRule),
5536            "OBJECT_SCHEMA" => Some(Self::ObjectSchema),
5537            "OBJECT_SEQUENCE" => Some(Self::ObjectSequence),
5538            "OBJECT_SUBSCRIPTION" => Some(Self::ObjectSubscription),
5539            "OBJECT_STATISTIC_EXT" => Some(Self::ObjectStatisticExt),
5540            "OBJECT_TABCONSTRAINT" => Some(Self::ObjectTabconstraint),
5541            "OBJECT_TABLE" => Some(Self::ObjectTable),
5542            "OBJECT_TABLESPACE" => Some(Self::ObjectTablespace),
5543            "OBJECT_TRANSFORM" => Some(Self::ObjectTransform),
5544            "OBJECT_TRIGGER" => Some(Self::ObjectTrigger),
5545            "OBJECT_TSCONFIGURATION" => Some(Self::ObjectTsconfiguration),
5546            "OBJECT_TSDICTIONARY" => Some(Self::ObjectTsdictionary),
5547            "OBJECT_TSPARSER" => Some(Self::ObjectTsparser),
5548            "OBJECT_TSTEMPLATE" => Some(Self::ObjectTstemplate),
5549            "OBJECT_TYPE" => Some(Self::ObjectType),
5550            "OBJECT_USER_MAPPING" => Some(Self::ObjectUserMapping),
5551            "OBJECT_VIEW" => Some(Self::ObjectView),
5552            _ => None,
5553        }
5554    }
5555}
5556#[derive(serde::Serialize)]
5557#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5558#[repr(i32)]
5559pub enum DropBehavior {
5560    Undefined = 0,
5561    DropRestrict = 1,
5562    DropCascade = 2,
5563}
5564impl DropBehavior {
5565    /// String value of the enum field names used in the ProtoBuf definition.
5566    ///
5567    /// The values are not transformed in any way and thus are considered stable
5568    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5569    pub fn as_str_name(&self) -> &'static str {
5570        match self {
5571            Self::Undefined => "DROP_BEHAVIOR_UNDEFINED",
5572            Self::DropRestrict => "DROP_RESTRICT",
5573            Self::DropCascade => "DROP_CASCADE",
5574        }
5575    }
5576    /// Creates an enum from field names used in the ProtoBuf definition.
5577    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5578        match value {
5579            "DROP_BEHAVIOR_UNDEFINED" => Some(Self::Undefined),
5580            "DROP_RESTRICT" => Some(Self::DropRestrict),
5581            "DROP_CASCADE" => Some(Self::DropCascade),
5582            _ => None,
5583        }
5584    }
5585}
5586#[derive(serde::Serialize)]
5587#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5588#[repr(i32)]
5589pub enum AlterTableType {
5590    Undefined = 0,
5591    AtAddColumn = 1,
5592    AtAddColumnToView = 2,
5593    AtColumnDefault = 3,
5594    AtCookedColumnDefault = 4,
5595    AtDropNotNull = 5,
5596    AtSetNotNull = 6,
5597    AtSetExpression = 7,
5598    AtDropExpression = 8,
5599    AtSetStatistics = 9,
5600    AtSetOptions = 10,
5601    AtResetOptions = 11,
5602    AtSetStorage = 12,
5603    AtSetCompression = 13,
5604    AtDropColumn = 14,
5605    AtAddIndex = 15,
5606    AtReAddIndex = 16,
5607    AtAddConstraint = 17,
5608    AtReAddConstraint = 18,
5609    AtReAddDomainConstraint = 19,
5610    AtAlterConstraint = 20,
5611    AtValidateConstraint = 21,
5612    AtAddIndexConstraint = 22,
5613    AtDropConstraint = 23,
5614    AtReAddComment = 24,
5615    AtAlterColumnType = 25,
5616    AtAlterColumnGenericOptions = 26,
5617    AtChangeOwner = 27,
5618    AtClusterOn = 28,
5619    AtDropCluster = 29,
5620    AtSetLogged = 30,
5621    AtSetUnLogged = 31,
5622    AtDropOids = 32,
5623    AtSetAccessMethod = 33,
5624    AtSetTableSpace = 34,
5625    AtSetRelOptions = 35,
5626    AtResetRelOptions = 36,
5627    AtReplaceRelOptions = 37,
5628    AtEnableTrig = 38,
5629    AtEnableAlwaysTrig = 39,
5630    AtEnableReplicaTrig = 40,
5631    AtDisableTrig = 41,
5632    AtEnableTrigAll = 42,
5633    AtDisableTrigAll = 43,
5634    AtEnableTrigUser = 44,
5635    AtDisableTrigUser = 45,
5636    AtEnableRule = 46,
5637    AtEnableAlwaysRule = 47,
5638    AtEnableReplicaRule = 48,
5639    AtDisableRule = 49,
5640    AtAddInherit = 50,
5641    AtDropInherit = 51,
5642    AtAddOf = 52,
5643    AtDropOf = 53,
5644    AtReplicaIdentity = 54,
5645    AtEnableRowSecurity = 55,
5646    AtDisableRowSecurity = 56,
5647    AtForceRowSecurity = 57,
5648    AtNoForceRowSecurity = 58,
5649    AtGenericOptions = 59,
5650    AtAttachPartition = 60,
5651    AtDetachPartition = 61,
5652    AtDetachPartitionFinalize = 62,
5653    AtAddIdentity = 63,
5654    AtSetIdentity = 64,
5655    AtDropIdentity = 65,
5656    AtReAddStatistics = 66,
5657}
5658impl AlterTableType {
5659    /// String value of the enum field names used in the ProtoBuf definition.
5660    ///
5661    /// The values are not transformed in any way and thus are considered stable
5662    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5663    pub fn as_str_name(&self) -> &'static str {
5664        match self {
5665            Self::Undefined => "ALTER_TABLE_TYPE_UNDEFINED",
5666            Self::AtAddColumn => "AT_AddColumn",
5667            Self::AtAddColumnToView => "AT_AddColumnToView",
5668            Self::AtColumnDefault => "AT_ColumnDefault",
5669            Self::AtCookedColumnDefault => "AT_CookedColumnDefault",
5670            Self::AtDropNotNull => "AT_DropNotNull",
5671            Self::AtSetNotNull => "AT_SetNotNull",
5672            Self::AtSetExpression => "AT_SetExpression",
5673            Self::AtDropExpression => "AT_DropExpression",
5674            Self::AtSetStatistics => "AT_SetStatistics",
5675            Self::AtSetOptions => "AT_SetOptions",
5676            Self::AtResetOptions => "AT_ResetOptions",
5677            Self::AtSetStorage => "AT_SetStorage",
5678            Self::AtSetCompression => "AT_SetCompression",
5679            Self::AtDropColumn => "AT_DropColumn",
5680            Self::AtAddIndex => "AT_AddIndex",
5681            Self::AtReAddIndex => "AT_ReAddIndex",
5682            Self::AtAddConstraint => "AT_AddConstraint",
5683            Self::AtReAddConstraint => "AT_ReAddConstraint",
5684            Self::AtReAddDomainConstraint => "AT_ReAddDomainConstraint",
5685            Self::AtAlterConstraint => "AT_AlterConstraint",
5686            Self::AtValidateConstraint => "AT_ValidateConstraint",
5687            Self::AtAddIndexConstraint => "AT_AddIndexConstraint",
5688            Self::AtDropConstraint => "AT_DropConstraint",
5689            Self::AtReAddComment => "AT_ReAddComment",
5690            Self::AtAlterColumnType => "AT_AlterColumnType",
5691            Self::AtAlterColumnGenericOptions => "AT_AlterColumnGenericOptions",
5692            Self::AtChangeOwner => "AT_ChangeOwner",
5693            Self::AtClusterOn => "AT_ClusterOn",
5694            Self::AtDropCluster => "AT_DropCluster",
5695            Self::AtSetLogged => "AT_SetLogged",
5696            Self::AtSetUnLogged => "AT_SetUnLogged",
5697            Self::AtDropOids => "AT_DropOids",
5698            Self::AtSetAccessMethod => "AT_SetAccessMethod",
5699            Self::AtSetTableSpace => "AT_SetTableSpace",
5700            Self::AtSetRelOptions => "AT_SetRelOptions",
5701            Self::AtResetRelOptions => "AT_ResetRelOptions",
5702            Self::AtReplaceRelOptions => "AT_ReplaceRelOptions",
5703            Self::AtEnableTrig => "AT_EnableTrig",
5704            Self::AtEnableAlwaysTrig => "AT_EnableAlwaysTrig",
5705            Self::AtEnableReplicaTrig => "AT_EnableReplicaTrig",
5706            Self::AtDisableTrig => "AT_DisableTrig",
5707            Self::AtEnableTrigAll => "AT_EnableTrigAll",
5708            Self::AtDisableTrigAll => "AT_DisableTrigAll",
5709            Self::AtEnableTrigUser => "AT_EnableTrigUser",
5710            Self::AtDisableTrigUser => "AT_DisableTrigUser",
5711            Self::AtEnableRule => "AT_EnableRule",
5712            Self::AtEnableAlwaysRule => "AT_EnableAlwaysRule",
5713            Self::AtEnableReplicaRule => "AT_EnableReplicaRule",
5714            Self::AtDisableRule => "AT_DisableRule",
5715            Self::AtAddInherit => "AT_AddInherit",
5716            Self::AtDropInherit => "AT_DropInherit",
5717            Self::AtAddOf => "AT_AddOf",
5718            Self::AtDropOf => "AT_DropOf",
5719            Self::AtReplicaIdentity => "AT_ReplicaIdentity",
5720            Self::AtEnableRowSecurity => "AT_EnableRowSecurity",
5721            Self::AtDisableRowSecurity => "AT_DisableRowSecurity",
5722            Self::AtForceRowSecurity => "AT_ForceRowSecurity",
5723            Self::AtNoForceRowSecurity => "AT_NoForceRowSecurity",
5724            Self::AtGenericOptions => "AT_GenericOptions",
5725            Self::AtAttachPartition => "AT_AttachPartition",
5726            Self::AtDetachPartition => "AT_DetachPartition",
5727            Self::AtDetachPartitionFinalize => "AT_DetachPartitionFinalize",
5728            Self::AtAddIdentity => "AT_AddIdentity",
5729            Self::AtSetIdentity => "AT_SetIdentity",
5730            Self::AtDropIdentity => "AT_DropIdentity",
5731            Self::AtReAddStatistics => "AT_ReAddStatistics",
5732        }
5733    }
5734    /// Creates an enum from field names used in the ProtoBuf definition.
5735    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5736        match value {
5737            "ALTER_TABLE_TYPE_UNDEFINED" => Some(Self::Undefined),
5738            "AT_AddColumn" => Some(Self::AtAddColumn),
5739            "AT_AddColumnToView" => Some(Self::AtAddColumnToView),
5740            "AT_ColumnDefault" => Some(Self::AtColumnDefault),
5741            "AT_CookedColumnDefault" => Some(Self::AtCookedColumnDefault),
5742            "AT_DropNotNull" => Some(Self::AtDropNotNull),
5743            "AT_SetNotNull" => Some(Self::AtSetNotNull),
5744            "AT_SetExpression" => Some(Self::AtSetExpression),
5745            "AT_DropExpression" => Some(Self::AtDropExpression),
5746            "AT_SetStatistics" => Some(Self::AtSetStatistics),
5747            "AT_SetOptions" => Some(Self::AtSetOptions),
5748            "AT_ResetOptions" => Some(Self::AtResetOptions),
5749            "AT_SetStorage" => Some(Self::AtSetStorage),
5750            "AT_SetCompression" => Some(Self::AtSetCompression),
5751            "AT_DropColumn" => Some(Self::AtDropColumn),
5752            "AT_AddIndex" => Some(Self::AtAddIndex),
5753            "AT_ReAddIndex" => Some(Self::AtReAddIndex),
5754            "AT_AddConstraint" => Some(Self::AtAddConstraint),
5755            "AT_ReAddConstraint" => Some(Self::AtReAddConstraint),
5756            "AT_ReAddDomainConstraint" => Some(Self::AtReAddDomainConstraint),
5757            "AT_AlterConstraint" => Some(Self::AtAlterConstraint),
5758            "AT_ValidateConstraint" => Some(Self::AtValidateConstraint),
5759            "AT_AddIndexConstraint" => Some(Self::AtAddIndexConstraint),
5760            "AT_DropConstraint" => Some(Self::AtDropConstraint),
5761            "AT_ReAddComment" => Some(Self::AtReAddComment),
5762            "AT_AlterColumnType" => Some(Self::AtAlterColumnType),
5763            "AT_AlterColumnGenericOptions" => Some(Self::AtAlterColumnGenericOptions),
5764            "AT_ChangeOwner" => Some(Self::AtChangeOwner),
5765            "AT_ClusterOn" => Some(Self::AtClusterOn),
5766            "AT_DropCluster" => Some(Self::AtDropCluster),
5767            "AT_SetLogged" => Some(Self::AtSetLogged),
5768            "AT_SetUnLogged" => Some(Self::AtSetUnLogged),
5769            "AT_DropOids" => Some(Self::AtDropOids),
5770            "AT_SetAccessMethod" => Some(Self::AtSetAccessMethod),
5771            "AT_SetTableSpace" => Some(Self::AtSetTableSpace),
5772            "AT_SetRelOptions" => Some(Self::AtSetRelOptions),
5773            "AT_ResetRelOptions" => Some(Self::AtResetRelOptions),
5774            "AT_ReplaceRelOptions" => Some(Self::AtReplaceRelOptions),
5775            "AT_EnableTrig" => Some(Self::AtEnableTrig),
5776            "AT_EnableAlwaysTrig" => Some(Self::AtEnableAlwaysTrig),
5777            "AT_EnableReplicaTrig" => Some(Self::AtEnableReplicaTrig),
5778            "AT_DisableTrig" => Some(Self::AtDisableTrig),
5779            "AT_EnableTrigAll" => Some(Self::AtEnableTrigAll),
5780            "AT_DisableTrigAll" => Some(Self::AtDisableTrigAll),
5781            "AT_EnableTrigUser" => Some(Self::AtEnableTrigUser),
5782            "AT_DisableTrigUser" => Some(Self::AtDisableTrigUser),
5783            "AT_EnableRule" => Some(Self::AtEnableRule),
5784            "AT_EnableAlwaysRule" => Some(Self::AtEnableAlwaysRule),
5785            "AT_EnableReplicaRule" => Some(Self::AtEnableReplicaRule),
5786            "AT_DisableRule" => Some(Self::AtDisableRule),
5787            "AT_AddInherit" => Some(Self::AtAddInherit),
5788            "AT_DropInherit" => Some(Self::AtDropInherit),
5789            "AT_AddOf" => Some(Self::AtAddOf),
5790            "AT_DropOf" => Some(Self::AtDropOf),
5791            "AT_ReplicaIdentity" => Some(Self::AtReplicaIdentity),
5792            "AT_EnableRowSecurity" => Some(Self::AtEnableRowSecurity),
5793            "AT_DisableRowSecurity" => Some(Self::AtDisableRowSecurity),
5794            "AT_ForceRowSecurity" => Some(Self::AtForceRowSecurity),
5795            "AT_NoForceRowSecurity" => Some(Self::AtNoForceRowSecurity),
5796            "AT_GenericOptions" => Some(Self::AtGenericOptions),
5797            "AT_AttachPartition" => Some(Self::AtAttachPartition),
5798            "AT_DetachPartition" => Some(Self::AtDetachPartition),
5799            "AT_DetachPartitionFinalize" => Some(Self::AtDetachPartitionFinalize),
5800            "AT_AddIdentity" => Some(Self::AtAddIdentity),
5801            "AT_SetIdentity" => Some(Self::AtSetIdentity),
5802            "AT_DropIdentity" => Some(Self::AtDropIdentity),
5803            "AT_ReAddStatistics" => Some(Self::AtReAddStatistics),
5804            _ => None,
5805        }
5806    }
5807}
5808#[derive(serde::Serialize)]
5809#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5810#[repr(i32)]
5811pub enum GrantTargetType {
5812    Undefined = 0,
5813    AclTargetObject = 1,
5814    AclTargetAllInSchema = 2,
5815    AclTargetDefaults = 3,
5816}
5817impl GrantTargetType {
5818    /// String value of the enum field names used in the ProtoBuf definition.
5819    ///
5820    /// The values are not transformed in any way and thus are considered stable
5821    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5822    pub fn as_str_name(&self) -> &'static str {
5823        match self {
5824            Self::Undefined => "GRANT_TARGET_TYPE_UNDEFINED",
5825            Self::AclTargetObject => "ACL_TARGET_OBJECT",
5826            Self::AclTargetAllInSchema => "ACL_TARGET_ALL_IN_SCHEMA",
5827            Self::AclTargetDefaults => "ACL_TARGET_DEFAULTS",
5828        }
5829    }
5830    /// Creates an enum from field names used in the ProtoBuf definition.
5831    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5832        match value {
5833            "GRANT_TARGET_TYPE_UNDEFINED" => Some(Self::Undefined),
5834            "ACL_TARGET_OBJECT" => Some(Self::AclTargetObject),
5835            "ACL_TARGET_ALL_IN_SCHEMA" => Some(Self::AclTargetAllInSchema),
5836            "ACL_TARGET_DEFAULTS" => Some(Self::AclTargetDefaults),
5837            _ => None,
5838        }
5839    }
5840}
5841#[derive(serde::Serialize)]
5842#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5843#[repr(i32)]
5844pub enum VariableSetKind {
5845    Undefined = 0,
5846    VarSetValue = 1,
5847    VarSetDefault = 2,
5848    VarSetCurrent = 3,
5849    VarSetMulti = 4,
5850    VarReset = 5,
5851    VarResetAll = 6,
5852}
5853impl VariableSetKind {
5854    /// String value of the enum field names used in the ProtoBuf definition.
5855    ///
5856    /// The values are not transformed in any way and thus are considered stable
5857    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5858    pub fn as_str_name(&self) -> &'static str {
5859        match self {
5860            Self::Undefined => "VARIABLE_SET_KIND_UNDEFINED",
5861            Self::VarSetValue => "VAR_SET_VALUE",
5862            Self::VarSetDefault => "VAR_SET_DEFAULT",
5863            Self::VarSetCurrent => "VAR_SET_CURRENT",
5864            Self::VarSetMulti => "VAR_SET_MULTI",
5865            Self::VarReset => "VAR_RESET",
5866            Self::VarResetAll => "VAR_RESET_ALL",
5867        }
5868    }
5869    /// Creates an enum from field names used in the ProtoBuf definition.
5870    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5871        match value {
5872            "VARIABLE_SET_KIND_UNDEFINED" => Some(Self::Undefined),
5873            "VAR_SET_VALUE" => Some(Self::VarSetValue),
5874            "VAR_SET_DEFAULT" => Some(Self::VarSetDefault),
5875            "VAR_SET_CURRENT" => Some(Self::VarSetCurrent),
5876            "VAR_SET_MULTI" => Some(Self::VarSetMulti),
5877            "VAR_RESET" => Some(Self::VarReset),
5878            "VAR_RESET_ALL" => Some(Self::VarResetAll),
5879            _ => None,
5880        }
5881    }
5882}
5883#[derive(serde::Serialize)]
5884#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5885#[repr(i32)]
5886pub enum ConstrType {
5887    Undefined = 0,
5888    ConstrNull = 1,
5889    ConstrNotnull = 2,
5890    ConstrDefault = 3,
5891    ConstrIdentity = 4,
5892    ConstrGenerated = 5,
5893    ConstrCheck = 6,
5894    ConstrPrimary = 7,
5895    ConstrUnique = 8,
5896    ConstrExclusion = 9,
5897    ConstrForeign = 10,
5898    ConstrAttrDeferrable = 11,
5899    ConstrAttrNotDeferrable = 12,
5900    ConstrAttrDeferred = 13,
5901    ConstrAttrImmediate = 14,
5902    ConstrAttrEnforced = 15,
5903    ConstrAttrNotEnforced = 16,
5904}
5905impl ConstrType {
5906    /// String value of the enum field names used in the ProtoBuf definition.
5907    ///
5908    /// The values are not transformed in any way and thus are considered stable
5909    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5910    pub fn as_str_name(&self) -> &'static str {
5911        match self {
5912            Self::Undefined => "CONSTR_TYPE_UNDEFINED",
5913            Self::ConstrNull => "CONSTR_NULL",
5914            Self::ConstrNotnull => "CONSTR_NOTNULL",
5915            Self::ConstrDefault => "CONSTR_DEFAULT",
5916            Self::ConstrIdentity => "CONSTR_IDENTITY",
5917            Self::ConstrGenerated => "CONSTR_GENERATED",
5918            Self::ConstrCheck => "CONSTR_CHECK",
5919            Self::ConstrPrimary => "CONSTR_PRIMARY",
5920            Self::ConstrUnique => "CONSTR_UNIQUE",
5921            Self::ConstrExclusion => "CONSTR_EXCLUSION",
5922            Self::ConstrForeign => "CONSTR_FOREIGN",
5923            Self::ConstrAttrDeferrable => "CONSTR_ATTR_DEFERRABLE",
5924            Self::ConstrAttrNotDeferrable => "CONSTR_ATTR_NOT_DEFERRABLE",
5925            Self::ConstrAttrDeferred => "CONSTR_ATTR_DEFERRED",
5926            Self::ConstrAttrImmediate => "CONSTR_ATTR_IMMEDIATE",
5927            Self::ConstrAttrEnforced => "CONSTR_ATTR_ENFORCED",
5928            Self::ConstrAttrNotEnforced => "CONSTR_ATTR_NOT_ENFORCED",
5929        }
5930    }
5931    /// Creates an enum from field names used in the ProtoBuf definition.
5932    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5933        match value {
5934            "CONSTR_TYPE_UNDEFINED" => Some(Self::Undefined),
5935            "CONSTR_NULL" => Some(Self::ConstrNull),
5936            "CONSTR_NOTNULL" => Some(Self::ConstrNotnull),
5937            "CONSTR_DEFAULT" => Some(Self::ConstrDefault),
5938            "CONSTR_IDENTITY" => Some(Self::ConstrIdentity),
5939            "CONSTR_GENERATED" => Some(Self::ConstrGenerated),
5940            "CONSTR_CHECK" => Some(Self::ConstrCheck),
5941            "CONSTR_PRIMARY" => Some(Self::ConstrPrimary),
5942            "CONSTR_UNIQUE" => Some(Self::ConstrUnique),
5943            "CONSTR_EXCLUSION" => Some(Self::ConstrExclusion),
5944            "CONSTR_FOREIGN" => Some(Self::ConstrForeign),
5945            "CONSTR_ATTR_DEFERRABLE" => Some(Self::ConstrAttrDeferrable),
5946            "CONSTR_ATTR_NOT_DEFERRABLE" => Some(Self::ConstrAttrNotDeferrable),
5947            "CONSTR_ATTR_DEFERRED" => Some(Self::ConstrAttrDeferred),
5948            "CONSTR_ATTR_IMMEDIATE" => Some(Self::ConstrAttrImmediate),
5949            "CONSTR_ATTR_ENFORCED" => Some(Self::ConstrAttrEnforced),
5950            "CONSTR_ATTR_NOT_ENFORCED" => Some(Self::ConstrAttrNotEnforced),
5951            _ => None,
5952        }
5953    }
5954}
5955#[derive(serde::Serialize)]
5956#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5957#[repr(i32)]
5958pub enum ImportForeignSchemaType {
5959    Undefined = 0,
5960    FdwImportSchemaAll = 1,
5961    FdwImportSchemaLimitTo = 2,
5962    FdwImportSchemaExcept = 3,
5963}
5964impl ImportForeignSchemaType {
5965    /// String value of the enum field names used in the ProtoBuf definition.
5966    ///
5967    /// The values are not transformed in any way and thus are considered stable
5968    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5969    pub fn as_str_name(&self) -> &'static str {
5970        match self {
5971            Self::Undefined => "IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED",
5972            Self::FdwImportSchemaAll => "FDW_IMPORT_SCHEMA_ALL",
5973            Self::FdwImportSchemaLimitTo => "FDW_IMPORT_SCHEMA_LIMIT_TO",
5974            Self::FdwImportSchemaExcept => "FDW_IMPORT_SCHEMA_EXCEPT",
5975        }
5976    }
5977    /// Creates an enum from field names used in the ProtoBuf definition.
5978    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5979        match value {
5980            "IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED" => Some(Self::Undefined),
5981            "FDW_IMPORT_SCHEMA_ALL" => Some(Self::FdwImportSchemaAll),
5982            "FDW_IMPORT_SCHEMA_LIMIT_TO" => Some(Self::FdwImportSchemaLimitTo),
5983            "FDW_IMPORT_SCHEMA_EXCEPT" => Some(Self::FdwImportSchemaExcept),
5984            _ => None,
5985        }
5986    }
5987}
5988#[derive(serde::Serialize)]
5989#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5990#[repr(i32)]
5991pub enum RoleStmtType {
5992    Undefined = 0,
5993    RolestmtRole = 1,
5994    RolestmtUser = 2,
5995    RolestmtGroup = 3,
5996}
5997impl RoleStmtType {
5998    /// String value of the enum field names used in the ProtoBuf definition.
5999    ///
6000    /// The values are not transformed in any way and thus are considered stable
6001    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6002    pub fn as_str_name(&self) -> &'static str {
6003        match self {
6004            Self::Undefined => "ROLE_STMT_TYPE_UNDEFINED",
6005            Self::RolestmtRole => "ROLESTMT_ROLE",
6006            Self::RolestmtUser => "ROLESTMT_USER",
6007            Self::RolestmtGroup => "ROLESTMT_GROUP",
6008        }
6009    }
6010    /// Creates an enum from field names used in the ProtoBuf definition.
6011    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6012        match value {
6013            "ROLE_STMT_TYPE_UNDEFINED" => Some(Self::Undefined),
6014            "ROLESTMT_ROLE" => Some(Self::RolestmtRole),
6015            "ROLESTMT_USER" => Some(Self::RolestmtUser),
6016            "ROLESTMT_GROUP" => Some(Self::RolestmtGroup),
6017            _ => None,
6018        }
6019    }
6020}
6021#[derive(serde::Serialize)]
6022#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6023#[repr(i32)]
6024pub enum FetchDirection {
6025    Undefined = 0,
6026    FetchForward = 1,
6027    FetchBackward = 2,
6028    FetchAbsolute = 3,
6029    FetchRelative = 4,
6030}
6031impl FetchDirection {
6032    /// String value of the enum field names used in the ProtoBuf definition.
6033    ///
6034    /// The values are not transformed in any way and thus are considered stable
6035    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6036    pub fn as_str_name(&self) -> &'static str {
6037        match self {
6038            Self::Undefined => "FETCH_DIRECTION_UNDEFINED",
6039            Self::FetchForward => "FETCH_FORWARD",
6040            Self::FetchBackward => "FETCH_BACKWARD",
6041            Self::FetchAbsolute => "FETCH_ABSOLUTE",
6042            Self::FetchRelative => "FETCH_RELATIVE",
6043        }
6044    }
6045    /// Creates an enum from field names used in the ProtoBuf definition.
6046    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6047        match value {
6048            "FETCH_DIRECTION_UNDEFINED" => Some(Self::Undefined),
6049            "FETCH_FORWARD" => Some(Self::FetchForward),
6050            "FETCH_BACKWARD" => Some(Self::FetchBackward),
6051            "FETCH_ABSOLUTE" => Some(Self::FetchAbsolute),
6052            "FETCH_RELATIVE" => Some(Self::FetchRelative),
6053            _ => None,
6054        }
6055    }
6056}
6057#[derive(serde::Serialize)]
6058#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6059#[repr(i32)]
6060pub enum FunctionParameterMode {
6061    Undefined = 0,
6062    FuncParamIn = 1,
6063    FuncParamOut = 2,
6064    FuncParamInout = 3,
6065    FuncParamVariadic = 4,
6066    FuncParamTable = 5,
6067    FuncParamDefault = 6,
6068}
6069impl FunctionParameterMode {
6070    /// String value of the enum field names used in the ProtoBuf definition.
6071    ///
6072    /// The values are not transformed in any way and thus are considered stable
6073    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6074    pub fn as_str_name(&self) -> &'static str {
6075        match self {
6076            Self::Undefined => "FUNCTION_PARAMETER_MODE_UNDEFINED",
6077            Self::FuncParamIn => "FUNC_PARAM_IN",
6078            Self::FuncParamOut => "FUNC_PARAM_OUT",
6079            Self::FuncParamInout => "FUNC_PARAM_INOUT",
6080            Self::FuncParamVariadic => "FUNC_PARAM_VARIADIC",
6081            Self::FuncParamTable => "FUNC_PARAM_TABLE",
6082            Self::FuncParamDefault => "FUNC_PARAM_DEFAULT",
6083        }
6084    }
6085    /// Creates an enum from field names used in the ProtoBuf definition.
6086    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6087        match value {
6088            "FUNCTION_PARAMETER_MODE_UNDEFINED" => Some(Self::Undefined),
6089            "FUNC_PARAM_IN" => Some(Self::FuncParamIn),
6090            "FUNC_PARAM_OUT" => Some(Self::FuncParamOut),
6091            "FUNC_PARAM_INOUT" => Some(Self::FuncParamInout),
6092            "FUNC_PARAM_VARIADIC" => Some(Self::FuncParamVariadic),
6093            "FUNC_PARAM_TABLE" => Some(Self::FuncParamTable),
6094            "FUNC_PARAM_DEFAULT" => Some(Self::FuncParamDefault),
6095            _ => None,
6096        }
6097    }
6098}
6099#[derive(serde::Serialize)]
6100#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6101#[repr(i32)]
6102pub enum TransactionStmtKind {
6103    Undefined = 0,
6104    TransStmtBegin = 1,
6105    TransStmtStart = 2,
6106    TransStmtCommit = 3,
6107    TransStmtRollback = 4,
6108    TransStmtSavepoint = 5,
6109    TransStmtRelease = 6,
6110    TransStmtRollbackTo = 7,
6111    TransStmtPrepare = 8,
6112    TransStmtCommitPrepared = 9,
6113    TransStmtRollbackPrepared = 10,
6114}
6115impl TransactionStmtKind {
6116    /// String value of the enum field names used in the ProtoBuf definition.
6117    ///
6118    /// The values are not transformed in any way and thus are considered stable
6119    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6120    pub fn as_str_name(&self) -> &'static str {
6121        match self {
6122            Self::Undefined => "TRANSACTION_STMT_KIND_UNDEFINED",
6123            Self::TransStmtBegin => "TRANS_STMT_BEGIN",
6124            Self::TransStmtStart => "TRANS_STMT_START",
6125            Self::TransStmtCommit => "TRANS_STMT_COMMIT",
6126            Self::TransStmtRollback => "TRANS_STMT_ROLLBACK",
6127            Self::TransStmtSavepoint => "TRANS_STMT_SAVEPOINT",
6128            Self::TransStmtRelease => "TRANS_STMT_RELEASE",
6129            Self::TransStmtRollbackTo => "TRANS_STMT_ROLLBACK_TO",
6130            Self::TransStmtPrepare => "TRANS_STMT_PREPARE",
6131            Self::TransStmtCommitPrepared => "TRANS_STMT_COMMIT_PREPARED",
6132            Self::TransStmtRollbackPrepared => "TRANS_STMT_ROLLBACK_PREPARED",
6133        }
6134    }
6135    /// Creates an enum from field names used in the ProtoBuf definition.
6136    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6137        match value {
6138            "TRANSACTION_STMT_KIND_UNDEFINED" => Some(Self::Undefined),
6139            "TRANS_STMT_BEGIN" => Some(Self::TransStmtBegin),
6140            "TRANS_STMT_START" => Some(Self::TransStmtStart),
6141            "TRANS_STMT_COMMIT" => Some(Self::TransStmtCommit),
6142            "TRANS_STMT_ROLLBACK" => Some(Self::TransStmtRollback),
6143            "TRANS_STMT_SAVEPOINT" => Some(Self::TransStmtSavepoint),
6144            "TRANS_STMT_RELEASE" => Some(Self::TransStmtRelease),
6145            "TRANS_STMT_ROLLBACK_TO" => Some(Self::TransStmtRollbackTo),
6146            "TRANS_STMT_PREPARE" => Some(Self::TransStmtPrepare),
6147            "TRANS_STMT_COMMIT_PREPARED" => Some(Self::TransStmtCommitPrepared),
6148            "TRANS_STMT_ROLLBACK_PREPARED" => Some(Self::TransStmtRollbackPrepared),
6149            _ => None,
6150        }
6151    }
6152}
6153#[derive(serde::Serialize)]
6154#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6155#[repr(i32)]
6156pub enum ViewCheckOption {
6157    Undefined = 0,
6158    NoCheckOption = 1,
6159    LocalCheckOption = 2,
6160    CascadedCheckOption = 3,
6161}
6162impl ViewCheckOption {
6163    /// String value of the enum field names used in the ProtoBuf definition.
6164    ///
6165    /// The values are not transformed in any way and thus are considered stable
6166    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6167    pub fn as_str_name(&self) -> &'static str {
6168        match self {
6169            Self::Undefined => "VIEW_CHECK_OPTION_UNDEFINED",
6170            Self::NoCheckOption => "NO_CHECK_OPTION",
6171            Self::LocalCheckOption => "LOCAL_CHECK_OPTION",
6172            Self::CascadedCheckOption => "CASCADED_CHECK_OPTION",
6173        }
6174    }
6175    /// Creates an enum from field names used in the ProtoBuf definition.
6176    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6177        match value {
6178            "VIEW_CHECK_OPTION_UNDEFINED" => Some(Self::Undefined),
6179            "NO_CHECK_OPTION" => Some(Self::NoCheckOption),
6180            "LOCAL_CHECK_OPTION" => Some(Self::LocalCheckOption),
6181            "CASCADED_CHECK_OPTION" => Some(Self::CascadedCheckOption),
6182            _ => None,
6183        }
6184    }
6185}
6186#[derive(serde::Serialize)]
6187#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6188#[repr(i32)]
6189pub enum DiscardMode {
6190    Undefined = 0,
6191    DiscardAll = 1,
6192    DiscardPlans = 2,
6193    DiscardSequences = 3,
6194    DiscardTemp = 4,
6195}
6196impl DiscardMode {
6197    /// String value of the enum field names used in the ProtoBuf definition.
6198    ///
6199    /// The values are not transformed in any way and thus are considered stable
6200    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6201    pub fn as_str_name(&self) -> &'static str {
6202        match self {
6203            Self::Undefined => "DISCARD_MODE_UNDEFINED",
6204            Self::DiscardAll => "DISCARD_ALL",
6205            Self::DiscardPlans => "DISCARD_PLANS",
6206            Self::DiscardSequences => "DISCARD_SEQUENCES",
6207            Self::DiscardTemp => "DISCARD_TEMP",
6208        }
6209    }
6210    /// Creates an enum from field names used in the ProtoBuf definition.
6211    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6212        match value {
6213            "DISCARD_MODE_UNDEFINED" => Some(Self::Undefined),
6214            "DISCARD_ALL" => Some(Self::DiscardAll),
6215            "DISCARD_PLANS" => Some(Self::DiscardPlans),
6216            "DISCARD_SEQUENCES" => Some(Self::DiscardSequences),
6217            "DISCARD_TEMP" => Some(Self::DiscardTemp),
6218            _ => None,
6219        }
6220    }
6221}
6222#[derive(serde::Serialize)]
6223#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6224#[repr(i32)]
6225pub enum ReindexObjectType {
6226    Undefined = 0,
6227    ReindexObjectIndex = 1,
6228    ReindexObjectTable = 2,
6229    ReindexObjectSchema = 3,
6230    ReindexObjectSystem = 4,
6231    ReindexObjectDatabase = 5,
6232}
6233impl ReindexObjectType {
6234    /// String value of the enum field names used in the ProtoBuf definition.
6235    ///
6236    /// The values are not transformed in any way and thus are considered stable
6237    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6238    pub fn as_str_name(&self) -> &'static str {
6239        match self {
6240            Self::Undefined => "REINDEX_OBJECT_TYPE_UNDEFINED",
6241            Self::ReindexObjectIndex => "REINDEX_OBJECT_INDEX",
6242            Self::ReindexObjectTable => "REINDEX_OBJECT_TABLE",
6243            Self::ReindexObjectSchema => "REINDEX_OBJECT_SCHEMA",
6244            Self::ReindexObjectSystem => "REINDEX_OBJECT_SYSTEM",
6245            Self::ReindexObjectDatabase => "REINDEX_OBJECT_DATABASE",
6246        }
6247    }
6248    /// Creates an enum from field names used in the ProtoBuf definition.
6249    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6250        match value {
6251            "REINDEX_OBJECT_TYPE_UNDEFINED" => Some(Self::Undefined),
6252            "REINDEX_OBJECT_INDEX" => Some(Self::ReindexObjectIndex),
6253            "REINDEX_OBJECT_TABLE" => Some(Self::ReindexObjectTable),
6254            "REINDEX_OBJECT_SCHEMA" => Some(Self::ReindexObjectSchema),
6255            "REINDEX_OBJECT_SYSTEM" => Some(Self::ReindexObjectSystem),
6256            "REINDEX_OBJECT_DATABASE" => Some(Self::ReindexObjectDatabase),
6257            _ => None,
6258        }
6259    }
6260}
6261#[derive(serde::Serialize)]
6262#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6263#[repr(i32)]
6264pub enum AlterTsConfigType {
6265    AlterTsconfigTypeUndefined = 0,
6266    AlterTsconfigAddMapping = 1,
6267    AlterTsconfigAlterMappingForToken = 2,
6268    AlterTsconfigReplaceDict = 3,
6269    AlterTsconfigReplaceDictForToken = 4,
6270    AlterTsconfigDropMapping = 5,
6271}
6272impl AlterTsConfigType {
6273    /// String value of the enum field names used in the ProtoBuf definition.
6274    ///
6275    /// The values are not transformed in any way and thus are considered stable
6276    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6277    pub fn as_str_name(&self) -> &'static str {
6278        match self {
6279            Self::AlterTsconfigTypeUndefined => "ALTER_TSCONFIG_TYPE_UNDEFINED",
6280            Self::AlterTsconfigAddMapping => "ALTER_TSCONFIG_ADD_MAPPING",
6281            Self::AlterTsconfigAlterMappingForToken => {
6282                "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN"
6283            }
6284            Self::AlterTsconfigReplaceDict => "ALTER_TSCONFIG_REPLACE_DICT",
6285            Self::AlterTsconfigReplaceDictForToken => {
6286                "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN"
6287            }
6288            Self::AlterTsconfigDropMapping => "ALTER_TSCONFIG_DROP_MAPPING",
6289        }
6290    }
6291    /// Creates an enum from field names used in the ProtoBuf definition.
6292    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6293        match value {
6294            "ALTER_TSCONFIG_TYPE_UNDEFINED" => Some(Self::AlterTsconfigTypeUndefined),
6295            "ALTER_TSCONFIG_ADD_MAPPING" => Some(Self::AlterTsconfigAddMapping),
6296            "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN" => {
6297                Some(Self::AlterTsconfigAlterMappingForToken)
6298            }
6299            "ALTER_TSCONFIG_REPLACE_DICT" => Some(Self::AlterTsconfigReplaceDict),
6300            "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN" => {
6301                Some(Self::AlterTsconfigReplaceDictForToken)
6302            }
6303            "ALTER_TSCONFIG_DROP_MAPPING" => Some(Self::AlterTsconfigDropMapping),
6304            _ => None,
6305        }
6306    }
6307}
6308#[derive(serde::Serialize)]
6309#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6310#[repr(i32)]
6311pub enum PublicationObjSpecType {
6312    Undefined = 0,
6313    PublicationobjTable = 1,
6314    PublicationobjTablesInSchema = 2,
6315    PublicationobjTablesInCurSchema = 3,
6316    PublicationobjContinuation = 4,
6317}
6318impl PublicationObjSpecType {
6319    /// String value of the enum field names used in the ProtoBuf definition.
6320    ///
6321    /// The values are not transformed in any way and thus are considered stable
6322    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6323    pub fn as_str_name(&self) -> &'static str {
6324        match self {
6325            Self::Undefined => "PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED",
6326            Self::PublicationobjTable => "PUBLICATIONOBJ_TABLE",
6327            Self::PublicationobjTablesInSchema => "PUBLICATIONOBJ_TABLES_IN_SCHEMA",
6328            Self::PublicationobjTablesInCurSchema => {
6329                "PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA"
6330            }
6331            Self::PublicationobjContinuation => "PUBLICATIONOBJ_CONTINUATION",
6332        }
6333    }
6334    /// Creates an enum from field names used in the ProtoBuf definition.
6335    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6336        match value {
6337            "PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED" => Some(Self::Undefined),
6338            "PUBLICATIONOBJ_TABLE" => Some(Self::PublicationobjTable),
6339            "PUBLICATIONOBJ_TABLES_IN_SCHEMA" => Some(Self::PublicationobjTablesInSchema),
6340            "PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA" => {
6341                Some(Self::PublicationobjTablesInCurSchema)
6342            }
6343            "PUBLICATIONOBJ_CONTINUATION" => Some(Self::PublicationobjContinuation),
6344            _ => None,
6345        }
6346    }
6347}
6348#[derive(serde::Serialize)]
6349#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6350#[repr(i32)]
6351pub enum AlterPublicationAction {
6352    Undefined = 0,
6353    ApAddObjects = 1,
6354    ApDropObjects = 2,
6355    ApSetObjects = 3,
6356}
6357impl AlterPublicationAction {
6358    /// String value of the enum field names used in the ProtoBuf definition.
6359    ///
6360    /// The values are not transformed in any way and thus are considered stable
6361    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6362    pub fn as_str_name(&self) -> &'static str {
6363        match self {
6364            Self::Undefined => "ALTER_PUBLICATION_ACTION_UNDEFINED",
6365            Self::ApAddObjects => "AP_AddObjects",
6366            Self::ApDropObjects => "AP_DropObjects",
6367            Self::ApSetObjects => "AP_SetObjects",
6368        }
6369    }
6370    /// Creates an enum from field names used in the ProtoBuf definition.
6371    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6372        match value {
6373            "ALTER_PUBLICATION_ACTION_UNDEFINED" => Some(Self::Undefined),
6374            "AP_AddObjects" => Some(Self::ApAddObjects),
6375            "AP_DropObjects" => Some(Self::ApDropObjects),
6376            "AP_SetObjects" => Some(Self::ApSetObjects),
6377            _ => None,
6378        }
6379    }
6380}
6381#[derive(serde::Serialize)]
6382#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6383#[repr(i32)]
6384pub enum AlterSubscriptionType {
6385    Undefined = 0,
6386    AlterSubscriptionOptions = 1,
6387    AlterSubscriptionConnection = 2,
6388    AlterSubscriptionSetPublication = 3,
6389    AlterSubscriptionAddPublication = 4,
6390    AlterSubscriptionDropPublication = 5,
6391    AlterSubscriptionRefresh = 6,
6392    AlterSubscriptionEnabled = 7,
6393    AlterSubscriptionSkip = 8,
6394}
6395impl AlterSubscriptionType {
6396    /// String value of the enum field names used in the ProtoBuf definition.
6397    ///
6398    /// The values are not transformed in any way and thus are considered stable
6399    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6400    pub fn as_str_name(&self) -> &'static str {
6401        match self {
6402            Self::Undefined => "ALTER_SUBSCRIPTION_TYPE_UNDEFINED",
6403            Self::AlterSubscriptionOptions => "ALTER_SUBSCRIPTION_OPTIONS",
6404            Self::AlterSubscriptionConnection => "ALTER_SUBSCRIPTION_CONNECTION",
6405            Self::AlterSubscriptionSetPublication => "ALTER_SUBSCRIPTION_SET_PUBLICATION",
6406            Self::AlterSubscriptionAddPublication => "ALTER_SUBSCRIPTION_ADD_PUBLICATION",
6407            Self::AlterSubscriptionDropPublication => {
6408                "ALTER_SUBSCRIPTION_DROP_PUBLICATION"
6409            }
6410            Self::AlterSubscriptionRefresh => "ALTER_SUBSCRIPTION_REFRESH",
6411            Self::AlterSubscriptionEnabled => "ALTER_SUBSCRIPTION_ENABLED",
6412            Self::AlterSubscriptionSkip => "ALTER_SUBSCRIPTION_SKIP",
6413        }
6414    }
6415    /// Creates an enum from field names used in the ProtoBuf definition.
6416    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6417        match value {
6418            "ALTER_SUBSCRIPTION_TYPE_UNDEFINED" => Some(Self::Undefined),
6419            "ALTER_SUBSCRIPTION_OPTIONS" => Some(Self::AlterSubscriptionOptions),
6420            "ALTER_SUBSCRIPTION_CONNECTION" => Some(Self::AlterSubscriptionConnection),
6421            "ALTER_SUBSCRIPTION_SET_PUBLICATION" => {
6422                Some(Self::AlterSubscriptionSetPublication)
6423            }
6424            "ALTER_SUBSCRIPTION_ADD_PUBLICATION" => {
6425                Some(Self::AlterSubscriptionAddPublication)
6426            }
6427            "ALTER_SUBSCRIPTION_DROP_PUBLICATION" => {
6428                Some(Self::AlterSubscriptionDropPublication)
6429            }
6430            "ALTER_SUBSCRIPTION_REFRESH" => Some(Self::AlterSubscriptionRefresh),
6431            "ALTER_SUBSCRIPTION_ENABLED" => Some(Self::AlterSubscriptionEnabled),
6432            "ALTER_SUBSCRIPTION_SKIP" => Some(Self::AlterSubscriptionSkip),
6433            _ => None,
6434        }
6435    }
6436}
6437#[derive(serde::Serialize)]
6438#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6439#[repr(i32)]
6440pub enum OverridingKind {
6441    Undefined = 0,
6442    OverridingNotSet = 1,
6443    OverridingUserValue = 2,
6444    OverridingSystemValue = 3,
6445}
6446impl OverridingKind {
6447    /// String value of the enum field names used in the ProtoBuf definition.
6448    ///
6449    /// The values are not transformed in any way and thus are considered stable
6450    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6451    pub fn as_str_name(&self) -> &'static str {
6452        match self {
6453            Self::Undefined => "OVERRIDING_KIND_UNDEFINED",
6454            Self::OverridingNotSet => "OVERRIDING_NOT_SET",
6455            Self::OverridingUserValue => "OVERRIDING_USER_VALUE",
6456            Self::OverridingSystemValue => "OVERRIDING_SYSTEM_VALUE",
6457        }
6458    }
6459    /// Creates an enum from field names used in the ProtoBuf definition.
6460    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6461        match value {
6462            "OVERRIDING_KIND_UNDEFINED" => Some(Self::Undefined),
6463            "OVERRIDING_NOT_SET" => Some(Self::OverridingNotSet),
6464            "OVERRIDING_USER_VALUE" => Some(Self::OverridingUserValue),
6465            "OVERRIDING_SYSTEM_VALUE" => Some(Self::OverridingSystemValue),
6466            _ => None,
6467        }
6468    }
6469}
6470#[derive(serde::Serialize)]
6471#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6472#[repr(i32)]
6473pub enum OnCommitAction {
6474    Undefined = 0,
6475    OncommitNoop = 1,
6476    OncommitPreserveRows = 2,
6477    OncommitDeleteRows = 3,
6478    OncommitDrop = 4,
6479}
6480impl OnCommitAction {
6481    /// String value of the enum field names used in the ProtoBuf definition.
6482    ///
6483    /// The values are not transformed in any way and thus are considered stable
6484    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6485    pub fn as_str_name(&self) -> &'static str {
6486        match self {
6487            Self::Undefined => "ON_COMMIT_ACTION_UNDEFINED",
6488            Self::OncommitNoop => "ONCOMMIT_NOOP",
6489            Self::OncommitPreserveRows => "ONCOMMIT_PRESERVE_ROWS",
6490            Self::OncommitDeleteRows => "ONCOMMIT_DELETE_ROWS",
6491            Self::OncommitDrop => "ONCOMMIT_DROP",
6492        }
6493    }
6494    /// Creates an enum from field names used in the ProtoBuf definition.
6495    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6496        match value {
6497            "ON_COMMIT_ACTION_UNDEFINED" => Some(Self::Undefined),
6498            "ONCOMMIT_NOOP" => Some(Self::OncommitNoop),
6499            "ONCOMMIT_PRESERVE_ROWS" => Some(Self::OncommitPreserveRows),
6500            "ONCOMMIT_DELETE_ROWS" => Some(Self::OncommitDeleteRows),
6501            "ONCOMMIT_DROP" => Some(Self::OncommitDrop),
6502            _ => None,
6503        }
6504    }
6505}
6506#[derive(serde::Serialize)]
6507#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6508#[repr(i32)]
6509pub enum TableFuncType {
6510    Undefined = 0,
6511    TftXmltable = 1,
6512    TftJsonTable = 2,
6513}
6514impl TableFuncType {
6515    /// String value of the enum field names used in the ProtoBuf definition.
6516    ///
6517    /// The values are not transformed in any way and thus are considered stable
6518    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6519    pub fn as_str_name(&self) -> &'static str {
6520        match self {
6521            Self::Undefined => "TABLE_FUNC_TYPE_UNDEFINED",
6522            Self::TftXmltable => "TFT_XMLTABLE",
6523            Self::TftJsonTable => "TFT_JSON_TABLE",
6524        }
6525    }
6526    /// Creates an enum from field names used in the ProtoBuf definition.
6527    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6528        match value {
6529            "TABLE_FUNC_TYPE_UNDEFINED" => Some(Self::Undefined),
6530            "TFT_XMLTABLE" => Some(Self::TftXmltable),
6531            "TFT_JSON_TABLE" => Some(Self::TftJsonTable),
6532            _ => None,
6533        }
6534    }
6535}
6536#[derive(serde::Serialize)]
6537#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6538#[repr(i32)]
6539pub enum VarReturningType {
6540    Undefined = 0,
6541    VarReturningDefault = 1,
6542    VarReturningOld = 2,
6543    VarReturningNew = 3,
6544}
6545impl VarReturningType {
6546    /// String value of the enum field names used in the ProtoBuf definition.
6547    ///
6548    /// The values are not transformed in any way and thus are considered stable
6549    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6550    pub fn as_str_name(&self) -> &'static str {
6551        match self {
6552            Self::Undefined => "VAR_RETURNING_TYPE_UNDEFINED",
6553            Self::VarReturningDefault => "VAR_RETURNING_DEFAULT",
6554            Self::VarReturningOld => "VAR_RETURNING_OLD",
6555            Self::VarReturningNew => "VAR_RETURNING_NEW",
6556        }
6557    }
6558    /// Creates an enum from field names used in the ProtoBuf definition.
6559    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6560        match value {
6561            "VAR_RETURNING_TYPE_UNDEFINED" => Some(Self::Undefined),
6562            "VAR_RETURNING_DEFAULT" => Some(Self::VarReturningDefault),
6563            "VAR_RETURNING_OLD" => Some(Self::VarReturningOld),
6564            "VAR_RETURNING_NEW" => Some(Self::VarReturningNew),
6565            _ => None,
6566        }
6567    }
6568}
6569#[derive(serde::Serialize)]
6570#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6571#[repr(i32)]
6572pub enum ParamKind {
6573    Undefined = 0,
6574    ParamExtern = 1,
6575    ParamExec = 2,
6576    ParamSublink = 3,
6577    ParamMultiexpr = 4,
6578}
6579impl ParamKind {
6580    /// String value of the enum field names used in the ProtoBuf definition.
6581    ///
6582    /// The values are not transformed in any way and thus are considered stable
6583    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6584    pub fn as_str_name(&self) -> &'static str {
6585        match self {
6586            Self::Undefined => "PARAM_KIND_UNDEFINED",
6587            Self::ParamExtern => "PARAM_EXTERN",
6588            Self::ParamExec => "PARAM_EXEC",
6589            Self::ParamSublink => "PARAM_SUBLINK",
6590            Self::ParamMultiexpr => "PARAM_MULTIEXPR",
6591        }
6592    }
6593    /// Creates an enum from field names used in the ProtoBuf definition.
6594    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6595        match value {
6596            "PARAM_KIND_UNDEFINED" => Some(Self::Undefined),
6597            "PARAM_EXTERN" => Some(Self::ParamExtern),
6598            "PARAM_EXEC" => Some(Self::ParamExec),
6599            "PARAM_SUBLINK" => Some(Self::ParamSublink),
6600            "PARAM_MULTIEXPR" => Some(Self::ParamMultiexpr),
6601            _ => None,
6602        }
6603    }
6604}
6605#[derive(serde::Serialize)]
6606#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6607#[repr(i32)]
6608pub enum CoercionContext {
6609    Undefined = 0,
6610    CoercionImplicit = 1,
6611    CoercionAssignment = 2,
6612    CoercionPlpgsql = 3,
6613    CoercionExplicit = 4,
6614}
6615impl CoercionContext {
6616    /// String value of the enum field names used in the ProtoBuf definition.
6617    ///
6618    /// The values are not transformed in any way and thus are considered stable
6619    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6620    pub fn as_str_name(&self) -> &'static str {
6621        match self {
6622            Self::Undefined => "COERCION_CONTEXT_UNDEFINED",
6623            Self::CoercionImplicit => "COERCION_IMPLICIT",
6624            Self::CoercionAssignment => "COERCION_ASSIGNMENT",
6625            Self::CoercionPlpgsql => "COERCION_PLPGSQL",
6626            Self::CoercionExplicit => "COERCION_EXPLICIT",
6627        }
6628    }
6629    /// Creates an enum from field names used in the ProtoBuf definition.
6630    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6631        match value {
6632            "COERCION_CONTEXT_UNDEFINED" => Some(Self::Undefined),
6633            "COERCION_IMPLICIT" => Some(Self::CoercionImplicit),
6634            "COERCION_ASSIGNMENT" => Some(Self::CoercionAssignment),
6635            "COERCION_PLPGSQL" => Some(Self::CoercionPlpgsql),
6636            "COERCION_EXPLICIT" => Some(Self::CoercionExplicit),
6637            _ => None,
6638        }
6639    }
6640}
6641#[derive(serde::Serialize)]
6642#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6643#[repr(i32)]
6644pub enum CoercionForm {
6645    Undefined = 0,
6646    CoerceExplicitCall = 1,
6647    CoerceExplicitCast = 2,
6648    CoerceImplicitCast = 3,
6649    CoerceSqlSyntax = 4,
6650}
6651impl CoercionForm {
6652    /// String value of the enum field names used in the ProtoBuf definition.
6653    ///
6654    /// The values are not transformed in any way and thus are considered stable
6655    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6656    pub fn as_str_name(&self) -> &'static str {
6657        match self {
6658            Self::Undefined => "COERCION_FORM_UNDEFINED",
6659            Self::CoerceExplicitCall => "COERCE_EXPLICIT_CALL",
6660            Self::CoerceExplicitCast => "COERCE_EXPLICIT_CAST",
6661            Self::CoerceImplicitCast => "COERCE_IMPLICIT_CAST",
6662            Self::CoerceSqlSyntax => "COERCE_SQL_SYNTAX",
6663        }
6664    }
6665    /// Creates an enum from field names used in the ProtoBuf definition.
6666    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6667        match value {
6668            "COERCION_FORM_UNDEFINED" => Some(Self::Undefined),
6669            "COERCE_EXPLICIT_CALL" => Some(Self::CoerceExplicitCall),
6670            "COERCE_EXPLICIT_CAST" => Some(Self::CoerceExplicitCast),
6671            "COERCE_IMPLICIT_CAST" => Some(Self::CoerceImplicitCast),
6672            "COERCE_SQL_SYNTAX" => Some(Self::CoerceSqlSyntax),
6673            _ => None,
6674        }
6675    }
6676}
6677#[derive(serde::Serialize)]
6678#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6679#[repr(i32)]
6680pub enum BoolExprType {
6681    Undefined = 0,
6682    AndExpr = 1,
6683    OrExpr = 2,
6684    NotExpr = 3,
6685}
6686impl BoolExprType {
6687    /// String value of the enum field names used in the ProtoBuf definition.
6688    ///
6689    /// The values are not transformed in any way and thus are considered stable
6690    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6691    pub fn as_str_name(&self) -> &'static str {
6692        match self {
6693            Self::Undefined => "BOOL_EXPR_TYPE_UNDEFINED",
6694            Self::AndExpr => "AND_EXPR",
6695            Self::OrExpr => "OR_EXPR",
6696            Self::NotExpr => "NOT_EXPR",
6697        }
6698    }
6699    /// Creates an enum from field names used in the ProtoBuf definition.
6700    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6701        match value {
6702            "BOOL_EXPR_TYPE_UNDEFINED" => Some(Self::Undefined),
6703            "AND_EXPR" => Some(Self::AndExpr),
6704            "OR_EXPR" => Some(Self::OrExpr),
6705            "NOT_EXPR" => Some(Self::NotExpr),
6706            _ => None,
6707        }
6708    }
6709}
6710#[derive(serde::Serialize)]
6711#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6712#[repr(i32)]
6713pub enum SubLinkType {
6714    Undefined = 0,
6715    ExistsSublink = 1,
6716    AllSublink = 2,
6717    AnySublink = 3,
6718    RowcompareSublink = 4,
6719    ExprSublink = 5,
6720    MultiexprSublink = 6,
6721    ArraySublink = 7,
6722    CteSublink = 8,
6723}
6724impl SubLinkType {
6725    /// String value of the enum field names used in the ProtoBuf definition.
6726    ///
6727    /// The values are not transformed in any way and thus are considered stable
6728    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6729    pub fn as_str_name(&self) -> &'static str {
6730        match self {
6731            Self::Undefined => "SUB_LINK_TYPE_UNDEFINED",
6732            Self::ExistsSublink => "EXISTS_SUBLINK",
6733            Self::AllSublink => "ALL_SUBLINK",
6734            Self::AnySublink => "ANY_SUBLINK",
6735            Self::RowcompareSublink => "ROWCOMPARE_SUBLINK",
6736            Self::ExprSublink => "EXPR_SUBLINK",
6737            Self::MultiexprSublink => "MULTIEXPR_SUBLINK",
6738            Self::ArraySublink => "ARRAY_SUBLINK",
6739            Self::CteSublink => "CTE_SUBLINK",
6740        }
6741    }
6742    /// Creates an enum from field names used in the ProtoBuf definition.
6743    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6744        match value {
6745            "SUB_LINK_TYPE_UNDEFINED" => Some(Self::Undefined),
6746            "EXISTS_SUBLINK" => Some(Self::ExistsSublink),
6747            "ALL_SUBLINK" => Some(Self::AllSublink),
6748            "ANY_SUBLINK" => Some(Self::AnySublink),
6749            "ROWCOMPARE_SUBLINK" => Some(Self::RowcompareSublink),
6750            "EXPR_SUBLINK" => Some(Self::ExprSublink),
6751            "MULTIEXPR_SUBLINK" => Some(Self::MultiexprSublink),
6752            "ARRAY_SUBLINK" => Some(Self::ArraySublink),
6753            "CTE_SUBLINK" => Some(Self::CteSublink),
6754            _ => None,
6755        }
6756    }
6757}
6758#[derive(serde::Serialize)]
6759#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6760#[repr(i32)]
6761pub enum MinMaxOp {
6762    Undefined = 0,
6763    IsGreatest = 1,
6764    IsLeast = 2,
6765}
6766impl MinMaxOp {
6767    /// String value of the enum field names used in the ProtoBuf definition.
6768    ///
6769    /// The values are not transformed in any way and thus are considered stable
6770    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6771    pub fn as_str_name(&self) -> &'static str {
6772        match self {
6773            Self::Undefined => "MIN_MAX_OP_UNDEFINED",
6774            Self::IsGreatest => "IS_GREATEST",
6775            Self::IsLeast => "IS_LEAST",
6776        }
6777    }
6778    /// Creates an enum from field names used in the ProtoBuf definition.
6779    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6780        match value {
6781            "MIN_MAX_OP_UNDEFINED" => Some(Self::Undefined),
6782            "IS_GREATEST" => Some(Self::IsGreatest),
6783            "IS_LEAST" => Some(Self::IsLeast),
6784            _ => None,
6785        }
6786    }
6787}
6788#[derive(serde::Serialize)]
6789#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6790#[repr(i32)]
6791pub enum SqlValueFunctionOp {
6792    SqlvalueFunctionOpUndefined = 0,
6793    SvfopCurrentDate = 1,
6794    SvfopCurrentTime = 2,
6795    SvfopCurrentTimeN = 3,
6796    SvfopCurrentTimestamp = 4,
6797    SvfopCurrentTimestampN = 5,
6798    SvfopLocaltime = 6,
6799    SvfopLocaltimeN = 7,
6800    SvfopLocaltimestamp = 8,
6801    SvfopLocaltimestampN = 9,
6802    SvfopCurrentRole = 10,
6803    SvfopCurrentUser = 11,
6804    SvfopUser = 12,
6805    SvfopSessionUser = 13,
6806    SvfopCurrentCatalog = 14,
6807    SvfopCurrentSchema = 15,
6808}
6809impl SqlValueFunctionOp {
6810    /// String value of the enum field names used in the ProtoBuf definition.
6811    ///
6812    /// The values are not transformed in any way and thus are considered stable
6813    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6814    pub fn as_str_name(&self) -> &'static str {
6815        match self {
6816            Self::SqlvalueFunctionOpUndefined => "SQLVALUE_FUNCTION_OP_UNDEFINED",
6817            Self::SvfopCurrentDate => "SVFOP_CURRENT_DATE",
6818            Self::SvfopCurrentTime => "SVFOP_CURRENT_TIME",
6819            Self::SvfopCurrentTimeN => "SVFOP_CURRENT_TIME_N",
6820            Self::SvfopCurrentTimestamp => "SVFOP_CURRENT_TIMESTAMP",
6821            Self::SvfopCurrentTimestampN => "SVFOP_CURRENT_TIMESTAMP_N",
6822            Self::SvfopLocaltime => "SVFOP_LOCALTIME",
6823            Self::SvfopLocaltimeN => "SVFOP_LOCALTIME_N",
6824            Self::SvfopLocaltimestamp => "SVFOP_LOCALTIMESTAMP",
6825            Self::SvfopLocaltimestampN => "SVFOP_LOCALTIMESTAMP_N",
6826            Self::SvfopCurrentRole => "SVFOP_CURRENT_ROLE",
6827            Self::SvfopCurrentUser => "SVFOP_CURRENT_USER",
6828            Self::SvfopUser => "SVFOP_USER",
6829            Self::SvfopSessionUser => "SVFOP_SESSION_USER",
6830            Self::SvfopCurrentCatalog => "SVFOP_CURRENT_CATALOG",
6831            Self::SvfopCurrentSchema => "SVFOP_CURRENT_SCHEMA",
6832        }
6833    }
6834    /// Creates an enum from field names used in the ProtoBuf definition.
6835    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6836        match value {
6837            "SQLVALUE_FUNCTION_OP_UNDEFINED" => Some(Self::SqlvalueFunctionOpUndefined),
6838            "SVFOP_CURRENT_DATE" => Some(Self::SvfopCurrentDate),
6839            "SVFOP_CURRENT_TIME" => Some(Self::SvfopCurrentTime),
6840            "SVFOP_CURRENT_TIME_N" => Some(Self::SvfopCurrentTimeN),
6841            "SVFOP_CURRENT_TIMESTAMP" => Some(Self::SvfopCurrentTimestamp),
6842            "SVFOP_CURRENT_TIMESTAMP_N" => Some(Self::SvfopCurrentTimestampN),
6843            "SVFOP_LOCALTIME" => Some(Self::SvfopLocaltime),
6844            "SVFOP_LOCALTIME_N" => Some(Self::SvfopLocaltimeN),
6845            "SVFOP_LOCALTIMESTAMP" => Some(Self::SvfopLocaltimestamp),
6846            "SVFOP_LOCALTIMESTAMP_N" => Some(Self::SvfopLocaltimestampN),
6847            "SVFOP_CURRENT_ROLE" => Some(Self::SvfopCurrentRole),
6848            "SVFOP_CURRENT_USER" => Some(Self::SvfopCurrentUser),
6849            "SVFOP_USER" => Some(Self::SvfopUser),
6850            "SVFOP_SESSION_USER" => Some(Self::SvfopSessionUser),
6851            "SVFOP_CURRENT_CATALOG" => Some(Self::SvfopCurrentCatalog),
6852            "SVFOP_CURRENT_SCHEMA" => Some(Self::SvfopCurrentSchema),
6853            _ => None,
6854        }
6855    }
6856}
6857#[derive(serde::Serialize)]
6858#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6859#[repr(i32)]
6860pub enum XmlExprOp {
6861    Undefined = 0,
6862    IsXmlconcat = 1,
6863    IsXmlelement = 2,
6864    IsXmlforest = 3,
6865    IsXmlparse = 4,
6866    IsXmlpi = 5,
6867    IsXmlroot = 6,
6868    IsXmlserialize = 7,
6869    IsDocument = 8,
6870}
6871impl XmlExprOp {
6872    /// String value of the enum field names used in the ProtoBuf definition.
6873    ///
6874    /// The values are not transformed in any way and thus are considered stable
6875    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6876    pub fn as_str_name(&self) -> &'static str {
6877        match self {
6878            Self::Undefined => "XML_EXPR_OP_UNDEFINED",
6879            Self::IsXmlconcat => "IS_XMLCONCAT",
6880            Self::IsXmlelement => "IS_XMLELEMENT",
6881            Self::IsXmlforest => "IS_XMLFOREST",
6882            Self::IsXmlparse => "IS_XMLPARSE",
6883            Self::IsXmlpi => "IS_XMLPI",
6884            Self::IsXmlroot => "IS_XMLROOT",
6885            Self::IsXmlserialize => "IS_XMLSERIALIZE",
6886            Self::IsDocument => "IS_DOCUMENT",
6887        }
6888    }
6889    /// Creates an enum from field names used in the ProtoBuf definition.
6890    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6891        match value {
6892            "XML_EXPR_OP_UNDEFINED" => Some(Self::Undefined),
6893            "IS_XMLCONCAT" => Some(Self::IsXmlconcat),
6894            "IS_XMLELEMENT" => Some(Self::IsXmlelement),
6895            "IS_XMLFOREST" => Some(Self::IsXmlforest),
6896            "IS_XMLPARSE" => Some(Self::IsXmlparse),
6897            "IS_XMLPI" => Some(Self::IsXmlpi),
6898            "IS_XMLROOT" => Some(Self::IsXmlroot),
6899            "IS_XMLSERIALIZE" => Some(Self::IsXmlserialize),
6900            "IS_DOCUMENT" => Some(Self::IsDocument),
6901            _ => None,
6902        }
6903    }
6904}
6905#[derive(serde::Serialize)]
6906#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6907#[repr(i32)]
6908pub enum XmlOptionType {
6909    Undefined = 0,
6910    XmloptionDocument = 1,
6911    XmloptionContent = 2,
6912}
6913impl XmlOptionType {
6914    /// String value of the enum field names used in the ProtoBuf definition.
6915    ///
6916    /// The values are not transformed in any way and thus are considered stable
6917    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6918    pub fn as_str_name(&self) -> &'static str {
6919        match self {
6920            Self::Undefined => "XML_OPTION_TYPE_UNDEFINED",
6921            Self::XmloptionDocument => "XMLOPTION_DOCUMENT",
6922            Self::XmloptionContent => "XMLOPTION_CONTENT",
6923        }
6924    }
6925    /// Creates an enum from field names used in the ProtoBuf definition.
6926    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6927        match value {
6928            "XML_OPTION_TYPE_UNDEFINED" => Some(Self::Undefined),
6929            "XMLOPTION_DOCUMENT" => Some(Self::XmloptionDocument),
6930            "XMLOPTION_CONTENT" => Some(Self::XmloptionContent),
6931            _ => None,
6932        }
6933    }
6934}
6935#[derive(serde::Serialize)]
6936#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6937#[repr(i32)]
6938pub enum JsonEncoding {
6939    Undefined = 0,
6940    JsEncDefault = 1,
6941    JsEncUtf8 = 2,
6942    JsEncUtf16 = 3,
6943    JsEncUtf32 = 4,
6944}
6945impl JsonEncoding {
6946    /// String value of the enum field names used in the ProtoBuf definition.
6947    ///
6948    /// The values are not transformed in any way and thus are considered stable
6949    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6950    pub fn as_str_name(&self) -> &'static str {
6951        match self {
6952            Self::Undefined => "JSON_ENCODING_UNDEFINED",
6953            Self::JsEncDefault => "JS_ENC_DEFAULT",
6954            Self::JsEncUtf8 => "JS_ENC_UTF8",
6955            Self::JsEncUtf16 => "JS_ENC_UTF16",
6956            Self::JsEncUtf32 => "JS_ENC_UTF32",
6957        }
6958    }
6959    /// Creates an enum from field names used in the ProtoBuf definition.
6960    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6961        match value {
6962            "JSON_ENCODING_UNDEFINED" => Some(Self::Undefined),
6963            "JS_ENC_DEFAULT" => Some(Self::JsEncDefault),
6964            "JS_ENC_UTF8" => Some(Self::JsEncUtf8),
6965            "JS_ENC_UTF16" => Some(Self::JsEncUtf16),
6966            "JS_ENC_UTF32" => Some(Self::JsEncUtf32),
6967            _ => None,
6968        }
6969    }
6970}
6971#[derive(serde::Serialize)]
6972#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6973#[repr(i32)]
6974pub enum JsonFormatType {
6975    Undefined = 0,
6976    JsFormatDefault = 1,
6977    JsFormatJson = 2,
6978    JsFormatJsonb = 3,
6979}
6980impl JsonFormatType {
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 => "JSON_FORMAT_TYPE_UNDEFINED",
6988            Self::JsFormatDefault => "JS_FORMAT_DEFAULT",
6989            Self::JsFormatJson => "JS_FORMAT_JSON",
6990            Self::JsFormatJsonb => "JS_FORMAT_JSONB",
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            "JSON_FORMAT_TYPE_UNDEFINED" => Some(Self::Undefined),
6997            "JS_FORMAT_DEFAULT" => Some(Self::JsFormatDefault),
6998            "JS_FORMAT_JSON" => Some(Self::JsFormatJson),
6999            "JS_FORMAT_JSONB" => Some(Self::JsFormatJsonb),
7000            _ => None,
7001        }
7002    }
7003}
7004#[derive(serde::Serialize)]
7005#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7006#[repr(i32)]
7007pub enum JsonConstructorType {
7008    Undefined = 0,
7009    JsctorJsonObject = 1,
7010    JsctorJsonArray = 2,
7011    JsctorJsonObjectagg = 3,
7012    JsctorJsonArrayagg = 4,
7013    JsctorJsonParse = 5,
7014    JsctorJsonScalar = 6,
7015    JsctorJsonSerialize = 7,
7016}
7017impl JsonConstructorType {
7018    /// String value of the enum field names used in the ProtoBuf definition.
7019    ///
7020    /// The values are not transformed in any way and thus are considered stable
7021    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7022    pub fn as_str_name(&self) -> &'static str {
7023        match self {
7024            Self::Undefined => "JSON_CONSTRUCTOR_TYPE_UNDEFINED",
7025            Self::JsctorJsonObject => "JSCTOR_JSON_OBJECT",
7026            Self::JsctorJsonArray => "JSCTOR_JSON_ARRAY",
7027            Self::JsctorJsonObjectagg => "JSCTOR_JSON_OBJECTAGG",
7028            Self::JsctorJsonArrayagg => "JSCTOR_JSON_ARRAYAGG",
7029            Self::JsctorJsonParse => "JSCTOR_JSON_PARSE",
7030            Self::JsctorJsonScalar => "JSCTOR_JSON_SCALAR",
7031            Self::JsctorJsonSerialize => "JSCTOR_JSON_SERIALIZE",
7032        }
7033    }
7034    /// Creates an enum from field names used in the ProtoBuf definition.
7035    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7036        match value {
7037            "JSON_CONSTRUCTOR_TYPE_UNDEFINED" => Some(Self::Undefined),
7038            "JSCTOR_JSON_OBJECT" => Some(Self::JsctorJsonObject),
7039            "JSCTOR_JSON_ARRAY" => Some(Self::JsctorJsonArray),
7040            "JSCTOR_JSON_OBJECTAGG" => Some(Self::JsctorJsonObjectagg),
7041            "JSCTOR_JSON_ARRAYAGG" => Some(Self::JsctorJsonArrayagg),
7042            "JSCTOR_JSON_PARSE" => Some(Self::JsctorJsonParse),
7043            "JSCTOR_JSON_SCALAR" => Some(Self::JsctorJsonScalar),
7044            "JSCTOR_JSON_SERIALIZE" => Some(Self::JsctorJsonSerialize),
7045            _ => None,
7046        }
7047    }
7048}
7049#[derive(serde::Serialize)]
7050#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7051#[repr(i32)]
7052pub enum JsonValueType {
7053    Undefined = 0,
7054    JsTypeAny = 1,
7055    JsTypeObject = 2,
7056    JsTypeArray = 3,
7057    JsTypeScalar = 4,
7058}
7059impl JsonValueType {
7060    /// String value of the enum field names used in the ProtoBuf definition.
7061    ///
7062    /// The values are not transformed in any way and thus are considered stable
7063    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7064    pub fn as_str_name(&self) -> &'static str {
7065        match self {
7066            Self::Undefined => "JSON_VALUE_TYPE_UNDEFINED",
7067            Self::JsTypeAny => "JS_TYPE_ANY",
7068            Self::JsTypeObject => "JS_TYPE_OBJECT",
7069            Self::JsTypeArray => "JS_TYPE_ARRAY",
7070            Self::JsTypeScalar => "JS_TYPE_SCALAR",
7071        }
7072    }
7073    /// Creates an enum from field names used in the ProtoBuf definition.
7074    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7075        match value {
7076            "JSON_VALUE_TYPE_UNDEFINED" => Some(Self::Undefined),
7077            "JS_TYPE_ANY" => Some(Self::JsTypeAny),
7078            "JS_TYPE_OBJECT" => Some(Self::JsTypeObject),
7079            "JS_TYPE_ARRAY" => Some(Self::JsTypeArray),
7080            "JS_TYPE_SCALAR" => Some(Self::JsTypeScalar),
7081            _ => None,
7082        }
7083    }
7084}
7085#[derive(serde::Serialize)]
7086#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7087#[repr(i32)]
7088pub enum JsonWrapper {
7089    Undefined = 0,
7090    JswUnspec = 1,
7091    JswNone = 2,
7092    JswConditional = 3,
7093    JswUnconditional = 4,
7094}
7095impl JsonWrapper {
7096    /// String value of the enum field names used in the ProtoBuf definition.
7097    ///
7098    /// The values are not transformed in any way and thus are considered stable
7099    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7100    pub fn as_str_name(&self) -> &'static str {
7101        match self {
7102            Self::Undefined => "JSON_WRAPPER_UNDEFINED",
7103            Self::JswUnspec => "JSW_UNSPEC",
7104            Self::JswNone => "JSW_NONE",
7105            Self::JswConditional => "JSW_CONDITIONAL",
7106            Self::JswUnconditional => "JSW_UNCONDITIONAL",
7107        }
7108    }
7109    /// Creates an enum from field names used in the ProtoBuf definition.
7110    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7111        match value {
7112            "JSON_WRAPPER_UNDEFINED" => Some(Self::Undefined),
7113            "JSW_UNSPEC" => Some(Self::JswUnspec),
7114            "JSW_NONE" => Some(Self::JswNone),
7115            "JSW_CONDITIONAL" => Some(Self::JswConditional),
7116            "JSW_UNCONDITIONAL" => Some(Self::JswUnconditional),
7117            _ => None,
7118        }
7119    }
7120}
7121#[derive(serde::Serialize)]
7122#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7123#[repr(i32)]
7124pub enum JsonBehaviorType {
7125    Undefined = 0,
7126    JsonBehaviorNull = 1,
7127    JsonBehaviorError = 2,
7128    JsonBehaviorEmpty = 3,
7129    JsonBehaviorTrue = 4,
7130    JsonBehaviorFalse = 5,
7131    JsonBehaviorUnknown = 6,
7132    JsonBehaviorEmptyArray = 7,
7133    JsonBehaviorEmptyObject = 8,
7134    JsonBehaviorDefault = 9,
7135}
7136impl JsonBehaviorType {
7137    /// String value of the enum field names used in the ProtoBuf definition.
7138    ///
7139    /// The values are not transformed in any way and thus are considered stable
7140    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7141    pub fn as_str_name(&self) -> &'static str {
7142        match self {
7143            Self::Undefined => "JSON_BEHAVIOR_TYPE_UNDEFINED",
7144            Self::JsonBehaviorNull => "JSON_BEHAVIOR_NULL",
7145            Self::JsonBehaviorError => "JSON_BEHAVIOR_ERROR",
7146            Self::JsonBehaviorEmpty => "JSON_BEHAVIOR_EMPTY",
7147            Self::JsonBehaviorTrue => "JSON_BEHAVIOR_TRUE",
7148            Self::JsonBehaviorFalse => "JSON_BEHAVIOR_FALSE",
7149            Self::JsonBehaviorUnknown => "JSON_BEHAVIOR_UNKNOWN",
7150            Self::JsonBehaviorEmptyArray => "JSON_BEHAVIOR_EMPTY_ARRAY",
7151            Self::JsonBehaviorEmptyObject => "JSON_BEHAVIOR_EMPTY_OBJECT",
7152            Self::JsonBehaviorDefault => "JSON_BEHAVIOR_DEFAULT",
7153        }
7154    }
7155    /// Creates an enum from field names used in the ProtoBuf definition.
7156    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7157        match value {
7158            "JSON_BEHAVIOR_TYPE_UNDEFINED" => Some(Self::Undefined),
7159            "JSON_BEHAVIOR_NULL" => Some(Self::JsonBehaviorNull),
7160            "JSON_BEHAVIOR_ERROR" => Some(Self::JsonBehaviorError),
7161            "JSON_BEHAVIOR_EMPTY" => Some(Self::JsonBehaviorEmpty),
7162            "JSON_BEHAVIOR_TRUE" => Some(Self::JsonBehaviorTrue),
7163            "JSON_BEHAVIOR_FALSE" => Some(Self::JsonBehaviorFalse),
7164            "JSON_BEHAVIOR_UNKNOWN" => Some(Self::JsonBehaviorUnknown),
7165            "JSON_BEHAVIOR_EMPTY_ARRAY" => Some(Self::JsonBehaviorEmptyArray),
7166            "JSON_BEHAVIOR_EMPTY_OBJECT" => Some(Self::JsonBehaviorEmptyObject),
7167            "JSON_BEHAVIOR_DEFAULT" => Some(Self::JsonBehaviorDefault),
7168            _ => None,
7169        }
7170    }
7171}
7172#[derive(serde::Serialize)]
7173#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7174#[repr(i32)]
7175pub enum JsonExprOp {
7176    Undefined = 0,
7177    JsonExistsOp = 1,
7178    JsonQueryOp = 2,
7179    JsonValueOp = 3,
7180    JsonTableOp = 4,
7181}
7182impl JsonExprOp {
7183    /// String value of the enum field names used in the ProtoBuf definition.
7184    ///
7185    /// The values are not transformed in any way and thus are considered stable
7186    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7187    pub fn as_str_name(&self) -> &'static str {
7188        match self {
7189            Self::Undefined => "JSON_EXPR_OP_UNDEFINED",
7190            Self::JsonExistsOp => "JSON_EXISTS_OP",
7191            Self::JsonQueryOp => "JSON_QUERY_OP",
7192            Self::JsonValueOp => "JSON_VALUE_OP",
7193            Self::JsonTableOp => "JSON_TABLE_OP",
7194        }
7195    }
7196    /// Creates an enum from field names used in the ProtoBuf definition.
7197    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7198        match value {
7199            "JSON_EXPR_OP_UNDEFINED" => Some(Self::Undefined),
7200            "JSON_EXISTS_OP" => Some(Self::JsonExistsOp),
7201            "JSON_QUERY_OP" => Some(Self::JsonQueryOp),
7202            "JSON_VALUE_OP" => Some(Self::JsonValueOp),
7203            "JSON_TABLE_OP" => Some(Self::JsonTableOp),
7204            _ => None,
7205        }
7206    }
7207}
7208#[derive(serde::Serialize)]
7209#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7210#[repr(i32)]
7211pub enum NullTestType {
7212    Undefined = 0,
7213    IsNull = 1,
7214    IsNotNull = 2,
7215}
7216impl NullTestType {
7217    /// String value of the enum field names used in the ProtoBuf definition.
7218    ///
7219    /// The values are not transformed in any way and thus are considered stable
7220    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7221    pub fn as_str_name(&self) -> &'static str {
7222        match self {
7223            Self::Undefined => "NULL_TEST_TYPE_UNDEFINED",
7224            Self::IsNull => "IS_NULL",
7225            Self::IsNotNull => "IS_NOT_NULL",
7226        }
7227    }
7228    /// Creates an enum from field names used in the ProtoBuf definition.
7229    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7230        match value {
7231            "NULL_TEST_TYPE_UNDEFINED" => Some(Self::Undefined),
7232            "IS_NULL" => Some(Self::IsNull),
7233            "IS_NOT_NULL" => Some(Self::IsNotNull),
7234            _ => None,
7235        }
7236    }
7237}
7238#[derive(serde::Serialize)]
7239#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7240#[repr(i32)]
7241pub enum BoolTestType {
7242    Undefined = 0,
7243    IsTrue = 1,
7244    IsNotTrue = 2,
7245    IsFalse = 3,
7246    IsNotFalse = 4,
7247    IsUnknown = 5,
7248    IsNotUnknown = 6,
7249}
7250impl BoolTestType {
7251    /// String value of the enum field names used in the ProtoBuf definition.
7252    ///
7253    /// The values are not transformed in any way and thus are considered stable
7254    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7255    pub fn as_str_name(&self) -> &'static str {
7256        match self {
7257            Self::Undefined => "BOOL_TEST_TYPE_UNDEFINED",
7258            Self::IsTrue => "IS_TRUE",
7259            Self::IsNotTrue => "IS_NOT_TRUE",
7260            Self::IsFalse => "IS_FALSE",
7261            Self::IsNotFalse => "IS_NOT_FALSE",
7262            Self::IsUnknown => "IS_UNKNOWN",
7263            Self::IsNotUnknown => "IS_NOT_UNKNOWN",
7264        }
7265    }
7266    /// Creates an enum from field names used in the ProtoBuf definition.
7267    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7268        match value {
7269            "BOOL_TEST_TYPE_UNDEFINED" => Some(Self::Undefined),
7270            "IS_TRUE" => Some(Self::IsTrue),
7271            "IS_NOT_TRUE" => Some(Self::IsNotTrue),
7272            "IS_FALSE" => Some(Self::IsFalse),
7273            "IS_NOT_FALSE" => Some(Self::IsNotFalse),
7274            "IS_UNKNOWN" => Some(Self::IsUnknown),
7275            "IS_NOT_UNKNOWN" => Some(Self::IsNotUnknown),
7276            _ => None,
7277        }
7278    }
7279}
7280#[derive(serde::Serialize)]
7281#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7282#[repr(i32)]
7283pub enum MergeMatchKind {
7284    Undefined = 0,
7285    MergeWhenMatched = 1,
7286    MergeWhenNotMatchedBySource = 2,
7287    MergeWhenNotMatchedByTarget = 3,
7288}
7289impl MergeMatchKind {
7290    /// String value of the enum field names used in the ProtoBuf definition.
7291    ///
7292    /// The values are not transformed in any way and thus are considered stable
7293    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7294    pub fn as_str_name(&self) -> &'static str {
7295        match self {
7296            Self::Undefined => "MERGE_MATCH_KIND_UNDEFINED",
7297            Self::MergeWhenMatched => "MERGE_WHEN_MATCHED",
7298            Self::MergeWhenNotMatchedBySource => "MERGE_WHEN_NOT_MATCHED_BY_SOURCE",
7299            Self::MergeWhenNotMatchedByTarget => "MERGE_WHEN_NOT_MATCHED_BY_TARGET",
7300        }
7301    }
7302    /// Creates an enum from field names used in the ProtoBuf definition.
7303    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7304        match value {
7305            "MERGE_MATCH_KIND_UNDEFINED" => Some(Self::Undefined),
7306            "MERGE_WHEN_MATCHED" => Some(Self::MergeWhenMatched),
7307            "MERGE_WHEN_NOT_MATCHED_BY_SOURCE" => Some(Self::MergeWhenNotMatchedBySource),
7308            "MERGE_WHEN_NOT_MATCHED_BY_TARGET" => Some(Self::MergeWhenNotMatchedByTarget),
7309            _ => None,
7310        }
7311    }
7312}
7313#[derive(serde::Serialize)]
7314#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7315#[repr(i32)]
7316pub enum CmdType {
7317    Undefined = 0,
7318    CmdUnknown = 1,
7319    CmdSelect = 2,
7320    CmdUpdate = 3,
7321    CmdInsert = 4,
7322    CmdDelete = 5,
7323    CmdMerge = 6,
7324    CmdUtility = 7,
7325    CmdNothing = 8,
7326}
7327impl CmdType {
7328    /// String value of the enum field names used in the ProtoBuf definition.
7329    ///
7330    /// The values are not transformed in any way and thus are considered stable
7331    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7332    pub fn as_str_name(&self) -> &'static str {
7333        match self {
7334            Self::Undefined => "CMD_TYPE_UNDEFINED",
7335            Self::CmdUnknown => "CMD_UNKNOWN",
7336            Self::CmdSelect => "CMD_SELECT",
7337            Self::CmdUpdate => "CMD_UPDATE",
7338            Self::CmdInsert => "CMD_INSERT",
7339            Self::CmdDelete => "CMD_DELETE",
7340            Self::CmdMerge => "CMD_MERGE",
7341            Self::CmdUtility => "CMD_UTILITY",
7342            Self::CmdNothing => "CMD_NOTHING",
7343        }
7344    }
7345    /// Creates an enum from field names used in the ProtoBuf definition.
7346    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7347        match value {
7348            "CMD_TYPE_UNDEFINED" => Some(Self::Undefined),
7349            "CMD_UNKNOWN" => Some(Self::CmdUnknown),
7350            "CMD_SELECT" => Some(Self::CmdSelect),
7351            "CMD_UPDATE" => Some(Self::CmdUpdate),
7352            "CMD_INSERT" => Some(Self::CmdInsert),
7353            "CMD_DELETE" => Some(Self::CmdDelete),
7354            "CMD_MERGE" => Some(Self::CmdMerge),
7355            "CMD_UTILITY" => Some(Self::CmdUtility),
7356            "CMD_NOTHING" => Some(Self::CmdNothing),
7357            _ => None,
7358        }
7359    }
7360}
7361#[derive(serde::Serialize)]
7362#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7363#[repr(i32)]
7364pub enum JoinType {
7365    Undefined = 0,
7366    JoinInner = 1,
7367    JoinLeft = 2,
7368    JoinFull = 3,
7369    JoinRight = 4,
7370    JoinSemi = 5,
7371    JoinAnti = 6,
7372    JoinRightSemi = 7,
7373    JoinRightAnti = 8,
7374    JoinUniqueOuter = 9,
7375    JoinUniqueInner = 10,
7376}
7377impl JoinType {
7378    /// String value of the enum field names used in the ProtoBuf definition.
7379    ///
7380    /// The values are not transformed in any way and thus are considered stable
7381    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7382    pub fn as_str_name(&self) -> &'static str {
7383        match self {
7384            Self::Undefined => "JOIN_TYPE_UNDEFINED",
7385            Self::JoinInner => "JOIN_INNER",
7386            Self::JoinLeft => "JOIN_LEFT",
7387            Self::JoinFull => "JOIN_FULL",
7388            Self::JoinRight => "JOIN_RIGHT",
7389            Self::JoinSemi => "JOIN_SEMI",
7390            Self::JoinAnti => "JOIN_ANTI",
7391            Self::JoinRightSemi => "JOIN_RIGHT_SEMI",
7392            Self::JoinRightAnti => "JOIN_RIGHT_ANTI",
7393            Self::JoinUniqueOuter => "JOIN_UNIQUE_OUTER",
7394            Self::JoinUniqueInner => "JOIN_UNIQUE_INNER",
7395        }
7396    }
7397    /// Creates an enum from field names used in the ProtoBuf definition.
7398    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7399        match value {
7400            "JOIN_TYPE_UNDEFINED" => Some(Self::Undefined),
7401            "JOIN_INNER" => Some(Self::JoinInner),
7402            "JOIN_LEFT" => Some(Self::JoinLeft),
7403            "JOIN_FULL" => Some(Self::JoinFull),
7404            "JOIN_RIGHT" => Some(Self::JoinRight),
7405            "JOIN_SEMI" => Some(Self::JoinSemi),
7406            "JOIN_ANTI" => Some(Self::JoinAnti),
7407            "JOIN_RIGHT_SEMI" => Some(Self::JoinRightSemi),
7408            "JOIN_RIGHT_ANTI" => Some(Self::JoinRightAnti),
7409            "JOIN_UNIQUE_OUTER" => Some(Self::JoinUniqueOuter),
7410            "JOIN_UNIQUE_INNER" => Some(Self::JoinUniqueInner),
7411            _ => None,
7412        }
7413    }
7414}
7415#[derive(serde::Serialize)]
7416#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7417#[repr(i32)]
7418pub enum AggStrategy {
7419    Undefined = 0,
7420    AggPlain = 1,
7421    AggSorted = 2,
7422    AggHashed = 3,
7423    AggMixed = 4,
7424}
7425impl AggStrategy {
7426    /// String value of the enum field names used in the ProtoBuf definition.
7427    ///
7428    /// The values are not transformed in any way and thus are considered stable
7429    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7430    pub fn as_str_name(&self) -> &'static str {
7431        match self {
7432            Self::Undefined => "AGG_STRATEGY_UNDEFINED",
7433            Self::AggPlain => "AGG_PLAIN",
7434            Self::AggSorted => "AGG_SORTED",
7435            Self::AggHashed => "AGG_HASHED",
7436            Self::AggMixed => "AGG_MIXED",
7437        }
7438    }
7439    /// Creates an enum from field names used in the ProtoBuf definition.
7440    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7441        match value {
7442            "AGG_STRATEGY_UNDEFINED" => Some(Self::Undefined),
7443            "AGG_PLAIN" => Some(Self::AggPlain),
7444            "AGG_SORTED" => Some(Self::AggSorted),
7445            "AGG_HASHED" => Some(Self::AggHashed),
7446            "AGG_MIXED" => Some(Self::AggMixed),
7447            _ => None,
7448        }
7449    }
7450}
7451#[derive(serde::Serialize)]
7452#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7453#[repr(i32)]
7454pub enum AggSplit {
7455    Undefined = 0,
7456    AggsplitSimple = 1,
7457    AggsplitInitialSerial = 2,
7458    AggsplitFinalDeserial = 3,
7459}
7460impl AggSplit {
7461    /// String value of the enum field names used in the ProtoBuf definition.
7462    ///
7463    /// The values are not transformed in any way and thus are considered stable
7464    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7465    pub fn as_str_name(&self) -> &'static str {
7466        match self {
7467            Self::Undefined => "AGG_SPLIT_UNDEFINED",
7468            Self::AggsplitSimple => "AGGSPLIT_SIMPLE",
7469            Self::AggsplitInitialSerial => "AGGSPLIT_INITIAL_SERIAL",
7470            Self::AggsplitFinalDeserial => "AGGSPLIT_FINAL_DESERIAL",
7471        }
7472    }
7473    /// Creates an enum from field names used in the ProtoBuf definition.
7474    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7475        match value {
7476            "AGG_SPLIT_UNDEFINED" => Some(Self::Undefined),
7477            "AGGSPLIT_SIMPLE" => Some(Self::AggsplitSimple),
7478            "AGGSPLIT_INITIAL_SERIAL" => Some(Self::AggsplitInitialSerial),
7479            "AGGSPLIT_FINAL_DESERIAL" => Some(Self::AggsplitFinalDeserial),
7480            _ => None,
7481        }
7482    }
7483}
7484#[derive(serde::Serialize)]
7485#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7486#[repr(i32)]
7487pub enum SetOpCmd {
7488    Undefined = 0,
7489    SetopcmdIntersect = 1,
7490    SetopcmdIntersectAll = 2,
7491    SetopcmdExcept = 3,
7492    SetopcmdExceptAll = 4,
7493}
7494impl SetOpCmd {
7495    /// String value of the enum field names used in the ProtoBuf definition.
7496    ///
7497    /// The values are not transformed in any way and thus are considered stable
7498    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7499    pub fn as_str_name(&self) -> &'static str {
7500        match self {
7501            Self::Undefined => "SET_OP_CMD_UNDEFINED",
7502            Self::SetopcmdIntersect => "SETOPCMD_INTERSECT",
7503            Self::SetopcmdIntersectAll => "SETOPCMD_INTERSECT_ALL",
7504            Self::SetopcmdExcept => "SETOPCMD_EXCEPT",
7505            Self::SetopcmdExceptAll => "SETOPCMD_EXCEPT_ALL",
7506        }
7507    }
7508    /// Creates an enum from field names used in the ProtoBuf definition.
7509    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7510        match value {
7511            "SET_OP_CMD_UNDEFINED" => Some(Self::Undefined),
7512            "SETOPCMD_INTERSECT" => Some(Self::SetopcmdIntersect),
7513            "SETOPCMD_INTERSECT_ALL" => Some(Self::SetopcmdIntersectAll),
7514            "SETOPCMD_EXCEPT" => Some(Self::SetopcmdExcept),
7515            "SETOPCMD_EXCEPT_ALL" => Some(Self::SetopcmdExceptAll),
7516            _ => None,
7517        }
7518    }
7519}
7520#[derive(serde::Serialize)]
7521#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7522#[repr(i32)]
7523pub enum SetOpStrategy {
7524    Undefined = 0,
7525    SetopSorted = 1,
7526    SetopHashed = 2,
7527}
7528impl SetOpStrategy {
7529    /// String value of the enum field names used in the ProtoBuf definition.
7530    ///
7531    /// The values are not transformed in any way and thus are considered stable
7532    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7533    pub fn as_str_name(&self) -> &'static str {
7534        match self {
7535            Self::Undefined => "SET_OP_STRATEGY_UNDEFINED",
7536            Self::SetopSorted => "SETOP_SORTED",
7537            Self::SetopHashed => "SETOP_HASHED",
7538        }
7539    }
7540    /// Creates an enum from field names used in the ProtoBuf definition.
7541    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7542        match value {
7543            "SET_OP_STRATEGY_UNDEFINED" => Some(Self::Undefined),
7544            "SETOP_SORTED" => Some(Self::SetopSorted),
7545            "SETOP_HASHED" => Some(Self::SetopHashed),
7546            _ => None,
7547        }
7548    }
7549}
7550#[derive(serde::Serialize)]
7551#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7552#[repr(i32)]
7553pub enum OnConflictAction {
7554    Undefined = 0,
7555    OnconflictNone = 1,
7556    OnconflictNothing = 2,
7557    OnconflictUpdate = 3,
7558}
7559impl OnConflictAction {
7560    /// String value of the enum field names used in the ProtoBuf definition.
7561    ///
7562    /// The values are not transformed in any way and thus are considered stable
7563    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7564    pub fn as_str_name(&self) -> &'static str {
7565        match self {
7566            Self::Undefined => "ON_CONFLICT_ACTION_UNDEFINED",
7567            Self::OnconflictNone => "ONCONFLICT_NONE",
7568            Self::OnconflictNothing => "ONCONFLICT_NOTHING",
7569            Self::OnconflictUpdate => "ONCONFLICT_UPDATE",
7570        }
7571    }
7572    /// Creates an enum from field names used in the ProtoBuf definition.
7573    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7574        match value {
7575            "ON_CONFLICT_ACTION_UNDEFINED" => Some(Self::Undefined),
7576            "ONCONFLICT_NONE" => Some(Self::OnconflictNone),
7577            "ONCONFLICT_NOTHING" => Some(Self::OnconflictNothing),
7578            "ONCONFLICT_UPDATE" => Some(Self::OnconflictUpdate),
7579            _ => None,
7580        }
7581    }
7582}
7583#[derive(serde::Serialize)]
7584#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7585#[repr(i32)]
7586pub enum LimitOption {
7587    Undefined = 0,
7588    Default = 1,
7589    Count = 2,
7590    WithTies = 3,
7591}
7592impl LimitOption {
7593    /// String value of the enum field names used in the ProtoBuf definition.
7594    ///
7595    /// The values are not transformed in any way and thus are considered stable
7596    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7597    pub fn as_str_name(&self) -> &'static str {
7598        match self {
7599            Self::Undefined => "LIMIT_OPTION_UNDEFINED",
7600            Self::Default => "LIMIT_OPTION_DEFAULT",
7601            Self::Count => "LIMIT_OPTION_COUNT",
7602            Self::WithTies => "LIMIT_OPTION_WITH_TIES",
7603        }
7604    }
7605    /// Creates an enum from field names used in the ProtoBuf definition.
7606    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7607        match value {
7608            "LIMIT_OPTION_UNDEFINED" => Some(Self::Undefined),
7609            "LIMIT_OPTION_DEFAULT" => Some(Self::Default),
7610            "LIMIT_OPTION_COUNT" => Some(Self::Count),
7611            "LIMIT_OPTION_WITH_TIES" => Some(Self::WithTies),
7612            _ => None,
7613        }
7614    }
7615}
7616#[derive(serde::Serialize)]
7617#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7618#[repr(i32)]
7619pub enum LockClauseStrength {
7620    Undefined = 0,
7621    LcsNone = 1,
7622    LcsForkeyshare = 2,
7623    LcsForshare = 3,
7624    LcsFornokeyupdate = 4,
7625    LcsForupdate = 5,
7626}
7627impl LockClauseStrength {
7628    /// String value of the enum field names used in the ProtoBuf definition.
7629    ///
7630    /// The values are not transformed in any way and thus are considered stable
7631    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7632    pub fn as_str_name(&self) -> &'static str {
7633        match self {
7634            Self::Undefined => "LOCK_CLAUSE_STRENGTH_UNDEFINED",
7635            Self::LcsNone => "LCS_NONE",
7636            Self::LcsForkeyshare => "LCS_FORKEYSHARE",
7637            Self::LcsForshare => "LCS_FORSHARE",
7638            Self::LcsFornokeyupdate => "LCS_FORNOKEYUPDATE",
7639            Self::LcsForupdate => "LCS_FORUPDATE",
7640        }
7641    }
7642    /// Creates an enum from field names used in the ProtoBuf definition.
7643    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7644        match value {
7645            "LOCK_CLAUSE_STRENGTH_UNDEFINED" => Some(Self::Undefined),
7646            "LCS_NONE" => Some(Self::LcsNone),
7647            "LCS_FORKEYSHARE" => Some(Self::LcsForkeyshare),
7648            "LCS_FORSHARE" => Some(Self::LcsForshare),
7649            "LCS_FORNOKEYUPDATE" => Some(Self::LcsFornokeyupdate),
7650            "LCS_FORUPDATE" => Some(Self::LcsForupdate),
7651            _ => None,
7652        }
7653    }
7654}
7655#[derive(serde::Serialize)]
7656#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7657#[repr(i32)]
7658pub enum LockWaitPolicy {
7659    Undefined = 0,
7660    LockWaitBlock = 1,
7661    LockWaitSkip = 2,
7662    LockWaitError = 3,
7663}
7664impl LockWaitPolicy {
7665    /// String value of the enum field names used in the ProtoBuf definition.
7666    ///
7667    /// The values are not transformed in any way and thus are considered stable
7668    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7669    pub fn as_str_name(&self) -> &'static str {
7670        match self {
7671            Self::Undefined => "LOCK_WAIT_POLICY_UNDEFINED",
7672            Self::LockWaitBlock => "LockWaitBlock",
7673            Self::LockWaitSkip => "LockWaitSkip",
7674            Self::LockWaitError => "LockWaitError",
7675        }
7676    }
7677    /// Creates an enum from field names used in the ProtoBuf definition.
7678    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7679        match value {
7680            "LOCK_WAIT_POLICY_UNDEFINED" => Some(Self::Undefined),
7681            "LockWaitBlock" => Some(Self::LockWaitBlock),
7682            "LockWaitSkip" => Some(Self::LockWaitSkip),
7683            "LockWaitError" => Some(Self::LockWaitError),
7684            _ => None,
7685        }
7686    }
7687}
7688#[derive(serde::Serialize)]
7689#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7690#[repr(i32)]
7691pub enum LockTupleMode {
7692    Undefined = 0,
7693    LockTupleKeyShare = 1,
7694    LockTupleShare = 2,
7695    LockTupleNoKeyExclusive = 3,
7696    LockTupleExclusive = 4,
7697}
7698impl LockTupleMode {
7699    /// String value of the enum field names used in the ProtoBuf definition.
7700    ///
7701    /// The values are not transformed in any way and thus are considered stable
7702    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7703    pub fn as_str_name(&self) -> &'static str {
7704        match self {
7705            Self::Undefined => "LOCK_TUPLE_MODE_UNDEFINED",
7706            Self::LockTupleKeyShare => "LockTupleKeyShare",
7707            Self::LockTupleShare => "LockTupleShare",
7708            Self::LockTupleNoKeyExclusive => "LockTupleNoKeyExclusive",
7709            Self::LockTupleExclusive => "LockTupleExclusive",
7710        }
7711    }
7712    /// Creates an enum from field names used in the ProtoBuf definition.
7713    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7714        match value {
7715            "LOCK_TUPLE_MODE_UNDEFINED" => Some(Self::Undefined),
7716            "LockTupleKeyShare" => Some(Self::LockTupleKeyShare),
7717            "LockTupleShare" => Some(Self::LockTupleShare),
7718            "LockTupleNoKeyExclusive" => Some(Self::LockTupleNoKeyExclusive),
7719            "LockTupleExclusive" => Some(Self::LockTupleExclusive),
7720            _ => None,
7721        }
7722    }
7723}
7724#[derive(serde::Serialize)]
7725#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7726#[repr(i32)]
7727pub enum CompareType {
7728    Undefined = 0,
7729    CompareInvalid = 1,
7730    CompareLt = 2,
7731    CompareLe = 3,
7732    CompareEq = 4,
7733    CompareGe = 5,
7734    CompareGt = 6,
7735    CompareNe = 7,
7736    CompareOverlap = 8,
7737    CompareContainedBy = 9,
7738}
7739impl CompareType {
7740    /// String value of the enum field names used in the ProtoBuf definition.
7741    ///
7742    /// The values are not transformed in any way and thus are considered stable
7743    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7744    pub fn as_str_name(&self) -> &'static str {
7745        match self {
7746            Self::Undefined => "COMPARE_TYPE_UNDEFINED",
7747            Self::CompareInvalid => "COMPARE_INVALID",
7748            Self::CompareLt => "COMPARE_LT",
7749            Self::CompareLe => "COMPARE_LE",
7750            Self::CompareEq => "COMPARE_EQ",
7751            Self::CompareGe => "COMPARE_GE",
7752            Self::CompareGt => "COMPARE_GT",
7753            Self::CompareNe => "COMPARE_NE",
7754            Self::CompareOverlap => "COMPARE_OVERLAP",
7755            Self::CompareContainedBy => "COMPARE_CONTAINED_BY",
7756        }
7757    }
7758    /// Creates an enum from field names used in the ProtoBuf definition.
7759    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7760        match value {
7761            "COMPARE_TYPE_UNDEFINED" => Some(Self::Undefined),
7762            "COMPARE_INVALID" => Some(Self::CompareInvalid),
7763            "COMPARE_LT" => Some(Self::CompareLt),
7764            "COMPARE_LE" => Some(Self::CompareLe),
7765            "COMPARE_EQ" => Some(Self::CompareEq),
7766            "COMPARE_GE" => Some(Self::CompareGe),
7767            "COMPARE_GT" => Some(Self::CompareGt),
7768            "COMPARE_NE" => Some(Self::CompareNe),
7769            "COMPARE_OVERLAP" => Some(Self::CompareOverlap),
7770            "COMPARE_CONTAINED_BY" => Some(Self::CompareContainedBy),
7771            _ => None,
7772        }
7773    }
7774}
7775#[derive(serde::Serialize)]
7776#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7777#[repr(i32)]
7778pub enum KeywordKind {
7779    NoKeyword = 0,
7780    UnreservedKeyword = 1,
7781    ColNameKeyword = 2,
7782    TypeFuncNameKeyword = 3,
7783    ReservedKeyword = 4,
7784}
7785impl KeywordKind {
7786    /// String value of the enum field names used in the ProtoBuf definition.
7787    ///
7788    /// The values are not transformed in any way and thus are considered stable
7789    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7790    pub fn as_str_name(&self) -> &'static str {
7791        match self {
7792            Self::NoKeyword => "NO_KEYWORD",
7793            Self::UnreservedKeyword => "UNRESERVED_KEYWORD",
7794            Self::ColNameKeyword => "COL_NAME_KEYWORD",
7795            Self::TypeFuncNameKeyword => "TYPE_FUNC_NAME_KEYWORD",
7796            Self::ReservedKeyword => "RESERVED_KEYWORD",
7797        }
7798    }
7799    /// Creates an enum from field names used in the ProtoBuf definition.
7800    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7801        match value {
7802            "NO_KEYWORD" => Some(Self::NoKeyword),
7803            "UNRESERVED_KEYWORD" => Some(Self::UnreservedKeyword),
7804            "COL_NAME_KEYWORD" => Some(Self::ColNameKeyword),
7805            "TYPE_FUNC_NAME_KEYWORD" => Some(Self::TypeFuncNameKeyword),
7806            "RESERVED_KEYWORD" => Some(Self::ReservedKeyword),
7807            _ => None,
7808        }
7809    }
7810}
7811#[derive(serde::Serialize)]
7812#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7813#[repr(i32)]
7814pub enum Token {
7815    Nul = 0,
7816    /// Single-character tokens that are returned 1:1 (identical with "self" list in scan.l)
7817    /// Either supporting syntax, or single-character operators (some can be both)
7818    /// Also see <https://www.postgresql.org/docs/12/sql-syntax-lexical.html#SQL-SYNTAX-SPECIAL-CHARS>
7819    ///
7820    /// "$"
7821    Ascii36 = 36,
7822    /// "%"
7823    Ascii37 = 37,
7824    /// "("
7825    Ascii40 = 40,
7826    /// ")"
7827    Ascii41 = 41,
7828    /// "*"
7829    Ascii42 = 42,
7830    /// "+"
7831    Ascii43 = 43,
7832    /// ","
7833    Ascii44 = 44,
7834    /// "-"
7835    Ascii45 = 45,
7836    /// "."
7837    Ascii46 = 46,
7838    /// "/"
7839    Ascii47 = 47,
7840    /// ":"
7841    Ascii58 = 58,
7842    /// ";"
7843    Ascii59 = 59,
7844    /// "<"
7845    Ascii60 = 60,
7846    /// "="
7847    Ascii61 = 61,
7848    /// ">"
7849    Ascii62 = 62,
7850    /// "?"
7851    Ascii63 = 63,
7852    /// "["
7853    Ascii91 = 91,
7854    /// "\"
7855    Ascii92 = 92,
7856    /// "]"
7857    Ascii93 = 93,
7858    /// "^"
7859    Ascii94 = 94,
7860    /// Named tokens in scan.l
7861    Ident = 258,
7862    Uident = 259,
7863    Fconst = 260,
7864    Sconst = 261,
7865    Usconst = 262,
7866    Bconst = 263,
7867    Xconst = 264,
7868    Op = 265,
7869    Iconst = 266,
7870    Param = 267,
7871    Typecast = 268,
7872    DotDot = 269,
7873    ColonEquals = 270,
7874    EqualsGreater = 271,
7875    LessEquals = 272,
7876    GreaterEquals = 273,
7877    NotEquals = 274,
7878    SqlComment = 275,
7879    CComment = 276,
7880    AbortP = 277,
7881    Absent = 278,
7882    AbsoluteP = 279,
7883    Access = 280,
7884    Action = 281,
7885    AddP = 282,
7886    Admin = 283,
7887    After = 284,
7888    Aggregate = 285,
7889    All = 286,
7890    Also = 287,
7891    Alter = 288,
7892    Always = 289,
7893    Analyse = 290,
7894    Analyze = 291,
7895    And = 292,
7896    Any = 293,
7897    Array = 294,
7898    As = 295,
7899    Asc = 296,
7900    Asensitive = 297,
7901    Assertion = 298,
7902    Assignment = 299,
7903    Asymmetric = 300,
7904    Atomic = 301,
7905    At = 302,
7906    Attach = 303,
7907    Attribute = 304,
7908    Authorization = 305,
7909    Backward = 306,
7910    Before = 307,
7911    BeginP = 308,
7912    Between = 309,
7913    Bigint = 310,
7914    Binary = 311,
7915    Bit = 312,
7916    BooleanP = 313,
7917    Both = 314,
7918    Breadth = 315,
7919    By = 316,
7920    Cache = 317,
7921    Call = 318,
7922    Called = 319,
7923    Cascade = 320,
7924    Cascaded = 321,
7925    Case = 322,
7926    Cast = 323,
7927    CatalogP = 324,
7928    Chain = 325,
7929    CharP = 326,
7930    Character = 327,
7931    Characteristics = 328,
7932    Check = 329,
7933    Checkpoint = 330,
7934    Class = 331,
7935    Close = 332,
7936    Cluster = 333,
7937    Coalesce = 334,
7938    Collate = 335,
7939    Collation = 336,
7940    Column = 337,
7941    Columns = 338,
7942    Comment = 339,
7943    Comments = 340,
7944    Commit = 341,
7945    Committed = 342,
7946    Compression = 343,
7947    Concurrently = 344,
7948    Conditional = 345,
7949    Configuration = 346,
7950    Conflict = 347,
7951    Connection = 348,
7952    Constraint = 349,
7953    Constraints = 350,
7954    ContentP = 351,
7955    ContinueP = 352,
7956    ConversionP = 353,
7957    Copy = 354,
7958    Cost = 355,
7959    Create = 356,
7960    Cross = 357,
7961    Csv = 358,
7962    Cube = 359,
7963    CurrentP = 360,
7964    CurrentCatalog = 361,
7965    CurrentDate = 362,
7966    CurrentRole = 363,
7967    CurrentSchema = 364,
7968    CurrentTime = 365,
7969    CurrentTimestamp = 366,
7970    CurrentUser = 367,
7971    Cursor = 368,
7972    Cycle = 369,
7973    DataP = 370,
7974    Database = 371,
7975    DayP = 372,
7976    Deallocate = 373,
7977    Dec = 374,
7978    DecimalP = 375,
7979    Declare = 376,
7980    Default = 377,
7981    Defaults = 378,
7982    Deferrable = 379,
7983    Deferred = 380,
7984    Definer = 381,
7985    DeleteP = 382,
7986    Delimiter = 383,
7987    Delimiters = 384,
7988    Depends = 385,
7989    Depth = 386,
7990    Desc = 387,
7991    Detach = 388,
7992    Dictionary = 389,
7993    DisableP = 390,
7994    Discard = 391,
7995    Distinct = 392,
7996    Do = 393,
7997    DocumentP = 394,
7998    DomainP = 395,
7999    DoubleP = 396,
8000    Drop = 397,
8001    Each = 398,
8002    Else = 399,
8003    EmptyP = 400,
8004    EnableP = 401,
8005    Encoding = 402,
8006    Encrypted = 403,
8007    EndP = 404,
8008    Enforced = 405,
8009    EnumP = 406,
8010    ErrorP = 407,
8011    Escape = 408,
8012    Event = 409,
8013    Except = 410,
8014    Exclude = 411,
8015    Excluding = 412,
8016    Exclusive = 413,
8017    Execute = 414,
8018    Exists = 415,
8019    Explain = 416,
8020    Expression = 417,
8021    Extension = 418,
8022    External = 419,
8023    Extract = 420,
8024    FalseP = 421,
8025    Family = 422,
8026    Fetch = 423,
8027    Filter = 424,
8028    Finalize = 425,
8029    FirstP = 426,
8030    FloatP = 427,
8031    Following = 428,
8032    For = 429,
8033    Force = 430,
8034    Foreign = 431,
8035    Format = 432,
8036    Forward = 433,
8037    Freeze = 434,
8038    From = 435,
8039    Full = 436,
8040    Function = 437,
8041    Functions = 438,
8042    Generated = 439,
8043    Global = 440,
8044    Grant = 441,
8045    Granted = 442,
8046    Greatest = 443,
8047    GroupP = 444,
8048    Grouping = 445,
8049    Groups = 446,
8050    Handler = 447,
8051    Having = 448,
8052    HeaderP = 449,
8053    Hold = 450,
8054    HourP = 451,
8055    IdentityP = 452,
8056    IfP = 453,
8057    Ilike = 454,
8058    Immediate = 455,
8059    Immutable = 456,
8060    ImplicitP = 457,
8061    ImportP = 458,
8062    InP = 459,
8063    Include = 460,
8064    Including = 461,
8065    Increment = 462,
8066    Indent = 463,
8067    Index = 464,
8068    Indexes = 465,
8069    Inherit = 466,
8070    Inherits = 467,
8071    Initially = 468,
8072    InlineP = 469,
8073    InnerP = 470,
8074    Inout = 471,
8075    InputP = 472,
8076    Insensitive = 473,
8077    Insert = 474,
8078    Instead = 475,
8079    IntP = 476,
8080    Integer = 477,
8081    Intersect = 478,
8082    Interval = 479,
8083    Into = 480,
8084    Invoker = 481,
8085    Is = 482,
8086    Isnull = 483,
8087    Isolation = 484,
8088    Join = 485,
8089    Json = 486,
8090    JsonArray = 487,
8091    JsonArrayagg = 488,
8092    JsonExists = 489,
8093    JsonObject = 490,
8094    JsonObjectagg = 491,
8095    JsonQuery = 492,
8096    JsonScalar = 493,
8097    JsonSerialize = 494,
8098    JsonTable = 495,
8099    JsonValue = 496,
8100    Keep = 497,
8101    Key = 498,
8102    Keys = 499,
8103    Label = 500,
8104    Language = 501,
8105    LargeP = 502,
8106    LastP = 503,
8107    LateralP = 504,
8108    Leading = 505,
8109    Leakproof = 506,
8110    Least = 507,
8111    Left = 508,
8112    Level = 509,
8113    Like = 510,
8114    Limit = 511,
8115    Listen = 512,
8116    Load = 513,
8117    Local = 514,
8118    Localtime = 515,
8119    Localtimestamp = 516,
8120    Location = 517,
8121    LockP = 518,
8122    Locked = 519,
8123    Logged = 520,
8124    Mapping = 521,
8125    Match = 522,
8126    Matched = 523,
8127    Materialized = 524,
8128    Maxvalue = 525,
8129    Merge = 526,
8130    MergeAction = 527,
8131    Method = 528,
8132    MinuteP = 529,
8133    Minvalue = 530,
8134    Mode = 531,
8135    MonthP = 532,
8136    Move = 533,
8137    NameP = 534,
8138    Names = 535,
8139    National = 536,
8140    Natural = 537,
8141    Nchar = 538,
8142    Nested = 539,
8143    New = 540,
8144    Next = 541,
8145    Nfc = 542,
8146    Nfd = 543,
8147    Nfkc = 544,
8148    Nfkd = 545,
8149    No = 546,
8150    None = 547,
8151    Normalize = 548,
8152    Normalized = 549,
8153    Not = 550,
8154    Nothing = 551,
8155    Notify = 552,
8156    Notnull = 553,
8157    Nowait = 554,
8158    NullP = 555,
8159    Nullif = 556,
8160    NullsP = 557,
8161    Numeric = 558,
8162    ObjectP = 559,
8163    ObjectsP = 560,
8164    Of = 561,
8165    Off = 562,
8166    Offset = 563,
8167    Oids = 564,
8168    Old = 565,
8169    Omit = 566,
8170    On = 567,
8171    Only = 568,
8172    Operator = 569,
8173    Option = 570,
8174    Options = 571,
8175    Or = 572,
8176    Order = 573,
8177    Ordinality = 574,
8178    Others = 575,
8179    OutP = 576,
8180    OuterP = 577,
8181    Over = 578,
8182    Overlaps = 579,
8183    Overlay = 580,
8184    Overriding = 581,
8185    Owned = 582,
8186    Owner = 583,
8187    Parallel = 584,
8188    Parameter = 585,
8189    Parser = 586,
8190    Partial = 587,
8191    Partition = 588,
8192    Passing = 589,
8193    Password = 590,
8194    Path = 591,
8195    Period = 592,
8196    Placing = 593,
8197    Plan = 594,
8198    Plans = 595,
8199    Policy = 596,
8200    Position = 597,
8201    Preceding = 598,
8202    Precision = 599,
8203    Preserve = 600,
8204    Prepare = 601,
8205    Prepared = 602,
8206    Primary = 603,
8207    Prior = 604,
8208    Privileges = 605,
8209    Procedural = 606,
8210    Procedure = 607,
8211    Procedures = 608,
8212    Program = 609,
8213    Publication = 610,
8214    Quote = 611,
8215    Quotes = 612,
8216    Range = 613,
8217    Read = 614,
8218    Real = 615,
8219    Reassign = 616,
8220    Recursive = 617,
8221    RefP = 618,
8222    References = 619,
8223    Referencing = 620,
8224    Refresh = 621,
8225    Reindex = 622,
8226    RelativeP = 623,
8227    Release = 624,
8228    Rename = 625,
8229    Repeatable = 626,
8230    Replace = 627,
8231    Replica = 628,
8232    Reset = 629,
8233    Restart = 630,
8234    Restrict = 631,
8235    Return = 632,
8236    Returning = 633,
8237    Returns = 634,
8238    Revoke = 635,
8239    Right = 636,
8240    Role = 637,
8241    Rollback = 638,
8242    Rollup = 639,
8243    Routine = 640,
8244    Routines = 641,
8245    Row = 642,
8246    Rows = 643,
8247    Rule = 644,
8248    Savepoint = 645,
8249    Scalar = 646,
8250    Schema = 647,
8251    Schemas = 648,
8252    Scroll = 649,
8253    Search = 650,
8254    SecondP = 651,
8255    Security = 652,
8256    Select = 653,
8257    Sequence = 654,
8258    Sequences = 655,
8259    Serializable = 656,
8260    Server = 657,
8261    Session = 658,
8262    SessionUser = 659,
8263    Set = 660,
8264    Sets = 661,
8265    Setof = 662,
8266    Share = 663,
8267    Show = 664,
8268    Similar = 665,
8269    Simple = 666,
8270    Skip = 667,
8271    Smallint = 668,
8272    Snapshot = 669,
8273    Some = 670,
8274    Source = 671,
8275    SqlP = 672,
8276    Stable = 673,
8277    StandaloneP = 674,
8278    Start = 675,
8279    Statement = 676,
8280    Statistics = 677,
8281    Stdin = 678,
8282    Stdout = 679,
8283    Storage = 680,
8284    Stored = 681,
8285    StrictP = 682,
8286    StringP = 683,
8287    StripP = 684,
8288    Subscription = 685,
8289    Substring = 686,
8290    Support = 687,
8291    Symmetric = 688,
8292    Sysid = 689,
8293    SystemP = 690,
8294    SystemUser = 691,
8295    Table = 692,
8296    Tables = 693,
8297    Tablesample = 694,
8298    Tablespace = 695,
8299    Target = 696,
8300    Temp = 697,
8301    Template = 698,
8302    Temporary = 699,
8303    TextP = 700,
8304    Then = 701,
8305    Ties = 702,
8306    Time = 703,
8307    Timestamp = 704,
8308    To = 705,
8309    Trailing = 706,
8310    Transaction = 707,
8311    Transform = 708,
8312    Treat = 709,
8313    Trigger = 710,
8314    Trim = 711,
8315    TrueP = 712,
8316    Truncate = 713,
8317    Trusted = 714,
8318    TypeP = 715,
8319    TypesP = 716,
8320    Uescape = 717,
8321    Unbounded = 718,
8322    Unconditional = 719,
8323    Uncommitted = 720,
8324    Unencrypted = 721,
8325    Union = 722,
8326    Unique = 723,
8327    Unknown = 724,
8328    Unlisten = 725,
8329    Unlogged = 726,
8330    Until = 727,
8331    Update = 728,
8332    User = 729,
8333    Using = 730,
8334    Vacuum = 731,
8335    Valid = 732,
8336    Validate = 733,
8337    Validator = 734,
8338    ValueP = 735,
8339    Values = 736,
8340    Varchar = 737,
8341    Variadic = 738,
8342    Varying = 739,
8343    Verbose = 740,
8344    VersionP = 741,
8345    View = 742,
8346    Views = 743,
8347    Virtual = 744,
8348    Volatile = 745,
8349    When = 746,
8350    Where = 747,
8351    WhitespaceP = 748,
8352    Window = 749,
8353    With = 750,
8354    Within = 751,
8355    Without = 752,
8356    Work = 753,
8357    Wrapper = 754,
8358    Write = 755,
8359    XmlP = 756,
8360    Xmlattributes = 757,
8361    Xmlconcat = 758,
8362    Xmlelement = 759,
8363    Xmlexists = 760,
8364    Xmlforest = 761,
8365    Xmlnamespaces = 762,
8366    Xmlparse = 763,
8367    Xmlpi = 764,
8368    Xmlroot = 765,
8369    Xmlserialize = 766,
8370    Xmltable = 767,
8371    YearP = 768,
8372    YesP = 769,
8373    Zone = 770,
8374    FormatLa = 771,
8375    NotLa = 772,
8376    NullsLa = 773,
8377    WithLa = 774,
8378    WithoutLa = 775,
8379    ModeTypeName = 776,
8380    ModePlpgsqlExpr = 777,
8381    ModePlpgsqlAssign1 = 778,
8382    ModePlpgsqlAssign2 = 779,
8383    ModePlpgsqlAssign3 = 780,
8384    Uminus = 781,
8385}
8386impl Token {
8387    /// String value of the enum field names used in the ProtoBuf definition.
8388    ///
8389    /// The values are not transformed in any way and thus are considered stable
8390    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8391    pub fn as_str_name(&self) -> &'static str {
8392        match self {
8393            Self::Nul => "NUL",
8394            Self::Ascii36 => "ASCII_36",
8395            Self::Ascii37 => "ASCII_37",
8396            Self::Ascii40 => "ASCII_40",
8397            Self::Ascii41 => "ASCII_41",
8398            Self::Ascii42 => "ASCII_42",
8399            Self::Ascii43 => "ASCII_43",
8400            Self::Ascii44 => "ASCII_44",
8401            Self::Ascii45 => "ASCII_45",
8402            Self::Ascii46 => "ASCII_46",
8403            Self::Ascii47 => "ASCII_47",
8404            Self::Ascii58 => "ASCII_58",
8405            Self::Ascii59 => "ASCII_59",
8406            Self::Ascii60 => "ASCII_60",
8407            Self::Ascii61 => "ASCII_61",
8408            Self::Ascii62 => "ASCII_62",
8409            Self::Ascii63 => "ASCII_63",
8410            Self::Ascii91 => "ASCII_91",
8411            Self::Ascii92 => "ASCII_92",
8412            Self::Ascii93 => "ASCII_93",
8413            Self::Ascii94 => "ASCII_94",
8414            Self::Ident => "IDENT",
8415            Self::Uident => "UIDENT",
8416            Self::Fconst => "FCONST",
8417            Self::Sconst => "SCONST",
8418            Self::Usconst => "USCONST",
8419            Self::Bconst => "BCONST",
8420            Self::Xconst => "XCONST",
8421            Self::Op => "Op",
8422            Self::Iconst => "ICONST",
8423            Self::Param => "PARAM",
8424            Self::Typecast => "TYPECAST",
8425            Self::DotDot => "DOT_DOT",
8426            Self::ColonEquals => "COLON_EQUALS",
8427            Self::EqualsGreater => "EQUALS_GREATER",
8428            Self::LessEquals => "LESS_EQUALS",
8429            Self::GreaterEquals => "GREATER_EQUALS",
8430            Self::NotEquals => "NOT_EQUALS",
8431            Self::SqlComment => "SQL_COMMENT",
8432            Self::CComment => "C_COMMENT",
8433            Self::AbortP => "ABORT_P",
8434            Self::Absent => "ABSENT",
8435            Self::AbsoluteP => "ABSOLUTE_P",
8436            Self::Access => "ACCESS",
8437            Self::Action => "ACTION",
8438            Self::AddP => "ADD_P",
8439            Self::Admin => "ADMIN",
8440            Self::After => "AFTER",
8441            Self::Aggregate => "AGGREGATE",
8442            Self::All => "ALL",
8443            Self::Also => "ALSO",
8444            Self::Alter => "ALTER",
8445            Self::Always => "ALWAYS",
8446            Self::Analyse => "ANALYSE",
8447            Self::Analyze => "ANALYZE",
8448            Self::And => "AND",
8449            Self::Any => "ANY",
8450            Self::Array => "ARRAY",
8451            Self::As => "AS",
8452            Self::Asc => "ASC",
8453            Self::Asensitive => "ASENSITIVE",
8454            Self::Assertion => "ASSERTION",
8455            Self::Assignment => "ASSIGNMENT",
8456            Self::Asymmetric => "ASYMMETRIC",
8457            Self::Atomic => "ATOMIC",
8458            Self::At => "AT",
8459            Self::Attach => "ATTACH",
8460            Self::Attribute => "ATTRIBUTE",
8461            Self::Authorization => "AUTHORIZATION",
8462            Self::Backward => "BACKWARD",
8463            Self::Before => "BEFORE",
8464            Self::BeginP => "BEGIN_P",
8465            Self::Between => "BETWEEN",
8466            Self::Bigint => "BIGINT",
8467            Self::Binary => "BINARY",
8468            Self::Bit => "BIT",
8469            Self::BooleanP => "BOOLEAN_P",
8470            Self::Both => "BOTH",
8471            Self::Breadth => "BREADTH",
8472            Self::By => "BY",
8473            Self::Cache => "CACHE",
8474            Self::Call => "CALL",
8475            Self::Called => "CALLED",
8476            Self::Cascade => "CASCADE",
8477            Self::Cascaded => "CASCADED",
8478            Self::Case => "CASE",
8479            Self::Cast => "CAST",
8480            Self::CatalogP => "CATALOG_P",
8481            Self::Chain => "CHAIN",
8482            Self::CharP => "CHAR_P",
8483            Self::Character => "CHARACTER",
8484            Self::Characteristics => "CHARACTERISTICS",
8485            Self::Check => "CHECK",
8486            Self::Checkpoint => "CHECKPOINT",
8487            Self::Class => "CLASS",
8488            Self::Close => "CLOSE",
8489            Self::Cluster => "CLUSTER",
8490            Self::Coalesce => "COALESCE",
8491            Self::Collate => "COLLATE",
8492            Self::Collation => "COLLATION",
8493            Self::Column => "COLUMN",
8494            Self::Columns => "COLUMNS",
8495            Self::Comment => "COMMENT",
8496            Self::Comments => "COMMENTS",
8497            Self::Commit => "COMMIT",
8498            Self::Committed => "COMMITTED",
8499            Self::Compression => "COMPRESSION",
8500            Self::Concurrently => "CONCURRENTLY",
8501            Self::Conditional => "CONDITIONAL",
8502            Self::Configuration => "CONFIGURATION",
8503            Self::Conflict => "CONFLICT",
8504            Self::Connection => "CONNECTION",
8505            Self::Constraint => "CONSTRAINT",
8506            Self::Constraints => "CONSTRAINTS",
8507            Self::ContentP => "CONTENT_P",
8508            Self::ContinueP => "CONTINUE_P",
8509            Self::ConversionP => "CONVERSION_P",
8510            Self::Copy => "COPY",
8511            Self::Cost => "COST",
8512            Self::Create => "CREATE",
8513            Self::Cross => "CROSS",
8514            Self::Csv => "CSV",
8515            Self::Cube => "CUBE",
8516            Self::CurrentP => "CURRENT_P",
8517            Self::CurrentCatalog => "CURRENT_CATALOG",
8518            Self::CurrentDate => "CURRENT_DATE",
8519            Self::CurrentRole => "CURRENT_ROLE",
8520            Self::CurrentSchema => "CURRENT_SCHEMA",
8521            Self::CurrentTime => "CURRENT_TIME",
8522            Self::CurrentTimestamp => "CURRENT_TIMESTAMP",
8523            Self::CurrentUser => "CURRENT_USER",
8524            Self::Cursor => "CURSOR",
8525            Self::Cycle => "CYCLE",
8526            Self::DataP => "DATA_P",
8527            Self::Database => "DATABASE",
8528            Self::DayP => "DAY_P",
8529            Self::Deallocate => "DEALLOCATE",
8530            Self::Dec => "DEC",
8531            Self::DecimalP => "DECIMAL_P",
8532            Self::Declare => "DECLARE",
8533            Self::Default => "DEFAULT",
8534            Self::Defaults => "DEFAULTS",
8535            Self::Deferrable => "DEFERRABLE",
8536            Self::Deferred => "DEFERRED",
8537            Self::Definer => "DEFINER",
8538            Self::DeleteP => "DELETE_P",
8539            Self::Delimiter => "DELIMITER",
8540            Self::Delimiters => "DELIMITERS",
8541            Self::Depends => "DEPENDS",
8542            Self::Depth => "DEPTH",
8543            Self::Desc => "DESC",
8544            Self::Detach => "DETACH",
8545            Self::Dictionary => "DICTIONARY",
8546            Self::DisableP => "DISABLE_P",
8547            Self::Discard => "DISCARD",
8548            Self::Distinct => "DISTINCT",
8549            Self::Do => "DO",
8550            Self::DocumentP => "DOCUMENT_P",
8551            Self::DomainP => "DOMAIN_P",
8552            Self::DoubleP => "DOUBLE_P",
8553            Self::Drop => "DROP",
8554            Self::Each => "EACH",
8555            Self::Else => "ELSE",
8556            Self::EmptyP => "EMPTY_P",
8557            Self::EnableP => "ENABLE_P",
8558            Self::Encoding => "ENCODING",
8559            Self::Encrypted => "ENCRYPTED",
8560            Self::EndP => "END_P",
8561            Self::Enforced => "ENFORCED",
8562            Self::EnumP => "ENUM_P",
8563            Self::ErrorP => "ERROR_P",
8564            Self::Escape => "ESCAPE",
8565            Self::Event => "EVENT",
8566            Self::Except => "EXCEPT",
8567            Self::Exclude => "EXCLUDE",
8568            Self::Excluding => "EXCLUDING",
8569            Self::Exclusive => "EXCLUSIVE",
8570            Self::Execute => "EXECUTE",
8571            Self::Exists => "EXISTS",
8572            Self::Explain => "EXPLAIN",
8573            Self::Expression => "EXPRESSION",
8574            Self::Extension => "EXTENSION",
8575            Self::External => "EXTERNAL",
8576            Self::Extract => "EXTRACT",
8577            Self::FalseP => "FALSE_P",
8578            Self::Family => "FAMILY",
8579            Self::Fetch => "FETCH",
8580            Self::Filter => "FILTER",
8581            Self::Finalize => "FINALIZE",
8582            Self::FirstP => "FIRST_P",
8583            Self::FloatP => "FLOAT_P",
8584            Self::Following => "FOLLOWING",
8585            Self::For => "FOR",
8586            Self::Force => "FORCE",
8587            Self::Foreign => "FOREIGN",
8588            Self::Format => "FORMAT",
8589            Self::Forward => "FORWARD",
8590            Self::Freeze => "FREEZE",
8591            Self::From => "FROM",
8592            Self::Full => "FULL",
8593            Self::Function => "FUNCTION",
8594            Self::Functions => "FUNCTIONS",
8595            Self::Generated => "GENERATED",
8596            Self::Global => "GLOBAL",
8597            Self::Grant => "GRANT",
8598            Self::Granted => "GRANTED",
8599            Self::Greatest => "GREATEST",
8600            Self::GroupP => "GROUP_P",
8601            Self::Grouping => "GROUPING",
8602            Self::Groups => "GROUPS",
8603            Self::Handler => "HANDLER",
8604            Self::Having => "HAVING",
8605            Self::HeaderP => "HEADER_P",
8606            Self::Hold => "HOLD",
8607            Self::HourP => "HOUR_P",
8608            Self::IdentityP => "IDENTITY_P",
8609            Self::IfP => "IF_P",
8610            Self::Ilike => "ILIKE",
8611            Self::Immediate => "IMMEDIATE",
8612            Self::Immutable => "IMMUTABLE",
8613            Self::ImplicitP => "IMPLICIT_P",
8614            Self::ImportP => "IMPORT_P",
8615            Self::InP => "IN_P",
8616            Self::Include => "INCLUDE",
8617            Self::Including => "INCLUDING",
8618            Self::Increment => "INCREMENT",
8619            Self::Indent => "INDENT",
8620            Self::Index => "INDEX",
8621            Self::Indexes => "INDEXES",
8622            Self::Inherit => "INHERIT",
8623            Self::Inherits => "INHERITS",
8624            Self::Initially => "INITIALLY",
8625            Self::InlineP => "INLINE_P",
8626            Self::InnerP => "INNER_P",
8627            Self::Inout => "INOUT",
8628            Self::InputP => "INPUT_P",
8629            Self::Insensitive => "INSENSITIVE",
8630            Self::Insert => "INSERT",
8631            Self::Instead => "INSTEAD",
8632            Self::IntP => "INT_P",
8633            Self::Integer => "INTEGER",
8634            Self::Intersect => "INTERSECT",
8635            Self::Interval => "INTERVAL",
8636            Self::Into => "INTO",
8637            Self::Invoker => "INVOKER",
8638            Self::Is => "IS",
8639            Self::Isnull => "ISNULL",
8640            Self::Isolation => "ISOLATION",
8641            Self::Join => "JOIN",
8642            Self::Json => "JSON",
8643            Self::JsonArray => "JSON_ARRAY",
8644            Self::JsonArrayagg => "JSON_ARRAYAGG",
8645            Self::JsonExists => "JSON_EXISTS",
8646            Self::JsonObject => "JSON_OBJECT",
8647            Self::JsonObjectagg => "JSON_OBJECTAGG",
8648            Self::JsonQuery => "JSON_QUERY",
8649            Self::JsonScalar => "JSON_SCALAR",
8650            Self::JsonSerialize => "JSON_SERIALIZE",
8651            Self::JsonTable => "JSON_TABLE",
8652            Self::JsonValue => "JSON_VALUE",
8653            Self::Keep => "KEEP",
8654            Self::Key => "KEY",
8655            Self::Keys => "KEYS",
8656            Self::Label => "LABEL",
8657            Self::Language => "LANGUAGE",
8658            Self::LargeP => "LARGE_P",
8659            Self::LastP => "LAST_P",
8660            Self::LateralP => "LATERAL_P",
8661            Self::Leading => "LEADING",
8662            Self::Leakproof => "LEAKPROOF",
8663            Self::Least => "LEAST",
8664            Self::Left => "LEFT",
8665            Self::Level => "LEVEL",
8666            Self::Like => "LIKE",
8667            Self::Limit => "LIMIT",
8668            Self::Listen => "LISTEN",
8669            Self::Load => "LOAD",
8670            Self::Local => "LOCAL",
8671            Self::Localtime => "LOCALTIME",
8672            Self::Localtimestamp => "LOCALTIMESTAMP",
8673            Self::Location => "LOCATION",
8674            Self::LockP => "LOCK_P",
8675            Self::Locked => "LOCKED",
8676            Self::Logged => "LOGGED",
8677            Self::Mapping => "MAPPING",
8678            Self::Match => "MATCH",
8679            Self::Matched => "MATCHED",
8680            Self::Materialized => "MATERIALIZED",
8681            Self::Maxvalue => "MAXVALUE",
8682            Self::Merge => "MERGE",
8683            Self::MergeAction => "MERGE_ACTION",
8684            Self::Method => "METHOD",
8685            Self::MinuteP => "MINUTE_P",
8686            Self::Minvalue => "MINVALUE",
8687            Self::Mode => "MODE",
8688            Self::MonthP => "MONTH_P",
8689            Self::Move => "MOVE",
8690            Self::NameP => "NAME_P",
8691            Self::Names => "NAMES",
8692            Self::National => "NATIONAL",
8693            Self::Natural => "NATURAL",
8694            Self::Nchar => "NCHAR",
8695            Self::Nested => "NESTED",
8696            Self::New => "NEW",
8697            Self::Next => "NEXT",
8698            Self::Nfc => "NFC",
8699            Self::Nfd => "NFD",
8700            Self::Nfkc => "NFKC",
8701            Self::Nfkd => "NFKD",
8702            Self::No => "NO",
8703            Self::None => "NONE",
8704            Self::Normalize => "NORMALIZE",
8705            Self::Normalized => "NORMALIZED",
8706            Self::Not => "NOT",
8707            Self::Nothing => "NOTHING",
8708            Self::Notify => "NOTIFY",
8709            Self::Notnull => "NOTNULL",
8710            Self::Nowait => "NOWAIT",
8711            Self::NullP => "NULL_P",
8712            Self::Nullif => "NULLIF",
8713            Self::NullsP => "NULLS_P",
8714            Self::Numeric => "NUMERIC",
8715            Self::ObjectP => "OBJECT_P",
8716            Self::ObjectsP => "OBJECTS_P",
8717            Self::Of => "OF",
8718            Self::Off => "OFF",
8719            Self::Offset => "OFFSET",
8720            Self::Oids => "OIDS",
8721            Self::Old => "OLD",
8722            Self::Omit => "OMIT",
8723            Self::On => "ON",
8724            Self::Only => "ONLY",
8725            Self::Operator => "OPERATOR",
8726            Self::Option => "OPTION",
8727            Self::Options => "OPTIONS",
8728            Self::Or => "OR",
8729            Self::Order => "ORDER",
8730            Self::Ordinality => "ORDINALITY",
8731            Self::Others => "OTHERS",
8732            Self::OutP => "OUT_P",
8733            Self::OuterP => "OUTER_P",
8734            Self::Over => "OVER",
8735            Self::Overlaps => "OVERLAPS",
8736            Self::Overlay => "OVERLAY",
8737            Self::Overriding => "OVERRIDING",
8738            Self::Owned => "OWNED",
8739            Self::Owner => "OWNER",
8740            Self::Parallel => "PARALLEL",
8741            Self::Parameter => "PARAMETER",
8742            Self::Parser => "PARSER",
8743            Self::Partial => "PARTIAL",
8744            Self::Partition => "PARTITION",
8745            Self::Passing => "PASSING",
8746            Self::Password => "PASSWORD",
8747            Self::Path => "PATH",
8748            Self::Period => "PERIOD",
8749            Self::Placing => "PLACING",
8750            Self::Plan => "PLAN",
8751            Self::Plans => "PLANS",
8752            Self::Policy => "POLICY",
8753            Self::Position => "POSITION",
8754            Self::Preceding => "PRECEDING",
8755            Self::Precision => "PRECISION",
8756            Self::Preserve => "PRESERVE",
8757            Self::Prepare => "PREPARE",
8758            Self::Prepared => "PREPARED",
8759            Self::Primary => "PRIMARY",
8760            Self::Prior => "PRIOR",
8761            Self::Privileges => "PRIVILEGES",
8762            Self::Procedural => "PROCEDURAL",
8763            Self::Procedure => "PROCEDURE",
8764            Self::Procedures => "PROCEDURES",
8765            Self::Program => "PROGRAM",
8766            Self::Publication => "PUBLICATION",
8767            Self::Quote => "QUOTE",
8768            Self::Quotes => "QUOTES",
8769            Self::Range => "RANGE",
8770            Self::Read => "READ",
8771            Self::Real => "REAL",
8772            Self::Reassign => "REASSIGN",
8773            Self::Recursive => "RECURSIVE",
8774            Self::RefP => "REF_P",
8775            Self::References => "REFERENCES",
8776            Self::Referencing => "REFERENCING",
8777            Self::Refresh => "REFRESH",
8778            Self::Reindex => "REINDEX",
8779            Self::RelativeP => "RELATIVE_P",
8780            Self::Release => "RELEASE",
8781            Self::Rename => "RENAME",
8782            Self::Repeatable => "REPEATABLE",
8783            Self::Replace => "REPLACE",
8784            Self::Replica => "REPLICA",
8785            Self::Reset => "RESET",
8786            Self::Restart => "RESTART",
8787            Self::Restrict => "RESTRICT",
8788            Self::Return => "RETURN",
8789            Self::Returning => "RETURNING",
8790            Self::Returns => "RETURNS",
8791            Self::Revoke => "REVOKE",
8792            Self::Right => "RIGHT",
8793            Self::Role => "ROLE",
8794            Self::Rollback => "ROLLBACK",
8795            Self::Rollup => "ROLLUP",
8796            Self::Routine => "ROUTINE",
8797            Self::Routines => "ROUTINES",
8798            Self::Row => "ROW",
8799            Self::Rows => "ROWS",
8800            Self::Rule => "RULE",
8801            Self::Savepoint => "SAVEPOINT",
8802            Self::Scalar => "SCALAR",
8803            Self::Schema => "SCHEMA",
8804            Self::Schemas => "SCHEMAS",
8805            Self::Scroll => "SCROLL",
8806            Self::Search => "SEARCH",
8807            Self::SecondP => "SECOND_P",
8808            Self::Security => "SECURITY",
8809            Self::Select => "SELECT",
8810            Self::Sequence => "SEQUENCE",
8811            Self::Sequences => "SEQUENCES",
8812            Self::Serializable => "SERIALIZABLE",
8813            Self::Server => "SERVER",
8814            Self::Session => "SESSION",
8815            Self::SessionUser => "SESSION_USER",
8816            Self::Set => "SET",
8817            Self::Sets => "SETS",
8818            Self::Setof => "SETOF",
8819            Self::Share => "SHARE",
8820            Self::Show => "SHOW",
8821            Self::Similar => "SIMILAR",
8822            Self::Simple => "SIMPLE",
8823            Self::Skip => "SKIP",
8824            Self::Smallint => "SMALLINT",
8825            Self::Snapshot => "SNAPSHOT",
8826            Self::Some => "SOME",
8827            Self::Source => "SOURCE",
8828            Self::SqlP => "SQL_P",
8829            Self::Stable => "STABLE",
8830            Self::StandaloneP => "STANDALONE_P",
8831            Self::Start => "START",
8832            Self::Statement => "STATEMENT",
8833            Self::Statistics => "STATISTICS",
8834            Self::Stdin => "STDIN",
8835            Self::Stdout => "STDOUT",
8836            Self::Storage => "STORAGE",
8837            Self::Stored => "STORED",
8838            Self::StrictP => "STRICT_P",
8839            Self::StringP => "STRING_P",
8840            Self::StripP => "STRIP_P",
8841            Self::Subscription => "SUBSCRIPTION",
8842            Self::Substring => "SUBSTRING",
8843            Self::Support => "SUPPORT",
8844            Self::Symmetric => "SYMMETRIC",
8845            Self::Sysid => "SYSID",
8846            Self::SystemP => "SYSTEM_P",
8847            Self::SystemUser => "SYSTEM_USER",
8848            Self::Table => "TABLE",
8849            Self::Tables => "TABLES",
8850            Self::Tablesample => "TABLESAMPLE",
8851            Self::Tablespace => "TABLESPACE",
8852            Self::Target => "TARGET",
8853            Self::Temp => "TEMP",
8854            Self::Template => "TEMPLATE",
8855            Self::Temporary => "TEMPORARY",
8856            Self::TextP => "TEXT_P",
8857            Self::Then => "THEN",
8858            Self::Ties => "TIES",
8859            Self::Time => "TIME",
8860            Self::Timestamp => "TIMESTAMP",
8861            Self::To => "TO",
8862            Self::Trailing => "TRAILING",
8863            Self::Transaction => "TRANSACTION",
8864            Self::Transform => "TRANSFORM",
8865            Self::Treat => "TREAT",
8866            Self::Trigger => "TRIGGER",
8867            Self::Trim => "TRIM",
8868            Self::TrueP => "TRUE_P",
8869            Self::Truncate => "TRUNCATE",
8870            Self::Trusted => "TRUSTED",
8871            Self::TypeP => "TYPE_P",
8872            Self::TypesP => "TYPES_P",
8873            Self::Uescape => "UESCAPE",
8874            Self::Unbounded => "UNBOUNDED",
8875            Self::Unconditional => "UNCONDITIONAL",
8876            Self::Uncommitted => "UNCOMMITTED",
8877            Self::Unencrypted => "UNENCRYPTED",
8878            Self::Union => "UNION",
8879            Self::Unique => "UNIQUE",
8880            Self::Unknown => "UNKNOWN",
8881            Self::Unlisten => "UNLISTEN",
8882            Self::Unlogged => "UNLOGGED",
8883            Self::Until => "UNTIL",
8884            Self::Update => "UPDATE",
8885            Self::User => "USER",
8886            Self::Using => "USING",
8887            Self::Vacuum => "VACUUM",
8888            Self::Valid => "VALID",
8889            Self::Validate => "VALIDATE",
8890            Self::Validator => "VALIDATOR",
8891            Self::ValueP => "VALUE_P",
8892            Self::Values => "VALUES",
8893            Self::Varchar => "VARCHAR",
8894            Self::Variadic => "VARIADIC",
8895            Self::Varying => "VARYING",
8896            Self::Verbose => "VERBOSE",
8897            Self::VersionP => "VERSION_P",
8898            Self::View => "VIEW",
8899            Self::Views => "VIEWS",
8900            Self::Virtual => "VIRTUAL",
8901            Self::Volatile => "VOLATILE",
8902            Self::When => "WHEN",
8903            Self::Where => "WHERE",
8904            Self::WhitespaceP => "WHITESPACE_P",
8905            Self::Window => "WINDOW",
8906            Self::With => "WITH",
8907            Self::Within => "WITHIN",
8908            Self::Without => "WITHOUT",
8909            Self::Work => "WORK",
8910            Self::Wrapper => "WRAPPER",
8911            Self::Write => "WRITE",
8912            Self::XmlP => "XML_P",
8913            Self::Xmlattributes => "XMLATTRIBUTES",
8914            Self::Xmlconcat => "XMLCONCAT",
8915            Self::Xmlelement => "XMLELEMENT",
8916            Self::Xmlexists => "XMLEXISTS",
8917            Self::Xmlforest => "XMLFOREST",
8918            Self::Xmlnamespaces => "XMLNAMESPACES",
8919            Self::Xmlparse => "XMLPARSE",
8920            Self::Xmlpi => "XMLPI",
8921            Self::Xmlroot => "XMLROOT",
8922            Self::Xmlserialize => "XMLSERIALIZE",
8923            Self::Xmltable => "XMLTABLE",
8924            Self::YearP => "YEAR_P",
8925            Self::YesP => "YES_P",
8926            Self::Zone => "ZONE",
8927            Self::FormatLa => "FORMAT_LA",
8928            Self::NotLa => "NOT_LA",
8929            Self::NullsLa => "NULLS_LA",
8930            Self::WithLa => "WITH_LA",
8931            Self::WithoutLa => "WITHOUT_LA",
8932            Self::ModeTypeName => "MODE_TYPE_NAME",
8933            Self::ModePlpgsqlExpr => "MODE_PLPGSQL_EXPR",
8934            Self::ModePlpgsqlAssign1 => "MODE_PLPGSQL_ASSIGN1",
8935            Self::ModePlpgsqlAssign2 => "MODE_PLPGSQL_ASSIGN2",
8936            Self::ModePlpgsqlAssign3 => "MODE_PLPGSQL_ASSIGN3",
8937            Self::Uminus => "UMINUS",
8938        }
8939    }
8940    /// Creates an enum from field names used in the ProtoBuf definition.
8941    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8942        match value {
8943            "NUL" => Some(Self::Nul),
8944            "ASCII_36" => Some(Self::Ascii36),
8945            "ASCII_37" => Some(Self::Ascii37),
8946            "ASCII_40" => Some(Self::Ascii40),
8947            "ASCII_41" => Some(Self::Ascii41),
8948            "ASCII_42" => Some(Self::Ascii42),
8949            "ASCII_43" => Some(Self::Ascii43),
8950            "ASCII_44" => Some(Self::Ascii44),
8951            "ASCII_45" => Some(Self::Ascii45),
8952            "ASCII_46" => Some(Self::Ascii46),
8953            "ASCII_47" => Some(Self::Ascii47),
8954            "ASCII_58" => Some(Self::Ascii58),
8955            "ASCII_59" => Some(Self::Ascii59),
8956            "ASCII_60" => Some(Self::Ascii60),
8957            "ASCII_61" => Some(Self::Ascii61),
8958            "ASCII_62" => Some(Self::Ascii62),
8959            "ASCII_63" => Some(Self::Ascii63),
8960            "ASCII_91" => Some(Self::Ascii91),
8961            "ASCII_92" => Some(Self::Ascii92),
8962            "ASCII_93" => Some(Self::Ascii93),
8963            "ASCII_94" => Some(Self::Ascii94),
8964            "IDENT" => Some(Self::Ident),
8965            "UIDENT" => Some(Self::Uident),
8966            "FCONST" => Some(Self::Fconst),
8967            "SCONST" => Some(Self::Sconst),
8968            "USCONST" => Some(Self::Usconst),
8969            "BCONST" => Some(Self::Bconst),
8970            "XCONST" => Some(Self::Xconst),
8971            "Op" => Some(Self::Op),
8972            "ICONST" => Some(Self::Iconst),
8973            "PARAM" => Some(Self::Param),
8974            "TYPECAST" => Some(Self::Typecast),
8975            "DOT_DOT" => Some(Self::DotDot),
8976            "COLON_EQUALS" => Some(Self::ColonEquals),
8977            "EQUALS_GREATER" => Some(Self::EqualsGreater),
8978            "LESS_EQUALS" => Some(Self::LessEquals),
8979            "GREATER_EQUALS" => Some(Self::GreaterEquals),
8980            "NOT_EQUALS" => Some(Self::NotEquals),
8981            "SQL_COMMENT" => Some(Self::SqlComment),
8982            "C_COMMENT" => Some(Self::CComment),
8983            "ABORT_P" => Some(Self::AbortP),
8984            "ABSENT" => Some(Self::Absent),
8985            "ABSOLUTE_P" => Some(Self::AbsoluteP),
8986            "ACCESS" => Some(Self::Access),
8987            "ACTION" => Some(Self::Action),
8988            "ADD_P" => Some(Self::AddP),
8989            "ADMIN" => Some(Self::Admin),
8990            "AFTER" => Some(Self::After),
8991            "AGGREGATE" => Some(Self::Aggregate),
8992            "ALL" => Some(Self::All),
8993            "ALSO" => Some(Self::Also),
8994            "ALTER" => Some(Self::Alter),
8995            "ALWAYS" => Some(Self::Always),
8996            "ANALYSE" => Some(Self::Analyse),
8997            "ANALYZE" => Some(Self::Analyze),
8998            "AND" => Some(Self::And),
8999            "ANY" => Some(Self::Any),
9000            "ARRAY" => Some(Self::Array),
9001            "AS" => Some(Self::As),
9002            "ASC" => Some(Self::Asc),
9003            "ASENSITIVE" => Some(Self::Asensitive),
9004            "ASSERTION" => Some(Self::Assertion),
9005            "ASSIGNMENT" => Some(Self::Assignment),
9006            "ASYMMETRIC" => Some(Self::Asymmetric),
9007            "ATOMIC" => Some(Self::Atomic),
9008            "AT" => Some(Self::At),
9009            "ATTACH" => Some(Self::Attach),
9010            "ATTRIBUTE" => Some(Self::Attribute),
9011            "AUTHORIZATION" => Some(Self::Authorization),
9012            "BACKWARD" => Some(Self::Backward),
9013            "BEFORE" => Some(Self::Before),
9014            "BEGIN_P" => Some(Self::BeginP),
9015            "BETWEEN" => Some(Self::Between),
9016            "BIGINT" => Some(Self::Bigint),
9017            "BINARY" => Some(Self::Binary),
9018            "BIT" => Some(Self::Bit),
9019            "BOOLEAN_P" => Some(Self::BooleanP),
9020            "BOTH" => Some(Self::Both),
9021            "BREADTH" => Some(Self::Breadth),
9022            "BY" => Some(Self::By),
9023            "CACHE" => Some(Self::Cache),
9024            "CALL" => Some(Self::Call),
9025            "CALLED" => Some(Self::Called),
9026            "CASCADE" => Some(Self::Cascade),
9027            "CASCADED" => Some(Self::Cascaded),
9028            "CASE" => Some(Self::Case),
9029            "CAST" => Some(Self::Cast),
9030            "CATALOG_P" => Some(Self::CatalogP),
9031            "CHAIN" => Some(Self::Chain),
9032            "CHAR_P" => Some(Self::CharP),
9033            "CHARACTER" => Some(Self::Character),
9034            "CHARACTERISTICS" => Some(Self::Characteristics),
9035            "CHECK" => Some(Self::Check),
9036            "CHECKPOINT" => Some(Self::Checkpoint),
9037            "CLASS" => Some(Self::Class),
9038            "CLOSE" => Some(Self::Close),
9039            "CLUSTER" => Some(Self::Cluster),
9040            "COALESCE" => Some(Self::Coalesce),
9041            "COLLATE" => Some(Self::Collate),
9042            "COLLATION" => Some(Self::Collation),
9043            "COLUMN" => Some(Self::Column),
9044            "COLUMNS" => Some(Self::Columns),
9045            "COMMENT" => Some(Self::Comment),
9046            "COMMENTS" => Some(Self::Comments),
9047            "COMMIT" => Some(Self::Commit),
9048            "COMMITTED" => Some(Self::Committed),
9049            "COMPRESSION" => Some(Self::Compression),
9050            "CONCURRENTLY" => Some(Self::Concurrently),
9051            "CONDITIONAL" => Some(Self::Conditional),
9052            "CONFIGURATION" => Some(Self::Configuration),
9053            "CONFLICT" => Some(Self::Conflict),
9054            "CONNECTION" => Some(Self::Connection),
9055            "CONSTRAINT" => Some(Self::Constraint),
9056            "CONSTRAINTS" => Some(Self::Constraints),
9057            "CONTENT_P" => Some(Self::ContentP),
9058            "CONTINUE_P" => Some(Self::ContinueP),
9059            "CONVERSION_P" => Some(Self::ConversionP),
9060            "COPY" => Some(Self::Copy),
9061            "COST" => Some(Self::Cost),
9062            "CREATE" => Some(Self::Create),
9063            "CROSS" => Some(Self::Cross),
9064            "CSV" => Some(Self::Csv),
9065            "CUBE" => Some(Self::Cube),
9066            "CURRENT_P" => Some(Self::CurrentP),
9067            "CURRENT_CATALOG" => Some(Self::CurrentCatalog),
9068            "CURRENT_DATE" => Some(Self::CurrentDate),
9069            "CURRENT_ROLE" => Some(Self::CurrentRole),
9070            "CURRENT_SCHEMA" => Some(Self::CurrentSchema),
9071            "CURRENT_TIME" => Some(Self::CurrentTime),
9072            "CURRENT_TIMESTAMP" => Some(Self::CurrentTimestamp),
9073            "CURRENT_USER" => Some(Self::CurrentUser),
9074            "CURSOR" => Some(Self::Cursor),
9075            "CYCLE" => Some(Self::Cycle),
9076            "DATA_P" => Some(Self::DataP),
9077            "DATABASE" => Some(Self::Database),
9078            "DAY_P" => Some(Self::DayP),
9079            "DEALLOCATE" => Some(Self::Deallocate),
9080            "DEC" => Some(Self::Dec),
9081            "DECIMAL_P" => Some(Self::DecimalP),
9082            "DECLARE" => Some(Self::Declare),
9083            "DEFAULT" => Some(Self::Default),
9084            "DEFAULTS" => Some(Self::Defaults),
9085            "DEFERRABLE" => Some(Self::Deferrable),
9086            "DEFERRED" => Some(Self::Deferred),
9087            "DEFINER" => Some(Self::Definer),
9088            "DELETE_P" => Some(Self::DeleteP),
9089            "DELIMITER" => Some(Self::Delimiter),
9090            "DELIMITERS" => Some(Self::Delimiters),
9091            "DEPENDS" => Some(Self::Depends),
9092            "DEPTH" => Some(Self::Depth),
9093            "DESC" => Some(Self::Desc),
9094            "DETACH" => Some(Self::Detach),
9095            "DICTIONARY" => Some(Self::Dictionary),
9096            "DISABLE_P" => Some(Self::DisableP),
9097            "DISCARD" => Some(Self::Discard),
9098            "DISTINCT" => Some(Self::Distinct),
9099            "DO" => Some(Self::Do),
9100            "DOCUMENT_P" => Some(Self::DocumentP),
9101            "DOMAIN_P" => Some(Self::DomainP),
9102            "DOUBLE_P" => Some(Self::DoubleP),
9103            "DROP" => Some(Self::Drop),
9104            "EACH" => Some(Self::Each),
9105            "ELSE" => Some(Self::Else),
9106            "EMPTY_P" => Some(Self::EmptyP),
9107            "ENABLE_P" => Some(Self::EnableP),
9108            "ENCODING" => Some(Self::Encoding),
9109            "ENCRYPTED" => Some(Self::Encrypted),
9110            "END_P" => Some(Self::EndP),
9111            "ENFORCED" => Some(Self::Enforced),
9112            "ENUM_P" => Some(Self::EnumP),
9113            "ERROR_P" => Some(Self::ErrorP),
9114            "ESCAPE" => Some(Self::Escape),
9115            "EVENT" => Some(Self::Event),
9116            "EXCEPT" => Some(Self::Except),
9117            "EXCLUDE" => Some(Self::Exclude),
9118            "EXCLUDING" => Some(Self::Excluding),
9119            "EXCLUSIVE" => Some(Self::Exclusive),
9120            "EXECUTE" => Some(Self::Execute),
9121            "EXISTS" => Some(Self::Exists),
9122            "EXPLAIN" => Some(Self::Explain),
9123            "EXPRESSION" => Some(Self::Expression),
9124            "EXTENSION" => Some(Self::Extension),
9125            "EXTERNAL" => Some(Self::External),
9126            "EXTRACT" => Some(Self::Extract),
9127            "FALSE_P" => Some(Self::FalseP),
9128            "FAMILY" => Some(Self::Family),
9129            "FETCH" => Some(Self::Fetch),
9130            "FILTER" => Some(Self::Filter),
9131            "FINALIZE" => Some(Self::Finalize),
9132            "FIRST_P" => Some(Self::FirstP),
9133            "FLOAT_P" => Some(Self::FloatP),
9134            "FOLLOWING" => Some(Self::Following),
9135            "FOR" => Some(Self::For),
9136            "FORCE" => Some(Self::Force),
9137            "FOREIGN" => Some(Self::Foreign),
9138            "FORMAT" => Some(Self::Format),
9139            "FORWARD" => Some(Self::Forward),
9140            "FREEZE" => Some(Self::Freeze),
9141            "FROM" => Some(Self::From),
9142            "FULL" => Some(Self::Full),
9143            "FUNCTION" => Some(Self::Function),
9144            "FUNCTIONS" => Some(Self::Functions),
9145            "GENERATED" => Some(Self::Generated),
9146            "GLOBAL" => Some(Self::Global),
9147            "GRANT" => Some(Self::Grant),
9148            "GRANTED" => Some(Self::Granted),
9149            "GREATEST" => Some(Self::Greatest),
9150            "GROUP_P" => Some(Self::GroupP),
9151            "GROUPING" => Some(Self::Grouping),
9152            "GROUPS" => Some(Self::Groups),
9153            "HANDLER" => Some(Self::Handler),
9154            "HAVING" => Some(Self::Having),
9155            "HEADER_P" => Some(Self::HeaderP),
9156            "HOLD" => Some(Self::Hold),
9157            "HOUR_P" => Some(Self::HourP),
9158            "IDENTITY_P" => Some(Self::IdentityP),
9159            "IF_P" => Some(Self::IfP),
9160            "ILIKE" => Some(Self::Ilike),
9161            "IMMEDIATE" => Some(Self::Immediate),
9162            "IMMUTABLE" => Some(Self::Immutable),
9163            "IMPLICIT_P" => Some(Self::ImplicitP),
9164            "IMPORT_P" => Some(Self::ImportP),
9165            "IN_P" => Some(Self::InP),
9166            "INCLUDE" => Some(Self::Include),
9167            "INCLUDING" => Some(Self::Including),
9168            "INCREMENT" => Some(Self::Increment),
9169            "INDENT" => Some(Self::Indent),
9170            "INDEX" => Some(Self::Index),
9171            "INDEXES" => Some(Self::Indexes),
9172            "INHERIT" => Some(Self::Inherit),
9173            "INHERITS" => Some(Self::Inherits),
9174            "INITIALLY" => Some(Self::Initially),
9175            "INLINE_P" => Some(Self::InlineP),
9176            "INNER_P" => Some(Self::InnerP),
9177            "INOUT" => Some(Self::Inout),
9178            "INPUT_P" => Some(Self::InputP),
9179            "INSENSITIVE" => Some(Self::Insensitive),
9180            "INSERT" => Some(Self::Insert),
9181            "INSTEAD" => Some(Self::Instead),
9182            "INT_P" => Some(Self::IntP),
9183            "INTEGER" => Some(Self::Integer),
9184            "INTERSECT" => Some(Self::Intersect),
9185            "INTERVAL" => Some(Self::Interval),
9186            "INTO" => Some(Self::Into),
9187            "INVOKER" => Some(Self::Invoker),
9188            "IS" => Some(Self::Is),
9189            "ISNULL" => Some(Self::Isnull),
9190            "ISOLATION" => Some(Self::Isolation),
9191            "JOIN" => Some(Self::Join),
9192            "JSON" => Some(Self::Json),
9193            "JSON_ARRAY" => Some(Self::JsonArray),
9194            "JSON_ARRAYAGG" => Some(Self::JsonArrayagg),
9195            "JSON_EXISTS" => Some(Self::JsonExists),
9196            "JSON_OBJECT" => Some(Self::JsonObject),
9197            "JSON_OBJECTAGG" => Some(Self::JsonObjectagg),
9198            "JSON_QUERY" => Some(Self::JsonQuery),
9199            "JSON_SCALAR" => Some(Self::JsonScalar),
9200            "JSON_SERIALIZE" => Some(Self::JsonSerialize),
9201            "JSON_TABLE" => Some(Self::JsonTable),
9202            "JSON_VALUE" => Some(Self::JsonValue),
9203            "KEEP" => Some(Self::Keep),
9204            "KEY" => Some(Self::Key),
9205            "KEYS" => Some(Self::Keys),
9206            "LABEL" => Some(Self::Label),
9207            "LANGUAGE" => Some(Self::Language),
9208            "LARGE_P" => Some(Self::LargeP),
9209            "LAST_P" => Some(Self::LastP),
9210            "LATERAL_P" => Some(Self::LateralP),
9211            "LEADING" => Some(Self::Leading),
9212            "LEAKPROOF" => Some(Self::Leakproof),
9213            "LEAST" => Some(Self::Least),
9214            "LEFT" => Some(Self::Left),
9215            "LEVEL" => Some(Self::Level),
9216            "LIKE" => Some(Self::Like),
9217            "LIMIT" => Some(Self::Limit),
9218            "LISTEN" => Some(Self::Listen),
9219            "LOAD" => Some(Self::Load),
9220            "LOCAL" => Some(Self::Local),
9221            "LOCALTIME" => Some(Self::Localtime),
9222            "LOCALTIMESTAMP" => Some(Self::Localtimestamp),
9223            "LOCATION" => Some(Self::Location),
9224            "LOCK_P" => Some(Self::LockP),
9225            "LOCKED" => Some(Self::Locked),
9226            "LOGGED" => Some(Self::Logged),
9227            "MAPPING" => Some(Self::Mapping),
9228            "MATCH" => Some(Self::Match),
9229            "MATCHED" => Some(Self::Matched),
9230            "MATERIALIZED" => Some(Self::Materialized),
9231            "MAXVALUE" => Some(Self::Maxvalue),
9232            "MERGE" => Some(Self::Merge),
9233            "MERGE_ACTION" => Some(Self::MergeAction),
9234            "METHOD" => Some(Self::Method),
9235            "MINUTE_P" => Some(Self::MinuteP),
9236            "MINVALUE" => Some(Self::Minvalue),
9237            "MODE" => Some(Self::Mode),
9238            "MONTH_P" => Some(Self::MonthP),
9239            "MOVE" => Some(Self::Move),
9240            "NAME_P" => Some(Self::NameP),
9241            "NAMES" => Some(Self::Names),
9242            "NATIONAL" => Some(Self::National),
9243            "NATURAL" => Some(Self::Natural),
9244            "NCHAR" => Some(Self::Nchar),
9245            "NESTED" => Some(Self::Nested),
9246            "NEW" => Some(Self::New),
9247            "NEXT" => Some(Self::Next),
9248            "NFC" => Some(Self::Nfc),
9249            "NFD" => Some(Self::Nfd),
9250            "NFKC" => Some(Self::Nfkc),
9251            "NFKD" => Some(Self::Nfkd),
9252            "NO" => Some(Self::No),
9253            "NONE" => Some(Self::None),
9254            "NORMALIZE" => Some(Self::Normalize),
9255            "NORMALIZED" => Some(Self::Normalized),
9256            "NOT" => Some(Self::Not),
9257            "NOTHING" => Some(Self::Nothing),
9258            "NOTIFY" => Some(Self::Notify),
9259            "NOTNULL" => Some(Self::Notnull),
9260            "NOWAIT" => Some(Self::Nowait),
9261            "NULL_P" => Some(Self::NullP),
9262            "NULLIF" => Some(Self::Nullif),
9263            "NULLS_P" => Some(Self::NullsP),
9264            "NUMERIC" => Some(Self::Numeric),
9265            "OBJECT_P" => Some(Self::ObjectP),
9266            "OBJECTS_P" => Some(Self::ObjectsP),
9267            "OF" => Some(Self::Of),
9268            "OFF" => Some(Self::Off),
9269            "OFFSET" => Some(Self::Offset),
9270            "OIDS" => Some(Self::Oids),
9271            "OLD" => Some(Self::Old),
9272            "OMIT" => Some(Self::Omit),
9273            "ON" => Some(Self::On),
9274            "ONLY" => Some(Self::Only),
9275            "OPERATOR" => Some(Self::Operator),
9276            "OPTION" => Some(Self::Option),
9277            "OPTIONS" => Some(Self::Options),
9278            "OR" => Some(Self::Or),
9279            "ORDER" => Some(Self::Order),
9280            "ORDINALITY" => Some(Self::Ordinality),
9281            "OTHERS" => Some(Self::Others),
9282            "OUT_P" => Some(Self::OutP),
9283            "OUTER_P" => Some(Self::OuterP),
9284            "OVER" => Some(Self::Over),
9285            "OVERLAPS" => Some(Self::Overlaps),
9286            "OVERLAY" => Some(Self::Overlay),
9287            "OVERRIDING" => Some(Self::Overriding),
9288            "OWNED" => Some(Self::Owned),
9289            "OWNER" => Some(Self::Owner),
9290            "PARALLEL" => Some(Self::Parallel),
9291            "PARAMETER" => Some(Self::Parameter),
9292            "PARSER" => Some(Self::Parser),
9293            "PARTIAL" => Some(Self::Partial),
9294            "PARTITION" => Some(Self::Partition),
9295            "PASSING" => Some(Self::Passing),
9296            "PASSWORD" => Some(Self::Password),
9297            "PATH" => Some(Self::Path),
9298            "PERIOD" => Some(Self::Period),
9299            "PLACING" => Some(Self::Placing),
9300            "PLAN" => Some(Self::Plan),
9301            "PLANS" => Some(Self::Plans),
9302            "POLICY" => Some(Self::Policy),
9303            "POSITION" => Some(Self::Position),
9304            "PRECEDING" => Some(Self::Preceding),
9305            "PRECISION" => Some(Self::Precision),
9306            "PRESERVE" => Some(Self::Preserve),
9307            "PREPARE" => Some(Self::Prepare),
9308            "PREPARED" => Some(Self::Prepared),
9309            "PRIMARY" => Some(Self::Primary),
9310            "PRIOR" => Some(Self::Prior),
9311            "PRIVILEGES" => Some(Self::Privileges),
9312            "PROCEDURAL" => Some(Self::Procedural),
9313            "PROCEDURE" => Some(Self::Procedure),
9314            "PROCEDURES" => Some(Self::Procedures),
9315            "PROGRAM" => Some(Self::Program),
9316            "PUBLICATION" => Some(Self::Publication),
9317            "QUOTE" => Some(Self::Quote),
9318            "QUOTES" => Some(Self::Quotes),
9319            "RANGE" => Some(Self::Range),
9320            "READ" => Some(Self::Read),
9321            "REAL" => Some(Self::Real),
9322            "REASSIGN" => Some(Self::Reassign),
9323            "RECURSIVE" => Some(Self::Recursive),
9324            "REF_P" => Some(Self::RefP),
9325            "REFERENCES" => Some(Self::References),
9326            "REFERENCING" => Some(Self::Referencing),
9327            "REFRESH" => Some(Self::Refresh),
9328            "REINDEX" => Some(Self::Reindex),
9329            "RELATIVE_P" => Some(Self::RelativeP),
9330            "RELEASE" => Some(Self::Release),
9331            "RENAME" => Some(Self::Rename),
9332            "REPEATABLE" => Some(Self::Repeatable),
9333            "REPLACE" => Some(Self::Replace),
9334            "REPLICA" => Some(Self::Replica),
9335            "RESET" => Some(Self::Reset),
9336            "RESTART" => Some(Self::Restart),
9337            "RESTRICT" => Some(Self::Restrict),
9338            "RETURN" => Some(Self::Return),
9339            "RETURNING" => Some(Self::Returning),
9340            "RETURNS" => Some(Self::Returns),
9341            "REVOKE" => Some(Self::Revoke),
9342            "RIGHT" => Some(Self::Right),
9343            "ROLE" => Some(Self::Role),
9344            "ROLLBACK" => Some(Self::Rollback),
9345            "ROLLUP" => Some(Self::Rollup),
9346            "ROUTINE" => Some(Self::Routine),
9347            "ROUTINES" => Some(Self::Routines),
9348            "ROW" => Some(Self::Row),
9349            "ROWS" => Some(Self::Rows),
9350            "RULE" => Some(Self::Rule),
9351            "SAVEPOINT" => Some(Self::Savepoint),
9352            "SCALAR" => Some(Self::Scalar),
9353            "SCHEMA" => Some(Self::Schema),
9354            "SCHEMAS" => Some(Self::Schemas),
9355            "SCROLL" => Some(Self::Scroll),
9356            "SEARCH" => Some(Self::Search),
9357            "SECOND_P" => Some(Self::SecondP),
9358            "SECURITY" => Some(Self::Security),
9359            "SELECT" => Some(Self::Select),
9360            "SEQUENCE" => Some(Self::Sequence),
9361            "SEQUENCES" => Some(Self::Sequences),
9362            "SERIALIZABLE" => Some(Self::Serializable),
9363            "SERVER" => Some(Self::Server),
9364            "SESSION" => Some(Self::Session),
9365            "SESSION_USER" => Some(Self::SessionUser),
9366            "SET" => Some(Self::Set),
9367            "SETS" => Some(Self::Sets),
9368            "SETOF" => Some(Self::Setof),
9369            "SHARE" => Some(Self::Share),
9370            "SHOW" => Some(Self::Show),
9371            "SIMILAR" => Some(Self::Similar),
9372            "SIMPLE" => Some(Self::Simple),
9373            "SKIP" => Some(Self::Skip),
9374            "SMALLINT" => Some(Self::Smallint),
9375            "SNAPSHOT" => Some(Self::Snapshot),
9376            "SOME" => Some(Self::Some),
9377            "SOURCE" => Some(Self::Source),
9378            "SQL_P" => Some(Self::SqlP),
9379            "STABLE" => Some(Self::Stable),
9380            "STANDALONE_P" => Some(Self::StandaloneP),
9381            "START" => Some(Self::Start),
9382            "STATEMENT" => Some(Self::Statement),
9383            "STATISTICS" => Some(Self::Statistics),
9384            "STDIN" => Some(Self::Stdin),
9385            "STDOUT" => Some(Self::Stdout),
9386            "STORAGE" => Some(Self::Storage),
9387            "STORED" => Some(Self::Stored),
9388            "STRICT_P" => Some(Self::StrictP),
9389            "STRING_P" => Some(Self::StringP),
9390            "STRIP_P" => Some(Self::StripP),
9391            "SUBSCRIPTION" => Some(Self::Subscription),
9392            "SUBSTRING" => Some(Self::Substring),
9393            "SUPPORT" => Some(Self::Support),
9394            "SYMMETRIC" => Some(Self::Symmetric),
9395            "SYSID" => Some(Self::Sysid),
9396            "SYSTEM_P" => Some(Self::SystemP),
9397            "SYSTEM_USER" => Some(Self::SystemUser),
9398            "TABLE" => Some(Self::Table),
9399            "TABLES" => Some(Self::Tables),
9400            "TABLESAMPLE" => Some(Self::Tablesample),
9401            "TABLESPACE" => Some(Self::Tablespace),
9402            "TARGET" => Some(Self::Target),
9403            "TEMP" => Some(Self::Temp),
9404            "TEMPLATE" => Some(Self::Template),
9405            "TEMPORARY" => Some(Self::Temporary),
9406            "TEXT_P" => Some(Self::TextP),
9407            "THEN" => Some(Self::Then),
9408            "TIES" => Some(Self::Ties),
9409            "TIME" => Some(Self::Time),
9410            "TIMESTAMP" => Some(Self::Timestamp),
9411            "TO" => Some(Self::To),
9412            "TRAILING" => Some(Self::Trailing),
9413            "TRANSACTION" => Some(Self::Transaction),
9414            "TRANSFORM" => Some(Self::Transform),
9415            "TREAT" => Some(Self::Treat),
9416            "TRIGGER" => Some(Self::Trigger),
9417            "TRIM" => Some(Self::Trim),
9418            "TRUE_P" => Some(Self::TrueP),
9419            "TRUNCATE" => Some(Self::Truncate),
9420            "TRUSTED" => Some(Self::Trusted),
9421            "TYPE_P" => Some(Self::TypeP),
9422            "TYPES_P" => Some(Self::TypesP),
9423            "UESCAPE" => Some(Self::Uescape),
9424            "UNBOUNDED" => Some(Self::Unbounded),
9425            "UNCONDITIONAL" => Some(Self::Unconditional),
9426            "UNCOMMITTED" => Some(Self::Uncommitted),
9427            "UNENCRYPTED" => Some(Self::Unencrypted),
9428            "UNION" => Some(Self::Union),
9429            "UNIQUE" => Some(Self::Unique),
9430            "UNKNOWN" => Some(Self::Unknown),
9431            "UNLISTEN" => Some(Self::Unlisten),
9432            "UNLOGGED" => Some(Self::Unlogged),
9433            "UNTIL" => Some(Self::Until),
9434            "UPDATE" => Some(Self::Update),
9435            "USER" => Some(Self::User),
9436            "USING" => Some(Self::Using),
9437            "VACUUM" => Some(Self::Vacuum),
9438            "VALID" => Some(Self::Valid),
9439            "VALIDATE" => Some(Self::Validate),
9440            "VALIDATOR" => Some(Self::Validator),
9441            "VALUE_P" => Some(Self::ValueP),
9442            "VALUES" => Some(Self::Values),
9443            "VARCHAR" => Some(Self::Varchar),
9444            "VARIADIC" => Some(Self::Variadic),
9445            "VARYING" => Some(Self::Varying),
9446            "VERBOSE" => Some(Self::Verbose),
9447            "VERSION_P" => Some(Self::VersionP),
9448            "VIEW" => Some(Self::View),
9449            "VIEWS" => Some(Self::Views),
9450            "VIRTUAL" => Some(Self::Virtual),
9451            "VOLATILE" => Some(Self::Volatile),
9452            "WHEN" => Some(Self::When),
9453            "WHERE" => Some(Self::Where),
9454            "WHITESPACE_P" => Some(Self::WhitespaceP),
9455            "WINDOW" => Some(Self::Window),
9456            "WITH" => Some(Self::With),
9457            "WITHIN" => Some(Self::Within),
9458            "WITHOUT" => Some(Self::Without),
9459            "WORK" => Some(Self::Work),
9460            "WRAPPER" => Some(Self::Wrapper),
9461            "WRITE" => Some(Self::Write),
9462            "XML_P" => Some(Self::XmlP),
9463            "XMLATTRIBUTES" => Some(Self::Xmlattributes),
9464            "XMLCONCAT" => Some(Self::Xmlconcat),
9465            "XMLELEMENT" => Some(Self::Xmlelement),
9466            "XMLEXISTS" => Some(Self::Xmlexists),
9467            "XMLFOREST" => Some(Self::Xmlforest),
9468            "XMLNAMESPACES" => Some(Self::Xmlnamespaces),
9469            "XMLPARSE" => Some(Self::Xmlparse),
9470            "XMLPI" => Some(Self::Xmlpi),
9471            "XMLROOT" => Some(Self::Xmlroot),
9472            "XMLSERIALIZE" => Some(Self::Xmlserialize),
9473            "XMLTABLE" => Some(Self::Xmltable),
9474            "YEAR_P" => Some(Self::YearP),
9475            "YES_P" => Some(Self::YesP),
9476            "ZONE" => Some(Self::Zone),
9477            "FORMAT_LA" => Some(Self::FormatLa),
9478            "NOT_LA" => Some(Self::NotLa),
9479            "NULLS_LA" => Some(Self::NullsLa),
9480            "WITH_LA" => Some(Self::WithLa),
9481            "WITHOUT_LA" => Some(Self::WithoutLa),
9482            "MODE_TYPE_NAME" => Some(Self::ModeTypeName),
9483            "MODE_PLPGSQL_EXPR" => Some(Self::ModePlpgsqlExpr),
9484            "MODE_PLPGSQL_ASSIGN1" => Some(Self::ModePlpgsqlAssign1),
9485            "MODE_PLPGSQL_ASSIGN2" => Some(Self::ModePlpgsqlAssign2),
9486            "MODE_PLPGSQL_ASSIGN3" => Some(Self::ModePlpgsqlAssign3),
9487            "UMINUS" => Some(Self::Uminus),
9488            _ => None,
9489        }
9490    }
9491}