Skip to content

Commit 88147d2

Browse files
committed
progress
1 parent d584263 commit 88147d2

34 files changed

+1175
-379
lines changed

agentic/pretty_printer.md

Lines changed: 125 additions & 153 deletions
Large diffs are not rendered by default.

agentic/session_log.md

Lines changed: 283 additions & 0 deletions
Large diffs are not rendered by default.

crates/pgt_pretty_print/src/nodes/a_expr.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,6 @@ fn emit_aexpr_in(e: &mut EventEmitter, n: &AExpr) {
226226
e.token(TokenKind::L_PAREN);
227227
super::emit_node(rexpr, e);
228228
e.token(TokenKind::R_PAREN);
229-
return;
230229
}
231230
}
232231
}
@@ -319,7 +318,7 @@ fn emit_aexpr_between(e: &mut EventEmitter, n: &AExpr) {
319318
// rexpr is a List node with two elements, but we need "expr AND expr" not "expr, expr"
320319
if let Some(ref rexpr) = n.rexpr {
321320
if let Some(pgt_query::NodeEnum::List(list)) = rexpr.node.as_ref() {
322-
if list.items.len() >= 1 {
321+
if !list.items.is_empty() {
323322
super::emit_node(&list.items[0], e);
324323
}
325324
if list.items.len() >= 2 {
@@ -349,7 +348,7 @@ fn emit_aexpr_not_between(e: &mut EventEmitter, n: &AExpr) {
349348
// rexpr is a List node with two elements, but we need "expr AND expr" not "expr, expr"
350349
if let Some(ref rexpr) = n.rexpr {
351350
if let Some(pgt_query::NodeEnum::List(list)) = rexpr.node.as_ref() {
352-
if list.items.len() >= 1 {
351+
if !list.items.is_empty() {
353352
super::emit_node(&list.items[0], e);
354353
}
355354
if list.items.len() >= 2 {
@@ -379,7 +378,7 @@ fn emit_aexpr_between_sym(e: &mut EventEmitter, n: &AExpr) {
379378
// rexpr is a List node with two elements, but we need "expr AND expr" not "expr, expr"
380379
if let Some(ref rexpr) = n.rexpr {
381380
if let Some(pgt_query::NodeEnum::List(list)) = rexpr.node.as_ref() {
382-
if list.items.len() >= 1 {
381+
if !list.items.is_empty() {
383382
super::emit_node(&list.items[0], e);
384383
}
385384
if list.items.len() >= 2 {
@@ -411,7 +410,7 @@ fn emit_aexpr_not_between_sym(e: &mut EventEmitter, n: &AExpr) {
411410
// rexpr is a List node with two elements, but we need "expr AND expr" not "expr, expr"
412411
if let Some(ref rexpr) = n.rexpr {
413412
if let Some(pgt_query::NodeEnum::List(list)) = rexpr.node.as_ref() {
414-
if list.items.len() >= 1 {
413+
if !list.items.is_empty() {
415414
super::emit_node(&list.items[0], e);
416415
}
417416
if list.items.len() >= 2 {
@@ -459,7 +458,7 @@ fn emit_simple_operator(e: &mut EventEmitter, op: &str) {
459458
e.token(TokenKind::IDENT(op.to_string()));
460459
}
461460

462-
fn extract_simple_operator<'a>(name: &'a [Node]) -> Option<&'a str> {
461+
fn extract_simple_operator(name: &[Node]) -> Option<&str> {
463462
if name.len() != 1 {
464463
return None;
465464
}

crates/pgt_pretty_print/src/nodes/common_table_expr.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use pgt_query::protobuf::CommonTableExpr;
1+
use pgt_query::protobuf::{CommonTableExpr, CteMaterialize};
22

33
use crate::TokenKind;
44
use crate::emitter::{EventEmitter, GroupKind};
@@ -26,21 +26,19 @@ pub(super) fn emit_common_table_expr(e: &mut EventEmitter, n: &CommonTableExpr)
2626
e.space();
2727

2828
// Materialization hint (PostgreSQL 12+)
29-
match n.ctematerialized {
30-
1 => {
31-
// CTEMaterializeAlways
29+
match n.ctematerialized() {
30+
CteMaterialize::Always => {
3231
e.token(TokenKind::IDENT("MATERIALIZED".to_string()));
3332
e.space();
3433
}
35-
2 => {
36-
// CTEMaterializeNever
34+
CteMaterialize::Never => {
3735
e.token(TokenKind::NOT_KW);
3836
e.space();
3937
e.token(TokenKind::IDENT("MATERIALIZED".to_string()));
4038
e.space();
4139
}
42-
_ => {
43-
// CTEMaterializeDefault or Undefined - no hint
40+
CteMaterialize::Default | CteMaterialize::CtematerializeUndefined => {
41+
// CTEMaterializeDefault/Undefined: omit hint to preserve planner choice
4442
}
4543
}
4644

0 commit comments

Comments
 (0)