mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-17 15:36:48 +00:00
chore: added normal index in sql schema
This commit is contained in:
parent
cbb24d9a34
commit
5e3449db63
@ -114,3 +114,78 @@ func (index *UniqueIndex) ToDropSQL(fmter SQLFormatter) []byte {
|
|||||||
|
|
||||||
return sql
|
return sql
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type NormalIndex struct {
|
||||||
|
TableName TableName
|
||||||
|
ColumnNames []ColumnName
|
||||||
|
name string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (index *NormalIndex) Name() string {
|
||||||
|
if index.name != "" {
|
||||||
|
return index.name
|
||||||
|
}
|
||||||
|
|
||||||
|
var b strings.Builder
|
||||||
|
b.WriteString(IndexTypeIndex.String())
|
||||||
|
b.WriteString("_")
|
||||||
|
b.WriteString(string(index.TableName))
|
||||||
|
b.WriteString("_")
|
||||||
|
for i, column := range index.ColumnNames {
|
||||||
|
if i > 0 {
|
||||||
|
b.WriteString("_")
|
||||||
|
}
|
||||||
|
b.WriteString(string(column))
|
||||||
|
}
|
||||||
|
return b.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (index *NormalIndex) Named(name string) Index {
|
||||||
|
copyOfColumnNames := make([]ColumnName, len(index.ColumnNames))
|
||||||
|
copy(copyOfColumnNames, index.ColumnNames)
|
||||||
|
|
||||||
|
return &NormalIndex{
|
||||||
|
TableName: index.TableName,
|
||||||
|
ColumnNames: copyOfColumnNames,
|
||||||
|
name: name,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*NormalIndex) Type() IndexType {
|
||||||
|
return IndexTypeIndex
|
||||||
|
}
|
||||||
|
|
||||||
|
func (index *NormalIndex) Columns() []ColumnName {
|
||||||
|
return index.ColumnNames
|
||||||
|
}
|
||||||
|
|
||||||
|
func (index *NormalIndex) ToCreateSQL(fmter SQLFormatter) []byte {
|
||||||
|
sql := []byte{}
|
||||||
|
|
||||||
|
sql = append(sql, "CREATE INDEX IF NOT EXISTS "...)
|
||||||
|
sql = fmter.AppendIdent(sql, index.Name())
|
||||||
|
sql = append(sql, " ON "...)
|
||||||
|
sql = fmter.AppendIdent(sql, string(index.TableName))
|
||||||
|
sql = append(sql, " ("...)
|
||||||
|
|
||||||
|
for i, column := range index.ColumnNames {
|
||||||
|
if i > 0 {
|
||||||
|
sql = append(sql, ", "...)
|
||||||
|
}
|
||||||
|
|
||||||
|
sql = fmter.AppendIdent(sql, string(column))
|
||||||
|
}
|
||||||
|
|
||||||
|
sql = append(sql, ")"...)
|
||||||
|
|
||||||
|
return sql
|
||||||
|
}
|
||||||
|
|
||||||
|
func (index *NormalIndex) ToDropSQL(fmter SQLFormatter) []byte {
|
||||||
|
sql := []byte{}
|
||||||
|
|
||||||
|
sql = append(sql, "DROP INDEX IF EXISTS "...)
|
||||||
|
sql = fmter.AppendIdent(sql, index.Name())
|
||||||
|
|
||||||
|
return sql
|
||||||
|
}
|
||||||
|
|||||||
@ -38,6 +38,31 @@ func TestIndexToCreateSQL(t *testing.T) {
|
|||||||
},
|
},
|
||||||
sql: `CREATE UNIQUE INDEX IF NOT EXISTS "my_index" ON "users" ("id", "name", "email")`,
|
sql: `CREATE UNIQUE INDEX IF NOT EXISTS "my_index" ON "users" ("id", "name", "email")`,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Normal_1Column",
|
||||||
|
index: &NormalIndex{
|
||||||
|
TableName: "users",
|
||||||
|
ColumnNames: []ColumnName{"org_id"},
|
||||||
|
},
|
||||||
|
sql: `CREATE INDEX IF NOT EXISTS "ix_users_org_id" ON "users" ("org_id")`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Normal_2Columns",
|
||||||
|
index: &NormalIndex{
|
||||||
|
TableName: "users",
|
||||||
|
ColumnNames: []ColumnName{"org_id", "status"},
|
||||||
|
},
|
||||||
|
sql: `CREATE INDEX IF NOT EXISTS "ix_users_org_id_status" ON "users" ("org_id", "status")`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Normal_3Columns_Named",
|
||||||
|
index: &NormalIndex{
|
||||||
|
TableName: "route_policy",
|
||||||
|
ColumnNames: []ColumnName{"org_id", "enabled", "kind"},
|
||||||
|
name: "idx_custom_name",
|
||||||
|
},
|
||||||
|
sql: `CREATE INDEX IF NOT EXISTS "idx_custom_name" ON "route_policy" ("org_id", "enabled", "kind")`,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, testCase := range testCases {
|
for _, testCase := range testCases {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user