Skip to content

Commit bb2c803

Browse files
authored
fix: add error prefix for detecting table, column name (#155)
2 parents 0af79f6 + bacc499 commit bb2c803

File tree

11 files changed

+78
-71
lines changed

11 files changed

+78
-71
lines changed

.golangci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ linters:
1313
- exhaustruct # https://github.com/GaijinEntertainment/go-exhaustruct
1414
- exhaustivestruct # https://github.com/mbilski/exhaustivestruct
1515
- gci # unnecessary
16+
- goconst # unnecessary
1617
- godox # unnecessary
1718
- golint # deprecated https://github.com/golang/lint
1819
- gomnd # https://github.com/tommy-muehle/go-mnd

exp/database/sql/ddl/cockroachdb/ddl_index_create.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ func (s *CreateIndexStmt) String() string {
3333
}
3434
str += "CREATE "
3535
if s.Unique {
36-
str += "UNIQUE " //nolint:goconst
36+
str += "UNIQUE "
3737
}
38-
str += "INDEX " //nolint:goconst
38+
str += "INDEX "
3939
if s.IfNotExists {
40-
str += "IF NOT EXISTS " //nolint:goconst
40+
str += "IF NOT EXISTS "
4141
}
4242
str += s.Name.String() + " ON " + s.TableName.String() + " (" + stringz.JoinStringers(", ", s.Columns...) + ");\n"
4343
return str
@@ -46,11 +46,11 @@ func (s *CreateIndexStmt) String() string {
4646
func (s *CreateIndexStmt) StringForDiff() string {
4747
str := "CREATE "
4848
if s.Unique {
49-
str += "UNIQUE " //nolint:goconst
49+
str += "UNIQUE "
5050
}
51-
str += "INDEX " //nolint:goconst
51+
str += "INDEX "
5252
if s.IfNotExists {
53-
str += "IF NOT EXISTS " //nolint:goconst
53+
str += "IF NOT EXISTS "
5454
}
5555
str += s.Name.StringForDiff() + " ON " + s.TableName.StringForDiff() + " ("
5656
for i, c := range s.Columns {

exp/database/sql/ddl/cockroachdb/ddl_index_drop.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func (s *DropIndexStmt) String() string {
2929
}
3030
str += "DROP INDEX "
3131
if s.IfExists {
32-
str += "IF EXISTS " //nolint:goconst
32+
str += "IF EXISTS "
3333
}
3434
str += s.Name.String() + ";\n"
3535
return str

exp/database/sql/ddl/cockroachdb/ddl_table.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func (c *PrimaryKeyConstraint) GoString() string { return internal.GoString(*c)
5454
func (c *PrimaryKeyConstraint) String() string {
5555
var str string
5656
if c.Name != nil {
57-
str += "CONSTRAINT " + c.Name.String() + " " //nolint:goconst
57+
str += "CONSTRAINT " + c.Name.String() + " "
5858
}
5959
str += "PRIMARY KEY"
6060
str += " (" + stringz.JoinStringers(", ", c.Columns...) + ")"
@@ -64,7 +64,7 @@ func (c *PrimaryKeyConstraint) String() string {
6464
func (c *PrimaryKeyConstraint) StringForDiff() string {
6565
var str string
6666
if c.Name != nil {
67-
str += "CONSTRAINT " + c.Name.StringForDiff() + " " //nolint:goconst
67+
str += "CONSTRAINT " + c.Name.StringForDiff() + " "
6868
}
6969
str += "PRIMARY KEY"
7070
str += " ("
@@ -188,7 +188,7 @@ func (c *CheckConstraint) String() string {
188188
if c.Name != nil {
189189
str += "CONSTRAINT " + c.Name.String() + " "
190190
}
191-
str += "CHECK" //nolint:goconst
191+
str += "CHECK"
192192
str += " (" + stringz.JoinStringers(" ", c.Expr...) + ")"
193193
return str
194194
}
@@ -310,7 +310,7 @@ func (d *Default) String() string {
310310
return ""
311311
}
312312
if d.Value != nil {
313-
return "DEFAULT " + d.Value.String() //nolint:goconst
313+
return "DEFAULT " + d.Value.String()
314314
}
315315
return ""
316316
}

exp/database/sql/ddl/cockroachdb/lexar.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ const (
7171

7272
// DATA TYPE.
7373
TOKEN_BOOL TokenType = "BOOL" //diff:ignore-line-postgres-cockroach
74-
TOKEN_INT2 TokenType = "INT2"
75-
TOKEN_INT4 TokenType = "INT4"
76-
TOKEN_INT8 TokenType = "INT8"
74+
TOKEN_INT2 TokenType = "INT2" //diff:ignore-line-postgres-cockroach
75+
TOKEN_INT4 TokenType = "INT4" //diff:ignore-line-postgres-cockroach
76+
TOKEN_INT8 TokenType = "INT8" //diff:ignore-line-postgres-cockroach
7777
TOKEN_DECIMAL TokenType = "DECIMAL"
7878
TOKEN_NUMERIC TokenType = "NUMERIC"
7979
TOKEN_REAL TokenType = "REAL"
@@ -164,12 +164,12 @@ func lookupIdent(ident string) TokenType {
164164
return TOKEN_TO
165165
case "BOOLEAN", "BOOL": //diff:ignore-line-postgres-cockroach
166166
return TOKEN_BOOL //diff:ignore-line-postgres-cockroach
167-
case "INT2", "SMALLINT":
168-
return TOKEN_INT2
169-
case "INT4", "INTEGER", "INT":
170-
return TOKEN_INT4
171-
case "INT8", "BIGINT":
172-
return TOKEN_INT8
167+
case "INT2", "SMALLINT": //diff:ignore-line-postgres-cockroach
168+
return TOKEN_INT2 //diff:ignore-line-postgres-cockroach
169+
case "INT4", "INTEGER", "INT": //diff:ignore-line-postgres-cockroach
170+
return TOKEN_INT4 //diff:ignore-line-postgres-cockroach
171+
case "INT8", "BIGINT": //diff:ignore-line-postgres-cockroach
172+
return TOKEN_INT8 //diff:ignore-line-postgres-cockroach
173173
case "DECIMAL":
174174
return TOKEN_DECIMAL
175175
case "NUMERIC":

exp/database/sql/ddl/cockroachdb/parser.go

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,12 @@ func (p *Parser) parseCreateTableStmt() (*CreateTableStmt, error) {
137137
}
138138

139139
createTableStmt.Name = NewObjectName(p.currentToken.Literal.Str)
140+
errFmtPrefix := fmt.Sprintf("table_name=%s: ", createTableStmt.Name.StringForDiff())
140141

141142
p.nextToken() // current = (
142143

143144
if err := p.checkCurrentToken(TOKEN_OPEN_PAREN); err != nil {
144-
return nil, errorz.Errorf("checkCurrentToken: %w", err)
145+
return nil, errorz.Errorf(errFmtPrefix+"checkCurrentToken: %w", err)
145146
}
146147

147148
p.nextToken() // current = column_name
@@ -152,7 +153,7 @@ LabelColumns:
152153
case p.currentToken.Type == TOKEN_IDENT:
153154
column, constraints, err := p.parseColumn(createTableStmt.Name.Name)
154155
if err != nil {
155-
return nil, errorz.Errorf("parseColumn: %w", err)
156+
return nil, errorz.Errorf(errFmtPrefix+"parseColumn: %w", err)
156157
}
157158
createTableStmt.Columns = append(createTableStmt.Columns, column)
158159
if len(constraints) > 0 {
@@ -163,7 +164,7 @@ LabelColumns:
163164
case isConstraint(p.currentToken.Type):
164165
constraint, err := p.parseTableConstraint(createTableStmt.Name.Name)
165166
if err != nil {
166-
return nil, errorz.Errorf("parseConstraint: %w", err)
167+
return nil, errorz.Errorf(errFmtPrefix+"parseConstraint: %w", err)
167168
}
168169
createTableStmt.Constraints = createTableStmt.Constraints.Append(constraint)
169170
case p.currentToken.Type == TOKEN_COMMA:
@@ -174,10 +175,10 @@ LabelColumns:
174175
case TOKEN_SEMICOLON, TOKEN_EOF:
175176
break LabelColumns
176177
default:
177-
return nil, errorz.Errorf("peekToken=%#v: %w", p.peekToken, ddl.ErrUnexpectedToken)
178+
return nil, errorz.Errorf(errFmtPrefix+"peekToken=%#v: %w", p.peekToken, ddl.ErrUnexpectedToken)
178179
}
179180
default:
180-
return nil, errorz.Errorf("currentToken=%#v: %w", p.currentToken, ddl.ErrUnexpectedToken)
181+
return nil, errorz.Errorf(errFmtPrefix+"currentToken=%#v: %w", p.currentToken, ddl.ErrUnexpectedToken)
181182
}
182183
}
183184

@@ -212,30 +213,31 @@ func (p *Parser) parseCreateIndexStmt() (*CreateIndexStmt, error) {
212213
}
213214

214215
createIndexStmt.Name = NewObjectName(p.currentToken.Literal.Str)
216+
errFmtPrefix := fmt.Sprintf("index_name=%s: ", createIndexStmt.Name.StringForDiff())
215217

216218
p.nextToken() // current = ON
217219

218220
if err := p.checkCurrentToken(TOKEN_ON); err != nil {
219-
return nil, errorz.Errorf("checkCurrentToken: %w", err)
221+
return nil, errorz.Errorf(errFmtPrefix+"checkCurrentToken: %w", err)
220222
}
221223

222224
p.nextToken() // current = table_name
223225

224226
if err := p.checkCurrentToken(TOKEN_IDENT); err != nil {
225-
return nil, errorz.Errorf("checkCurrentToken: %w", err)
227+
return nil, errorz.Errorf(errFmtPrefix+"checkCurrentToken: %w", err)
226228
}
227229

228230
createIndexStmt.TableName = NewObjectName(p.currentToken.Literal.Str)
229231

230232
p.nextToken() // current = (
231233

232234
if err := p.checkCurrentToken(TOKEN_OPEN_PAREN); err != nil {
233-
return nil, errorz.Errorf("checkCurrentToken: %w", err)
235+
return nil, errorz.Errorf(errFmtPrefix+"checkCurrentToken: %w", err)
234236
}
235237

236238
idents, err := p.parseColumnIdents()
237239
if err != nil {
238-
return nil, errorz.Errorf("parseColumnIdents: %w", err)
240+
return nil, errorz.Errorf(errFmtPrefix+"parseColumnIdents: %w", err)
239241
}
240242

241243
createIndexStmt.Columns = idents
@@ -253,14 +255,15 @@ func (p *Parser) parseColumn(tableName *Ident) (*Column, []Constraint, error) {
253255
}
254256

255257
column.Name = NewRawIdent(p.currentToken.Literal.Str)
258+
errFmtPrefix := fmt.Sprintf("column_name=%s: ", column.Name.StringForDiff())
256259

257260
p.nextToken() // current = DATA_TYPE
258261

259262
switch { //nolint:exhaustive
260263
case isDataType(p.currentToken.Type):
261264
dataType, err := p.parseDataType()
262265
if err != nil {
263-
return nil, nil, errorz.Errorf("parseDataType: %w", err)
266+
return nil, nil, errorz.Errorf(errFmtPrefix+"parseDataType: %w", err)
264267
}
265268
column.DataType = dataType
266269

@@ -270,7 +273,7 @@ func (p *Parser) parseColumn(tableName *Ident) (*Column, []Constraint, error) {
270273
switch p.currentToken.Type { //nolint:exhaustive
271274
case TOKEN_NOT:
272275
if err := p.checkPeekToken(TOKEN_NULL); err != nil {
273-
return nil, nil, errorz.Errorf("checkPeekToken: %w", err)
276+
return nil, nil, errorz.Errorf(errFmtPrefix+"checkPeekToken: %w", err)
274277
}
275278
p.nextToken() // current = NULL
276279
column.NotNull = true
@@ -280,7 +283,7 @@ func (p *Parser) parseColumn(tableName *Ident) (*Column, []Constraint, error) {
280283
p.nextToken() // current = DEFAULT
281284
def, err := p.parseColumnDefault()
282285
if err != nil {
283-
return nil, nil, errorz.Errorf("parseColumnDefault: %w", err)
286+
return nil, nil, errorz.Errorf(errFmtPrefix+"parseColumnDefault: %w", err)
284287
}
285288
column.Default = def
286289
continue
@@ -293,15 +296,15 @@ func (p *Parser) parseColumn(tableName *Ident) (*Column, []Constraint, error) {
293296

294297
cs, err := p.parseColumnConstraints(tableName, column)
295298
if err != nil {
296-
return nil, nil, errorz.Errorf("parseColumnConstraints: %w", err)
299+
return nil, nil, errorz.Errorf(errFmtPrefix+"parseColumnConstraints: %w", err)
297300
}
298301
if len(cs) > 0 {
299302
for _, c := range cs {
300303
constraints = constraints.Append(c)
301304
}
302305
}
303306
default:
304-
return nil, nil, errorz.Errorf("currentToken=%#v: %w", p.currentToken, ddl.ErrUnexpectedToken)
307+
return nil, nil, errorz.Errorf(errFmtPrefix+"currentToken=%#v: %w", p.currentToken, ddl.ErrUnexpectedToken)
305308
}
306309

307310
return column, constraints, nil
@@ -691,7 +694,7 @@ func isReservedValue(tokenType TokenType) bool {
691694
func isDataType(tokenType TokenType) bool {
692695
switch tokenType { //nolint:exhaustive
693696
case TOKEN_BOOL, //diff:ignore-line-postgres-cockroach
694-
TOKEN_INT2, TOKEN_INT4, TOKEN_INT8,
697+
TOKEN_INT2, TOKEN_INT4, TOKEN_INT8, //diff:ignore-line-postgres-cockroach
695698
TOKEN_DECIMAL, TOKEN_NUMERIC,
696699
TOKEN_REAL, TOKEN_DOUBLE, /* TOKEN_PRECISION, */
697700
TOKEN_SMALLSERIAL, TOKEN_SERIAL, TOKEN_BIGSERIAL,

exp/database/sql/ddl/postgres/ddl_index_create.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ func (s *CreateIndexStmt) String() string {
3333
}
3434
str += "CREATE "
3535
if s.Unique {
36-
str += "UNIQUE " //nolint:goconst
36+
str += "UNIQUE "
3737
}
38-
str += "INDEX " //nolint:goconst
38+
str += "INDEX "
3939
if s.IfNotExists {
40-
str += "IF NOT EXISTS " //nolint:goconst
40+
str += "IF NOT EXISTS "
4141
}
4242
str += s.Name.String() + " ON " + s.TableName.String() + " (" + stringz.JoinStringers(", ", s.Columns...) + ");\n"
4343
return str
@@ -46,11 +46,11 @@ func (s *CreateIndexStmt) String() string {
4646
func (s *CreateIndexStmt) StringForDiff() string {
4747
str := "CREATE "
4848
if s.Unique {
49-
str += "UNIQUE " //nolint:goconst
49+
str += "UNIQUE "
5050
}
51-
str += "INDEX " //nolint:goconst
51+
str += "INDEX "
5252
if s.IfNotExists {
53-
str += "IF NOT EXISTS " //nolint:goconst
53+
str += "IF NOT EXISTS "
5454
}
5555
str += s.Name.StringForDiff() + " ON " + s.TableName.StringForDiff() + " ("
5656
for i, c := range s.Columns {

exp/database/sql/ddl/postgres/ddl_index_drop.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func (s *DropIndexStmt) String() string {
2929
}
3030
str += "DROP INDEX "
3131
if s.IfExists {
32-
str += "IF EXISTS " //nolint:goconst
32+
str += "IF EXISTS "
3333
}
3434
str += s.Name.String() + ";\n"
3535
return str

exp/database/sql/ddl/postgres/ddl_table.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func (c *PrimaryKeyConstraint) GoString() string { return internal.GoString(*c)
4242
func (c *PrimaryKeyConstraint) String() string {
4343
var str string
4444
if c.Name != nil {
45-
str += "CONSTRAINT " + c.Name.String() + " " //nolint:goconst
45+
str += "CONSTRAINT " + c.Name.String() + " "
4646
}
4747
str += "PRIMARY KEY"
4848
str += " (" + stringz.JoinStringers(", ", c.Columns...) + ")"
@@ -52,7 +52,7 @@ func (c *PrimaryKeyConstraint) String() string {
5252
func (c *PrimaryKeyConstraint) StringForDiff() string {
5353
var str string
5454
if c.Name != nil {
55-
str += "CONSTRAINT " + c.Name.StringForDiff() + " " //nolint:goconst
55+
str += "CONSTRAINT " + c.Name.StringForDiff() + " "
5656
}
5757
str += "PRIMARY KEY"
5858
str += " ("
@@ -171,7 +171,7 @@ func (c *CheckConstraint) String() string {
171171
if c.Name != nil {
172172
str += "CONSTRAINT " + c.Name.String() + " "
173173
}
174-
str += "CHECK" //nolint:goconst
174+
str += "CHECK"
175175
str += " (" + stringz.JoinStringers(" ", c.Expr...) + ")"
176176
return str
177177
}
@@ -292,7 +292,7 @@ func (d *Default) String() string {
292292
return ""
293293
}
294294
if d.Value != nil {
295-
return "DEFAULT " + d.Value.String() //nolint:goconst
295+
return "DEFAULT " + d.Value.String()
296296
}
297297
return ""
298298
}

exp/database/sql/ddl/postgres/lexar.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,10 @@ const (
6969
TOKEN_TO TokenType = "TO"
7070

7171
// DATA TYPE.
72-
TOKEN_BOOLEAN TokenType = "BOOLEAN" //diff:ignore-line-postgres-cockroach
73-
TOKEN_SMALLINT TokenType = "SMALLINT"
74-
TOKEN_INTEGER TokenType = "INTEGER"
75-
TOKEN_BIGINT TokenType = "BIGINT"
72+
TOKEN_BOOLEAN TokenType = "BOOLEAN" //diff:ignore-line-postgres-cockroach
73+
TOKEN_SMALLINT TokenType = "SMALLINT" //diff:ignore-line-postgres-cockroach
74+
TOKEN_INTEGER TokenType = "INTEGER" //diff:ignore-line-postgres-cockroach
75+
TOKEN_BIGINT TokenType = "BIGINT" //diff:ignore-line-postgres-cockroach
7676
TOKEN_DECIMAL TokenType = "DECIMAL"
7777
TOKEN_NUMERIC TokenType = "NUMERIC"
7878
TOKEN_REAL TokenType = "REAL"
@@ -163,12 +163,12 @@ func lookupIdent(ident string) TokenType {
163163
return TOKEN_TO
164164
case "BOOLEAN": //diff:ignore-line-postgres-cockroach
165165
return TOKEN_BOOLEAN //diff:ignore-line-postgres-cockroach
166-
case "SMALLINT":
167-
return TOKEN_SMALLINT
168-
case "INTEGER", "INT":
169-
return TOKEN_INTEGER
170-
case "BIGINT":
171-
return TOKEN_BIGINT
166+
case "SMALLINT": //diff:ignore-line-postgres-cockroach
167+
return TOKEN_SMALLINT //diff:ignore-line-postgres-cockroach
168+
case "INTEGER", "INT": //diff:ignore-line-postgres-cockroach
169+
return TOKEN_INTEGER //diff:ignore-line-postgres-cockroach
170+
case "BIGINT": //diff:ignore-line-postgres-cockroach
171+
return TOKEN_BIGINT //diff:ignore-line-postgres-cockroach
172172
case "DECIMAL":
173173
return TOKEN_DECIMAL
174174
case "NUMERIC":

0 commit comments

Comments
 (0)