Skip to content

Conversation

@lemonadern
Copy link
Collaborator

@lemonadern lemonadern commented Apr 25, 2025

Summary

  1. set_clause_list をフラット化しました
  2. set_target_list をフラット化しました

1. set_clause_list

set_clause_list は、UPDATE 文における SET キーワード以降の部分(c1 = 1, c2 = 2, c3 = 3)にあたり、カラムに値を指定する箇所です。

UPDATE t SET c1 = 1, c2 = 2, c3 = 3 WHERE a=1;
set_clause_list:
			set_clause							{ $$ = $1; }
			| set_clause_list ',' set_clause	{ $$ = list_concat($1,$3); }
		;

https://github.com/postgres/postgres/blob/6389db23209a3a9b99759b26fbd26a9da5693116/src/backend/parser/gram.y#L12514-L12517

2. set_target_list

set_target_list は、UPDATE 文の SET 句において複数カラムへの同時代入をする際に利用される構文です。

UPDATE t SET (c1, c2, c3) = (1, 2, 3) WHERE a=1;
set_target_list:
			set_target								{ $$ = list_make1($1); }
			| set_target_list ',' set_target		{ $$ = lappend($1,$3); }
		;

https://github.com/postgres/postgres/blob/6389db23209a3a9b99759b26fbd26a9da5693116/src/backend/parser/gram.y#L12559-L12562

@lemonadern lemonadern changed the title flatten set_clause_list flatten set_clause_list and set_target_list Apr 25, 2025
@lemonadern lemonadern requested a review from tanzaku April 25, 2025 08:13
@lemonadern lemonadern marked this pull request as ready for review April 25, 2025 08:13
@tanzaku tanzaku merged commit 92b440c into main Apr 25, 2025
@lemonadern lemonadern deleted the tree-sitter--flatten-set-clause-list branch May 14, 2025 06:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants