Skip to content

Commit 4b92d70

Browse files
Copilotgit-hulk
andauthored
Add beautify format support for CREATE USER statements (#247)
--------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: git-hulk <4987594+git-hulk@users.noreply.github.com>
1 parent 033e873 commit 4b92d70

2 files changed

Lines changed: 85 additions & 38 deletions

File tree

parser/format.go

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,11 +1009,11 @@ func (c *CreateUser) FormatSQL(formatter *Formatter) {
10091009
formatter.WriteExpr(userName)
10101010
}
10111011
if c.Authentication != nil {
1012-
formatter.WriteByte(whitespace)
1012+
formatter.Break()
10131013
formatter.WriteExpr(c.Authentication)
10141014
}
10151015
if len(c.Hosts) > 0 {
1016-
formatter.WriteByte(whitespace)
1016+
formatter.Break()
10171017
for i, host := range c.Hosts {
10181018
if i > 0 {
10191019
formatter.WriteString(", ")
@@ -1022,27 +1022,33 @@ func (c *CreateUser) FormatSQL(formatter *Formatter) {
10221022
}
10231023
}
10241024
if c.DefaultRole != nil {
1025-
formatter.WriteByte(whitespace)
1025+
formatter.Break()
10261026
formatter.WriteExpr(c.DefaultRole)
10271027
}
10281028
if c.DefaultDatabase != nil {
1029-
formatter.WriteString(" DEFAULT DATABASE ")
1029+
formatter.Break()
1030+
formatter.WriteString("DEFAULT DATABASE ")
10301031
formatter.WriteExpr(c.DefaultDatabase)
10311032
} else if c.DefaultDbNone {
1032-
formatter.WriteString(" DEFAULT DATABASE NONE")
1033+
formatter.Break()
1034+
formatter.WriteString("DEFAULT DATABASE NONE")
10331035
}
10341036
if c.Grantees != nil {
1035-
formatter.WriteByte(whitespace)
1037+
formatter.Break()
10361038
formatter.WriteExpr(c.Grantees)
10371039
}
10381040
if len(c.Settings) > 0 {
1039-
formatter.WriteString(" SETTINGS ")
1041+
formatter.Break()
1042+
formatter.WriteString("SETTINGS")
1043+
formatter.Indent()
10401044
for i, setting := range c.Settings {
1041-
if i > 0 {
1042-
formatter.WriteString(", ")
1043-
}
1045+
formatter.Break()
10441046
formatter.WriteExpr(setting)
1047+
if i < len(c.Settings)-1 {
1048+
formatter.WriteString(",")
1049+
}
10451050
}
1051+
formatter.Dedent()
10461052
}
10471053
}
10481054

@@ -1499,7 +1505,8 @@ func (g *GranteesClause) FormatSQL(formatter *Formatter) {
14991505
}
15001506
}
15011507
if len(g.ExceptUsers) > 0 {
1502-
formatter.WriteString(" EXCEPT ")
1508+
formatter.Break()
1509+
formatter.WriteString("EXCEPT ")
15031510
for i, except := range g.ExceptUsers {
15041511
if i > 0 {
15051512
formatter.WriteString(", ")

parser/testdata/ddl/format/beautify/create_user.sql

Lines changed: 67 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -58,30 +58,70 @@ CREATE USER user1;
5858
CREATE USER IF NOT EXISTS user2;
5959
CREATE USER OR REPLACE user3;
6060
CREATE USER user4, user5;
61-
CREATE USER user6 NOT IDENTIFIED;
62-
CREATE USER user7 IDENTIFIED WITH plaintext_password BY 'password123';
63-
CREATE USER user8 IDENTIFIED WITH sha256_password BY 'hash123';
64-
CREATE USER user9 IDENTIFIED WITH ldap SERVER 'ldap_server';
65-
CREATE USER user10 IDENTIFIED WITH kerberos;
66-
CREATE USER user11 IDENTIFIED WITH kerberos REALM 'EXAMPLE.COM';
67-
CREATE USER user12 HOST LOCAL;
68-
CREATE USER user13 HOST ANY;
69-
CREATE USER user14 HOST NONE;
70-
CREATE USER user15 HOST NAME 'localhost';
71-
CREATE USER user16 HOST REGEXP '.*\.example\.com';
72-
CREATE USER user17 HOST IP '192.168.1.1';
73-
CREATE USER user18 HOST LIKE 'test%';
74-
CREATE USER user19 DEFAULT ROLE role1;
75-
CREATE USER user20 DEFAULT ROLE role1, role2;
76-
CREATE USER user21 DEFAULT ROLE NONE;
77-
CREATE USER user22 DEFAULT DATABASE test_db;
78-
CREATE USER user23 DEFAULT DATABASE NONE;
79-
CREATE USER user24 GRANTEES user1;
80-
CREATE USER user25 GRANTEES user1, user2;
81-
CREATE USER user26 GRANTEES ANY;
82-
CREATE USER user27 GRANTEES NONE;
83-
CREATE USER user28 GRANTEES user1, user2 EXCEPT user3;
84-
CREATE USER user29 SETTINGS max_memory_usage=5000000;
85-
CREATE USER user30 SETTINGS PROFILE 'default';
86-
CREATE USER user31 SETTINGS readonly=1, max_memory_usage=5000000;
87-
CREATE USER user32 IDENTIFIED WITH plaintext_password BY 'password' HOST NAME 'localhost' DEFAULT ROLE role1, role2 DEFAULT DATABASE test_db GRANTEES user1, user2 EXCEPT user3 SETTINGS max_memory_usage=5000000, readonly=1;
61+
CREATE USER user6
62+
NOT IDENTIFIED;
63+
CREATE USER user7
64+
IDENTIFIED WITH plaintext_password BY 'password123';
65+
CREATE USER user8
66+
IDENTIFIED WITH sha256_password BY 'hash123';
67+
CREATE USER user9
68+
IDENTIFIED WITH ldap SERVER 'ldap_server';
69+
CREATE USER user10
70+
IDENTIFIED WITH kerberos;
71+
CREATE USER user11
72+
IDENTIFIED WITH kerberos REALM 'EXAMPLE.COM';
73+
CREATE USER user12
74+
HOST LOCAL;
75+
CREATE USER user13
76+
HOST ANY;
77+
CREATE USER user14
78+
HOST NONE;
79+
CREATE USER user15
80+
HOST NAME 'localhost';
81+
CREATE USER user16
82+
HOST REGEXP '.*\.example\.com';
83+
CREATE USER user17
84+
HOST IP '192.168.1.1';
85+
CREATE USER user18
86+
HOST LIKE 'test%';
87+
CREATE USER user19
88+
DEFAULT ROLE role1;
89+
CREATE USER user20
90+
DEFAULT ROLE role1, role2;
91+
CREATE USER user21
92+
DEFAULT ROLE NONE;
93+
CREATE USER user22
94+
DEFAULT DATABASE test_db;
95+
CREATE USER user23
96+
DEFAULT DATABASE NONE;
97+
CREATE USER user24
98+
GRANTEES user1;
99+
CREATE USER user25
100+
GRANTEES user1, user2;
101+
CREATE USER user26
102+
GRANTEES ANY;
103+
CREATE USER user27
104+
GRANTEES NONE;
105+
CREATE USER user28
106+
GRANTEES user1, user2
107+
EXCEPT user3;
108+
CREATE USER user29
109+
SETTINGS
110+
max_memory_usage=5000000;
111+
CREATE USER user30
112+
SETTINGS
113+
PROFILE 'default';
114+
CREATE USER user31
115+
SETTINGS
116+
readonly=1,
117+
max_memory_usage=5000000;
118+
CREATE USER user32
119+
IDENTIFIED WITH plaintext_password BY 'password'
120+
HOST NAME 'localhost'
121+
DEFAULT ROLE role1, role2
122+
DEFAULT DATABASE test_db
123+
GRANTEES user1, user2
124+
EXCEPT user3
125+
SETTINGS
126+
max_memory_usage=5000000,
127+
readonly=1;

0 commit comments

Comments
 (0)