From 278bbc4d556b005d67d25491e44005afa8b687fa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Feb 2026 09:06:25 +0000 Subject: [PATCH 1/3] Initial plan From bac14d299520f0a34b60949aecae3990a93a5776 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Feb 2026 09:11:51 +0000 Subject: [PATCH 2/3] Add beautify format support for ALTER ROLE statements Co-authored-by: git-hulk <4987594+git-hulk@users.noreply.github.com> --- parser/format.go | 12 ++-- .../ddl/format/beautify/alter_role.sql | 70 +++++++++++++++---- .../ddl/format/beautify/create_role.sql | 25 +++++-- 3 files changed, 82 insertions(+), 25 deletions(-) diff --git a/parser/format.go b/parser/format.go index 50cb7b3..ebc1227 100644 --- a/parser/format.go +++ b/parser/format.go @@ -197,13 +197,17 @@ func (a *AlterRole) FormatSQL(formatter *Formatter) { formatter.WriteExpr(roleRenamePair) } if len(a.Settings) > 0 { - formatter.WriteString(" SETTINGS ") + formatter.Break() + formatter.WriteString("SETTINGS") + formatter.Indent() for i, setting := range a.Settings { if i > 0 { - formatter.WriteString(", ") + formatter.WriteString(",") } + formatter.Break() formatter.WriteExpr(setting) } + formatter.Dedent() } } @@ -2192,13 +2196,13 @@ func (r *RoleRenamePair) FormatSQL(formatter *Formatter) { func (r *RoleSetting) FormatSQL(formatter *Formatter) { for i, settingPair := range r.SettingPairs { if i > 0 { - formatter.WriteByte(whitespace) + formatter.Break() } formatter.WriteExpr(settingPair) } if r.Modifier != nil { if len(r.SettingPairs) > 0 { - formatter.WriteByte(whitespace) + formatter.Break() } formatter.WriteExpr(r.Modifier) } diff --git a/parser/testdata/ddl/format/beautify/alter_role.sql b/parser/testdata/ddl/format/beautify/alter_role.sql index f6f25a2..f9fb67e 100644 --- a/parser/testdata/ddl/format/beautify/alter_role.sql +++ b/parser/testdata/ddl/format/beautify/alter_role.sql @@ -26,20 +26,62 @@ ALTER ROLE r2_01293@'%.myhost.com'; ALTER ROLE r1_01293; ALTER ROLE r1_01293 ON CLUSTER cluster_1 RENAME TO r2_01293; ALTER ROLE r1_01293 RENAME TO r2_01293, r3_01293 RENAME TO r4_01293; -ALTER ROLE r1_01293 SETTINGS NONE; -ALTER ROLE r2_01293 SETTINGS PROFILE 'default'; -ALTER ROLE r3_01293 SETTINGS max_memory_usage=5000000; -ALTER ROLE r4_01293 SETTINGS max_memory_usage MIN=5000000; -ALTER ROLE r5_01293 SETTINGS max_memory_usage MAX=5000000; -ALTER ROLE r6_01293 SETTINGS max_memory_usage CONST; -ALTER ROLE r7_01293 SETTINGS max_memory_usage WRITABLE; -ALTER ROLE r8_01293 SETTINGS max_memory_usage=5000000 MIN 4000000 MAX 6000000 CONST; -ALTER ROLE r9_01293 SETTINGS PROFILE 'default', max_memory_usage=5000000 WRITABLE; +ALTER ROLE r1_01293 +SETTINGS + NONE; +ALTER ROLE r2_01293 +SETTINGS + PROFILE 'default'; +ALTER ROLE r3_01293 +SETTINGS + max_memory_usage=5000000; +ALTER ROLE r4_01293 +SETTINGS + max_memory_usage + MIN=5000000; +ALTER ROLE r5_01293 +SETTINGS + max_memory_usage + MAX=5000000; +ALTER ROLE r6_01293 +SETTINGS + max_memory_usage + CONST; +ALTER ROLE r7_01293 +SETTINGS + max_memory_usage + WRITABLE; +ALTER ROLE r8_01293 +SETTINGS + max_memory_usage=5000000 + MIN 4000000 + MAX 6000000 + CONST; +ALTER ROLE r9_01293 +SETTINGS + PROFILE 'default', + max_memory_usage=5000000 + WRITABLE; ALTER ROLE r1_01293, r2_01293; -ALTER ROLE r1_01293 SETTINGS readonly=1; -ALTER ROLE r2_01293 SETTINGS PROFILE 'default'; -ALTER ROLE r3_01293 SETTINGS max_memory_usage=5000000 MIN 4000000 MAX 6000000 WRITABLE; -ALTER ROLE r4_01293 SETTINGS PROFILE 'default', max_memory_usage=5000000, readonly=1; -ALTER ROLE r5_01293 SETTINGS NONE; +ALTER ROLE r1_01293 +SETTINGS + readonly=1; +ALTER ROLE r2_01293 +SETTINGS + PROFILE 'default'; +ALTER ROLE r3_01293 +SETTINGS + max_memory_usage=5000000 + MIN 4000000 + MAX 6000000 + WRITABLE; +ALTER ROLE r4_01293 +SETTINGS + PROFILE 'default', + max_memory_usage=5000000, + readonly=1; +ALTER ROLE r5_01293 +SETTINGS + NONE; ALTER ROLE r1_01293@'%'; ALTER ROLE r2_01293@'%.myhost.com'; diff --git a/parser/testdata/ddl/format/beautify/create_role.sql b/parser/testdata/ddl/format/beautify/create_role.sql index fec03df..43e3c08 100644 --- a/parser/testdata/ddl/format/beautify/create_role.sql +++ b/parser/testdata/ddl/format/beautify/create_role.sql @@ -33,16 +33,27 @@ CREATE ROLE r1_01293 ON CLUSTER cluster_1, r2_01293 ON CLUSTER cluster_2; CREATE ROLE r1_01293 SETTINGS NONE; CREATE ROLE r2_01293 SETTINGS PROFILE 'default'; CREATE ROLE r3_01293 SETTINGS max_memory_usage=5000000; -CREATE ROLE r4_01293 SETTINGS max_memory_usage MIN=5000000; -CREATE ROLE r5_01293 SETTINGS max_memory_usage MAX=5000000; -CREATE ROLE r6_01293 SETTINGS max_memory_usage CONST; -CREATE ROLE r7_01293 SETTINGS max_memory_usage WRITABLE; -CREATE ROLE r8_01293 SETTINGS max_memory_usage=5000000 MIN 4000000 MAX 6000000 CONST; -CREATE ROLE r9_01293 SETTINGS PROFILE 'default', max_memory_usage=5000000 WRITABLE; +CREATE ROLE r4_01293 SETTINGS max_memory_usage +MIN=5000000; +CREATE ROLE r5_01293 SETTINGS max_memory_usage +MAX=5000000; +CREATE ROLE r6_01293 SETTINGS max_memory_usage +CONST; +CREATE ROLE r7_01293 SETTINGS max_memory_usage +WRITABLE; +CREATE ROLE r8_01293 SETTINGS max_memory_usage=5000000 +MIN 4000000 +MAX 6000000 +CONST; +CREATE ROLE r9_01293 SETTINGS PROFILE 'default', max_memory_usage=5000000 +WRITABLE; CREATE ROLE r1_01293, r2_01293; CREATE ROLE r1_01293 SETTINGS readonly=1; CREATE ROLE r2_01293 SETTINGS PROFILE 'default'; -CREATE ROLE r3_01293 SETTINGS max_memory_usage=5000000 MIN 4000000 MAX 6000000 WRITABLE; +CREATE ROLE r3_01293 SETTINGS max_memory_usage=5000000 +MIN 4000000 +MAX 6000000 +WRITABLE; CREATE ROLE r4_01293 SETTINGS PROFILE 'default', max_memory_usage=5000000, readonly=1; CREATE ROLE r5_01293 SETTINGS NONE; CREATE ROLE r1_01293@'%'; From ab5c7e1cd6650efc413d4010a5bca40306f9cb85 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Feb 2026 09:12:54 +0000 Subject: [PATCH 3/3] Add consistent beautify format for CREATE ROLE to match ALTER ROLE Co-authored-by: git-hulk <4987594+git-hulk@users.noreply.github.com> --- parser/format.go | 8 +- .../ddl/format/beautify/create_role.sql | 81 +++++++++++++------ 2 files changed, 62 insertions(+), 27 deletions(-) diff --git a/parser/format.go b/parser/format.go index ebc1227..a2946a3 100644 --- a/parser/format.go +++ b/parser/format.go @@ -990,13 +990,17 @@ func (c *CreateRole) FormatSQL(formatter *Formatter) { formatter.WriteExpr(c.AccessStorageType) } if len(c.Settings) > 0 { - formatter.WriteString(" SETTINGS ") + formatter.Break() + formatter.WriteString("SETTINGS") + formatter.Indent() for i, setting := range c.Settings { if i > 0 { - formatter.WriteString(", ") + formatter.WriteString(",") } + formatter.Break() formatter.WriteExpr(setting) } + formatter.Dedent() } } diff --git a/parser/testdata/ddl/format/beautify/create_role.sql b/parser/testdata/ddl/format/beautify/create_role.sql index 43e3c08..eb26195 100644 --- a/parser/testdata/ddl/format/beautify/create_role.sql +++ b/parser/testdata/ddl/format/beautify/create_role.sql @@ -30,31 +30,62 @@ CREATE ROLE r1_01293 ON CLUSTER cluster_1; CREATE ROLE r1_01293, r2_01293; CREATE ROLE r1_01293 ON CLUSTER cluster_1, r2_01293; CREATE ROLE r1_01293 ON CLUSTER cluster_1, r2_01293 ON CLUSTER cluster_2; -CREATE ROLE r1_01293 SETTINGS NONE; -CREATE ROLE r2_01293 SETTINGS PROFILE 'default'; -CREATE ROLE r3_01293 SETTINGS max_memory_usage=5000000; -CREATE ROLE r4_01293 SETTINGS max_memory_usage -MIN=5000000; -CREATE ROLE r5_01293 SETTINGS max_memory_usage -MAX=5000000; -CREATE ROLE r6_01293 SETTINGS max_memory_usage -CONST; -CREATE ROLE r7_01293 SETTINGS max_memory_usage -WRITABLE; -CREATE ROLE r8_01293 SETTINGS max_memory_usage=5000000 -MIN 4000000 -MAX 6000000 -CONST; -CREATE ROLE r9_01293 SETTINGS PROFILE 'default', max_memory_usage=5000000 -WRITABLE; +CREATE ROLE r1_01293 +SETTINGS + NONE; +CREATE ROLE r2_01293 +SETTINGS + PROFILE 'default'; +CREATE ROLE r3_01293 +SETTINGS + max_memory_usage=5000000; +CREATE ROLE r4_01293 +SETTINGS + max_memory_usage + MIN=5000000; +CREATE ROLE r5_01293 +SETTINGS + max_memory_usage + MAX=5000000; +CREATE ROLE r6_01293 +SETTINGS + max_memory_usage + CONST; +CREATE ROLE r7_01293 +SETTINGS + max_memory_usage + WRITABLE; +CREATE ROLE r8_01293 +SETTINGS + max_memory_usage=5000000 + MIN 4000000 + MAX 6000000 + CONST; +CREATE ROLE r9_01293 +SETTINGS + PROFILE 'default', + max_memory_usage=5000000 + WRITABLE; CREATE ROLE r1_01293, r2_01293; -CREATE ROLE r1_01293 SETTINGS readonly=1; -CREATE ROLE r2_01293 SETTINGS PROFILE 'default'; -CREATE ROLE r3_01293 SETTINGS max_memory_usage=5000000 -MIN 4000000 -MAX 6000000 -WRITABLE; -CREATE ROLE r4_01293 SETTINGS PROFILE 'default', max_memory_usage=5000000, readonly=1; -CREATE ROLE r5_01293 SETTINGS NONE; +CREATE ROLE r1_01293 +SETTINGS + readonly=1; +CREATE ROLE r2_01293 +SETTINGS + PROFILE 'default'; +CREATE ROLE r3_01293 +SETTINGS + max_memory_usage=5000000 + MIN 4000000 + MAX 6000000 + WRITABLE; +CREATE ROLE r4_01293 +SETTINGS + PROFILE 'default', + max_memory_usage=5000000, + readonly=1; +CREATE ROLE r5_01293 +SETTINGS + NONE; CREATE ROLE r1_01293@'%'; CREATE ROLE r2_01293@'%.myhost.com';