Skip to content

Commit 010d53d

Browse files
authored
Merge pull request #71 from cvng/use-object-type
2 parents e3c9c72 + 58fec8b commit 010d53d

File tree

2 files changed

+62
-133
lines changed

2 files changed

+62
-133
lines changed

crates/codegen/src/get_node_properties.rs

Lines changed: 61 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -183,33 +183,22 @@ fn custom_handlers(node: &Node) -> TokenStream {
183183
}
184184
},
185185
"BoolExpr" => quote! {
186-
match n.boolop {
187-
// AndExpr = 1
188-
1 => tokens.push(TokenProperty::from(Token::And)),
189-
// OrExpr = 2
190-
2 => tokens.push(TokenProperty::from(Token::Or)),
191-
// NotExpr = 3
192-
3 => tokens.push(TokenProperty::from(Token::Not)),
193-
_ => panic!("Unknown BoolExpr {:#?}", n.boolop),
186+
match n.boolop() {
187+
protobuf::BoolExprType::AndExpr => tokens.push(TokenProperty::from(Token::And)),
188+
protobuf::BoolExprType::OrExpr => tokens.push(TokenProperty::from(Token::Or)),
189+
protobuf::BoolExprType::NotExpr => tokens.push(TokenProperty::from(Token::Not)),
190+
_ => panic!("Unknown BoolExpr {:#?}", n.boolop()),
194191
}
195192
},
196193
"JoinExpr" => quote! {
197194
tokens.push(TokenProperty::from(Token::Join));
198195
tokens.push(TokenProperty::from(Token::On));
199-
match n.jointype {
200-
// JoinInner = 1
201-
1 => tokens.push(TokenProperty::from(Token::InnerP)),
202-
// JoinLeft = 2
203-
2 => tokens.push(TokenProperty::from(Token::Left)),
204-
// JoinFull = 3
205-
3 => tokens.push(TokenProperty::from(Token::Full)),
206-
// JoinRight = 4
207-
4 => tokens.push(TokenProperty::from(Token::Right)),
208-
// JoinSemi = 5
209-
// JoinAnti = 6
210-
// JoinUniqueOuter = 7
211-
// JoinUniqueInner = 8
212-
_ => panic!("Unknown JoinExpr jointype {:#?}", n.jointype),
196+
match n.jointype() {
197+
protobuf::JoinType::JoinInner => tokens.push(TokenProperty::from(Token::InnerP)),
198+
protobuf::JoinType::JoinLeft => tokens.push(TokenProperty::from(Token::Left)),
199+
protobuf::JoinType::JoinFull => tokens.push(TokenProperty::from(Token::Full)),
200+
protobuf::JoinType::JoinRight => tokens.push(TokenProperty::from(Token::Right)),
201+
_ => panic!("Unknown JoinExpr jointype {:#?}", n.jointype()),
213202
}
214203

215204
},
@@ -222,9 +211,9 @@ fn custom_handlers(node: &Node) -> TokenStream {
222211
tokens.push(TokenProperty::from(n));
223212
},
224213
"DefElem" => quote! {
225-
match n.defaction {
226-
1 => tokens.push(TokenProperty::from(Token::Ascii61)),
227-
_ => panic!("Unknown DefElem {:#?}", n.defaction),
214+
match n.defaction() {
215+
protobuf::DefElemAction::DefelemUnspec => tokens.push(TokenProperty::from(Token::Ascii61)),
216+
_ => panic!("Unknown DefElem {:#?}", n.defaction()),
228217
}
229218
},
230219
"Alias" => quote! {
@@ -234,27 +223,11 @@ fn custom_handlers(node: &Node) -> TokenStream {
234223
tokens.push(TokenProperty::from(Token::Collate));
235224
},
236225
"AExpr" => quote! {
237-
match n.kind {
238-
// AexprOp = 1,
239-
1 => {
240-
// do nothing
241-
},
242-
// AexprOpAny = 2,
243-
2 => tokens.push(TokenProperty::from(Token::Any)),
244-
// AexprOpAll = 3,
245-
// AexprDistinct = 4,
246-
// AexprNotDistinct = 5,
247-
// AexprNullif = 6,
248-
// AexprIn = 7,
249-
7 => tokens.push(TokenProperty::from(Token::InP)),
250-
// AexprLike = 8,
251-
// AexprIlike = 9,
252-
// AexprSimilar = 10,
253-
// AexprBetween = 11,
254-
// AexprNotBetween = 12,
255-
// AexprBetweenSym = 13,
256-
// AexprNotBetweenSym = 14,
257-
_ => panic!("Unknown AExpr kind {:#?}", n.kind),
226+
match n.kind() {
227+
protobuf::AExprKind::AexprOp => {}, // do nothing
228+
protobuf::AExprKind::AexprOpAny => tokens.push(TokenProperty::from(Token::Any)),
229+
protobuf::AExprKind::AexprIn => tokens.push(TokenProperty::from(Token::InP)),
230+
_ => panic!("Unknown AExpr kind {:#?}", n.kind()),
258231
}
259232
},
260233
"WindowDef" => quote! {
@@ -293,33 +266,18 @@ fn custom_handlers(node: &Node) -> TokenStream {
293266
}
294267
},
295268
"SqlvalueFunction" => quote! {
296-
match n.op {
297-
// 1 SvfopCurrentDate
298-
// 2 SvfopCurrentTime
299-
// 3 SvfopCurrentTimeN
300-
// 4 SvfopCurrentTimestamp
301-
// 5 SvfopCurrentTimestampN
302-
// 6 SvfopLocaltime
303-
// 7 SvfopLocaltimeN
304-
// 8 SvfopLocaltimestamp
305-
// 9 SvfopLocaltimestampN
306-
// 10 SvfopCurrentRole
307-
10 => tokens.push(TokenProperty::from(Token::CurrentRole)),
308-
// 11 SvfopCurrentUser
309-
11 => tokens.push(TokenProperty::from(Token::CurrentUser)),
310-
// 12 SvfopUser
311-
// 13 SvfopSessionUser
312-
// 14 SvfopCurrentCatalog
313-
// 15 SvfopCurrentSchema
314-
_ => panic!("Unknown SqlvalueFunction {:#?}", n.op),
269+
match n.op() {
270+
protobuf::SqlValueFunctionOp::SvfopCurrentRole => tokens.push(TokenProperty::from(Token::CurrentRole)),
271+
protobuf::SqlValueFunctionOp::SvfopCurrentUser => tokens.push(TokenProperty::from(Token::CurrentUser)),
272+
_ => panic!("Unknown SqlvalueFunction {:#?}", n.op()),
315273
}
316274
},
317275
"SortBy" => quote! {
318276
tokens.push(TokenProperty::from(Token::Order));
319277
tokens.push(TokenProperty::from(Token::By));
320-
match n.sortby_dir {
321-
2 => tokens.push(TokenProperty::from(Token::Asc)),
322-
3 => tokens.push(TokenProperty::from(Token::Desc)),
278+
match n.sortby_dir() {
279+
protobuf::SortByDir::SortbyAsc => tokens.push(TokenProperty::from(Token::Asc)),
280+
protobuf::SortByDir::SortbyDesc => tokens.push(TokenProperty::from(Token::Desc)),
323281
_ => {}
324282
}
325283
},
@@ -334,35 +292,26 @@ fn custom_handlers(node: &Node) -> TokenStream {
334292
},
335293
"AlterTableCmd" => quote! {
336294
tokens.push(TokenProperty::from(Token::Alter));
337-
match n.subtype {
338-
4 => {
295+
match n.subtype() {
296+
protobuf::AlterTableType::AtColumnDefault => {
339297
tokens.push(TokenProperty::from(Token::Column));
340298
tokens.push(TokenProperty::from(Token::Set));
341299
tokens.push(TokenProperty::from(Token::Default));
342300
},
343-
// AtAddConstraint
344-
19 => tokens.push(TokenProperty::from(Token::AddP)),
345-
// AtAlterColumnType
346-
30 => {
301+
protobuf::AlterTableType::AtAddConstraint => tokens.push(TokenProperty::from(Token::AddP)),
302+
protobuf::AlterTableType::AtAlterColumnType => {
347303
tokens.push(TokenProperty::from(Token::Alter));
348304
tokens.push(TokenProperty::from(Token::Column));
349305
tokens.push(TokenProperty::from(Token::TypeP));
350306
},
351-
_ => panic!("Unknown AlterTableCmd {:#?}", n.subtype),
307+
_ => panic!("Unknown AlterTableCmd {:#?}", n.subtype()),
352308
}
353309
},
354310
"VariableSetStmt" => quote! {
355311
tokens.push(TokenProperty::from(Token::Set));
356-
match n.kind {
357-
// Undefined = 0,
358-
// VarSetValue = 1,
359-
1 => tokens.push(TokenProperty::from(Token::To)),
360-
// VarSetDefault = 2,
361-
// VarSetCurrent = 3,
362-
// VarSetMulti = 4,
363-
// VarReset = 5,
364-
// VarResetAll = 6,
365-
_ => panic!("Unknown VariableSetStmt {:#?}", n.kind),
312+
match n.kind() {
313+
protobuf::VariableSetKind::VarSetValue => tokens.push(TokenProperty::from(Token::To)),
314+
_ => panic!("Unknown VariableSetStmt {:#?}", n.kind()),
366315
}
367316
},
368317
"CreatePolicyStmt" => quote! {
@@ -391,24 +340,19 @@ fn custom_handlers(node: &Node) -> TokenStream {
391340
tokens.push(TokenProperty::from(Token::To));
392341
},
393342
"Constraint" => quote! {
394-
match n.contype {
395-
// ConstrNotnull
396-
2 => {
343+
match n.contype() {
344+
protobuf::ConstrType::ConstrNotnull => {
397345
tokens.push(TokenProperty::from(Token::Not));
398346
tokens.push(TokenProperty::from(Token::NullP));
399347
},
400-
// ConstrDefault
401-
3 => tokens.push(TokenProperty::from(Token::Default)),
402-
// ConstrCheck
403-
6 => tokens.push(TokenProperty::from(Token::Check)),
404-
// ConstrPrimary
405-
7 => {
348+
protobuf::ConstrType::ConstrDefault => tokens.push(TokenProperty::from(Token::Default)),
349+
protobuf::ConstrType::ConstrCheck => tokens.push(TokenProperty::from(Token::Check)),
350+
protobuf::ConstrType::ConstrPrimary => {
406351
tokens.push(TokenProperty::from(Token::Primary));
407352
tokens.push(TokenProperty::from(Token::Key));
408353
},
409-
// ConstrForeign
410-
10 => tokens.push(TokenProperty::from(Token::References)),
411-
_ => panic!("Unknown Constraint {:#?}", n.contype),
354+
protobuf::ConstrType::ConstrForeign => tokens.push(TokenProperty::from(Token::References)),
355+
_ => panic!("Unknown Constraint {:#?}", n.contype()),
412356
}
413357
},
414358
"PartitionSpec" => quote! {
@@ -447,7 +391,7 @@ fn custom_handlers(node: &Node) -> TokenStream {
447391
"u" => tokens.push(TokenProperty::from(Token::Unlogged)),
448392
// Temporary
449393
"t" => tokens.push(TokenProperty::from(Token::Temporary)),
450-
_ => panic!("Unknown ViewStmt {:#?}", n),
394+
_ => panic!("Unknown ViewStmt {:#?}", n.relpersistence),
451395
}
452396
}
453397
},
@@ -484,15 +428,13 @@ fn custom_handlers(node: &Node) -> TokenStream {
484428
}
485429
},
486430
"NullTest" => quote! {
487-
match n.nulltesttype {
488-
// IsNull
489-
1 => tokens.push(TokenProperty::from(Token::Is)),
490-
// IsNotNull
491-
2 => {
431+
match n.nulltesttype() {
432+
protobuf::NullTestType::IsNull => tokens.push(TokenProperty::from(Token::Is)),
433+
protobuf::NullTestType::IsNotNull => {
492434
tokens.push(TokenProperty::from(Token::Is));
493435
tokens.push(TokenProperty::from(Token::Not));
494436
},
495-
_ => panic!("Unknown NullTest {:#?}", n.nulltesttype),
437+
_ => panic!("Unknown NullTest {:#?}", n.nulltesttype()),
496438
}
497439
tokens.push(TokenProperty::from(Token::NullP));
498440
},
@@ -508,22 +450,14 @@ fn custom_handlers(node: &Node) -> TokenStream {
508450
}
509451
},
510452
"FunctionParameter" => quote! {
511-
match n.mode {
512-
// FuncParamIn = 1,
513-
1 => tokens.push(TokenProperty::from(Token::InP)),
514-
// FuncParamOut = 2,
515-
2 => tokens.push(TokenProperty::from(Token::OutP)),
516-
// FuncParamInout = 3,
517-
3 => tokens.push(TokenProperty::from(Token::Inout)),
518-
// FuncParamVariadic = 4,
519-
4 => tokens.push(TokenProperty::from(Token::Variadic)),
520-
// FuncParamTable = 5,
521-
// 5 => tokens.push(TokenProperty::from(Token::Table)),
522-
// FuncParamDefault = 6,
523-
6 => {
524-
// do nothing
525-
},
526-
_ => panic!("Unknown FunctionParameter {:#?}", n.mode),
453+
match n.mode() {
454+
protobuf::FunctionParameterMode::FuncParamIn => tokens.push(TokenProperty::from(Token::InP)),
455+
protobuf::FunctionParameterMode::FuncParamOut => tokens.push(TokenProperty::from(Token::OutP)),
456+
protobuf::FunctionParameterMode::FuncParamInout => tokens.push(TokenProperty::from(Token::Inout)),
457+
protobuf::FunctionParameterMode::FuncParamVariadic => tokens.push(TokenProperty::from(Token::Variadic)),
458+
// protobuf::FunctionParameterMode::FuncParamTable => tokens.push(TokenProperty::from(Token::Table)),
459+
protobuf::FunctionParameterMode::FuncParamDefault => {}, // do nothing
460+
_ => panic!("Unknown FunctionParameter {:#?}", n.mode()),
527461
};
528462
if n.defexpr.is_some() {
529463
tokens.push(TokenProperty::from(Token::Default));
@@ -572,30 +506,25 @@ fn custom_handlers(node: &Node) -> TokenStream {
572506
if n.inout {
573507
tokens.push(TokenProperty::from(Token::With));
574508
tokens.push(TokenProperty::from(Token::Inout));
575-
}
576-
else if n.func.is_some() {
509+
} else if n.func.is_some() {
577510
tokens.push(TokenProperty::from(Token::With));
578511
tokens.push(TokenProperty::from(Token::Function));
579512
} else {
580513
tokens.push(TokenProperty::from(Token::Without));
581514
tokens.push(TokenProperty::from(Token::Function));
582515
}
583-
match n.context {
584-
// Implicit
585-
1 => {
516+
match n.context() {
517+
protobuf::CoercionContext::CoercionImplicit => {
586518
tokens.push(TokenProperty::from(Token::As));
587519
tokens.push(TokenProperty::from(Token::ImplicitP));
588520
},
589-
// Assignment
590-
2 => {
521+
protobuf::CoercionContext::CoercionAssignment => {
591522
tokens.push(TokenProperty::from(Token::As));
592523
tokens.push(TokenProperty::from(Token::Assignment));
593524
},
594-
// Plpgsql
595-
3 => {},
596-
// Explicit
597-
4 => {},
598-
_ => panic!("Unknown CreateCastStmt {:#?}", n.context)
525+
protobuf::CoercionContext::CoercionPlpgsql => {},
526+
protobuf::CoercionContext::CoercionExplicit => {},
527+
_ => panic!("Unknown CreateCastStmt {:#?}", n.context())
599528
}
600529
},
601530
_ => quote! {},

crates/codegen/src/parser.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub fn parser_mod(_item: proc_macro2::TokenStream) -> proc_macro2::TokenStream {
1919
quote! {
2020
use std::collections::VecDeque;
2121
use log::{debug};
22-
use pg_query::{protobuf::ScanToken, protobuf::Token, NodeEnum, protobuf::SortByDir, NodeRef};
22+
use pg_query::{protobuf, protobuf::ScanToken, protobuf::Token, NodeEnum, NodeRef};
2323
use cstree::text::{TextRange, TextSize};
2424
use cstree::Syntax;
2525
use std::cmp::{min, Ordering};

0 commit comments

Comments
 (0)