@@ -134,3 +134,41 @@ func (s *schemaTestSuite) TestQuoteSchema() {
134134
135135 require .Equal (s .T (), "a.b" , ta .Columns [0 ].Name )
136136}
137+
138+ func (s * schemaTestSuite ) TestSchemaWithMultiValueIndex () {
139+ _ , err := s .conn .Execute (`DROP TABLE IF EXISTS multi_value_idx_test` )
140+ require .NoError (s .T (), err )
141+
142+ str := `
143+ CREATE TABLE IF NOT EXISTS multi_value_idx_test (
144+ id INT,
145+ entries json,
146+ PRIMARY KEY(id)
147+ ) ENGINE = INNODB;
148+ `
149+
150+ _ , err = s .conn .Execute (str )
151+ require .NoError (s .T (), err )
152+
153+ str = `CREATE INDEX idx_entries ON multi_value_idx_test((CAST((entries->'$') AS CHAR(64))));`
154+ _ , err = s .conn .Execute (str )
155+ require .NoError (s .T (), err )
156+
157+ ta , err := NewTable (s .conn , * schema , "multi_value_idx_test" )
158+ require .NoError (s .T (), err )
159+
160+ require .Len (s .T (), ta .Indexes , 2 )
161+
162+ require .Equal (s .T (), "PRIMARY" , ta .Indexes [0 ].Name )
163+ require .Len (s .T (), ta .Indexes [0 ].Columns , 1 )
164+ require .Equal (s .T (), "id" , ta .Indexes [0 ].Columns [0 ])
165+
166+ require .Equal (s .T (), "idx_entries" , ta .Indexes [1 ].Name )
167+ require .Len (s .T (), ta .Indexes [1 ].Columns , 1 )
168+ require .Equal (s .T (), "" , ta .Indexes [1 ].Columns [0 ])
169+
170+ taSqlDb , err := NewTableFromSqlDB (s .sqlDB , * schema , "multi_value_idx_test" )
171+ require .NoError (s .T (), err )
172+
173+ require .Equal (s .T (), ta , taSqlDb )
174+ }
0 commit comments