Skip to content

Commit

Permalink
Fix subquery document
Browse files Browse the repository at this point in the history
  • Loading branch information
lighttiger2505 committed Dec 29, 2020
1 parent c7b60e1 commit 888860b
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 22 deletions.
52 changes: 39 additions & 13 deletions internal/database/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,24 @@ func SubqueryDoc(name string, views []*parseutil.SubQueryView, dbCache *DBCache)
fmt.Fprintln(buf)
for _, view := range views {
for _, colmun := range view.SubQueryColumns {
columnDesc, ok := dbCache.Column(colmun.ParentTable.Name, colmun.ColumnName)
if !ok {
continue
if colmun.ColumnName == "*" {
tableCols, ok := dbCache.ColumnDescs(colmun.ParentTable.Name)
if !ok {
continue
}
for _, tableCol := range tableCols {
fmt.Fprintf(buf, "- %s(%s.%s): %s", tableCol.Name, colmun.ParentTable.Name, tableCol.Name, tableCol.OnelineDesc())
fmt.Fprintln(buf)
}
} else {
columnDesc, ok := dbCache.Column(colmun.ParentTable.Name, colmun.ColumnName)
if !ok {
continue
}
fmt.Fprintf(buf, "- %s(%s.%s): %s", colmun.DisplayName(), colmun.ParentTable.Name, colmun.ColumnName, columnDesc.OnelineDesc())
fmt.Fprintln(buf)

}
fmt.Fprintf(buf, "- %s(%s.%s): %s", colmun.DisplayName(), colmun.ParentTable.Name, colmun.ColumnName, columnDesc.OnelineDesc())
fmt.Fprintln(buf)
}
}
return buf.String()
Expand All @@ -112,15 +124,29 @@ func SubqueryColumnDoc(identName string, views []*parseutil.SubQueryView, dbCach
fmt.Fprintln(buf)
for _, view := range views {
for _, colmun := range view.SubQueryColumns {
if identName != colmun.ColumnName && identName != colmun.AliasName {
continue
}
columnDesc, ok := dbCache.Column(colmun.ParentTable.Name, colmun.ColumnName)
if !ok {
continue
if colmun.ColumnName == "*" {
tableCols, ok := dbCache.ColumnDescs(colmun.ParentTable.Name)
if !ok {
continue
}
for _, tableCol := range tableCols {
if identName == tableCol.Name {
fmt.Fprintf(buf, "- %s(%s.%s): %s", identName, colmun.ParentTable.Name, tableCol.Name, tableCol.OnelineDesc())
fmt.Fprintln(buf)
continue
}
}
} else {
if identName != colmun.ColumnName && identName != colmun.AliasName {
continue
}
columnDesc, ok := dbCache.Column(colmun.ParentTable.Name, colmun.ColumnName)
if !ok {
continue
}
fmt.Fprintf(buf, "- %s(%s.%s): %s", identName, colmun.ParentTable.Name, colmun.ColumnName, columnDesc.OnelineDesc())
fmt.Fprintln(buf)
}
fmt.Fprintf(buf, "- %s.%s: %s", colmun.ParentTable.Name, colmun.ColumnName, columnDesc.OnelineDesc())
fmt.Fprintln(buf)
}
}
return buf.String()
Expand Down
25 changes: 16 additions & 9 deletions internal/handler/hover_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ func TestHover(t *testing.T) {
{
name: "select subquery ident parent",
input: "SELECT ID, Name FROM (SELECT ci.ID, ci.Name, ci.CountryCode, ci.District, ci.Population FROM city AS ci) as it",
output: "ID subquery column\n\n- city.ID: int(11) PRI auto_increment\n",
output: "ID subquery column\n\n- ID(city.ID): int(11) PRI auto_increment\n",
line: 0,
col: 8,
},
Expand All @@ -169,17 +169,24 @@ func TestHover(t *testing.T) {
{
name: "select subquery member ident child",
input: "SELECT it.ID, it.Name FROM (SELECT ci.ID, ci.Name, ci.CountryCode, ci.District, ci.Population FROM city AS ci) as it",
output: "ID subquery column\n\n- city.ID: int(11) PRI auto_increment\n",
output: "ID subquery column\n\n- ID(city.ID): int(11) PRI auto_increment\n",
line: 0,
col: 11,
},
{
name: "select subquery with asterisk ident parent",
input: "SELECT it.ID, it.Name FROM (SELECT * FROM city) as it",
output: "it subquery\n\n- ID(city.ID): int(11) PRI auto_increment\n- Name(city.Name): char(35)\n- CountryCode(city.CountryCode): char(3) MUL\n- District(city.District): char(20)\n- Population(city.Population): int(11)\n",
line: 0,
col: 8,
},
{
name: "select subquery with asterisk ident child",
input: "SELECT it.ID, it.Name FROM (SELECT * FROM city) as it",
output: "ID subquery column\n\n- ID(city.ID): int(11) PRI auto_increment\n",
line: 0,
col: 11,
},
// {
// name: "select subquery asterisk ident parent",
// input: "SELECT it.ID, it.Name FROM (SELECT * FROM city) as it",
// output: "it subquery\n\n- ID(city.ID): int(11) PRI auto_increment\n- Name(city.Name): char(35)\n- CountryCode(city.CountryCode): char(3) MUL\n- District(city.District): char(20)\n- Population(city.Population): int(11)\n",
// line: 0,
// col: 8,
// },
{
name: "select aliased select identifer",
input: "SELECT ID AS city_id, Name AS city_name FROM city",
Expand Down

0 comments on commit 888860b

Please sign in to comment.