@@ -129,7 +129,6 @@ func (s *testInferTypeSuite) TestInferType(c *C) {
129129 tests = append (tests , s .createTestCase4Literals ()... )
130130 tests = append (tests , s .createTestCase4JSONFuncs ()... )
131131 tests = append (tests , s .createTestCase4MiscellaneousFunc ()... )
132- tests = append (tests , s .createTestCase4AggregationFunc ()... )
133132
134133 for _ , tt := range tests {
135134 ctx := testKit .Se .(sessionctx.Context )
@@ -205,35 +204,35 @@ func (s *testInferTypeSuite) createTestCase4Columns() []typeInferTestCase {
205204 return []typeInferTestCase {
206205 {"c_bit " , mysql .TypeBit , charset .CharsetBin , mysql .UnsignedFlag , 10 , 0 },
207206 {"c_year " , mysql .TypeYear , charset .CharsetBin , mysql .UnsignedFlag | mysql .ZerofillFlag , 4 , 0 },
208- {"c_int_d " , mysql .TypeLong , charset .CharsetBin , mysql . BinaryFlag , 11 , 0 },
209- {"c_uint_d " , mysql .TypeLong , charset .CharsetBin , mysql .BinaryFlag | mysql . UnsignedFlag , 10 , 0 },
210- {"c_bigint_d " , mysql .TypeLonglong , charset .CharsetBin , mysql . BinaryFlag , 20 , 0 },
211- {"c_ubigint_d " , mysql .TypeLonglong , charset .CharsetBin , mysql .BinaryFlag | mysql . UnsignedFlag , 20 , 0 },
212- {"c_float_d " , mysql .TypeFloat , charset .CharsetBin , mysql . BinaryFlag , 12 , types .UnspecifiedLength },
213- {"c_ufloat_d " , mysql .TypeFloat , charset .CharsetBin , mysql .BinaryFlag | mysql . UnsignedFlag , 12 , types .UnspecifiedLength },
214- {"c_double_d " , mysql .TypeDouble , charset .CharsetBin , mysql . BinaryFlag , 22 , types .UnspecifiedLength },
215- {"c_udouble_d " , mysql .TypeDouble , charset .CharsetBin , mysql .BinaryFlag | mysql . UnsignedFlag , 22 , types .UnspecifiedLength },
216- {"c_decimal " , mysql .TypeNewDecimal , charset .CharsetBin , mysql . BinaryFlag , 6 , 3 }, // TODO: Flen should be 8
217- {"c_udecimal " , mysql .TypeNewDecimal , charset .CharsetBin , mysql .BinaryFlag | mysql . UnsignedFlag , 10 , 3 }, // TODO: Flen should be 11
218- {"c_decimal_d " , mysql .TypeNewDecimal , charset .CharsetBin , mysql . BinaryFlag , 11 , 0 },
219- {"c_udecimal_d " , mysql .TypeNewDecimal , charset .CharsetBin , mysql .BinaryFlag | mysql . UnsignedFlag , 11 , 0 }, // TODO: Flen should be 10
207+ {"c_int_d " , mysql .TypeLong , charset .CharsetBin , 0 , 11 , 0 },
208+ {"c_uint_d " , mysql .TypeLong , charset .CharsetBin , mysql .UnsignedFlag , 10 , 0 },
209+ {"c_bigint_d " , mysql .TypeLonglong , charset .CharsetBin , 0 , 20 , 0 },
210+ {"c_ubigint_d " , mysql .TypeLonglong , charset .CharsetBin , mysql .UnsignedFlag , 20 , 0 },
211+ {"c_float_d " , mysql .TypeFloat , charset .CharsetBin , 0 , 12 , types .UnspecifiedLength },
212+ {"c_ufloat_d " , mysql .TypeFloat , charset .CharsetBin , mysql .UnsignedFlag , 12 , types .UnspecifiedLength },
213+ {"c_double_d " , mysql .TypeDouble , charset .CharsetBin , 0 , 22 , types .UnspecifiedLength },
214+ {"c_udouble_d " , mysql .TypeDouble , charset .CharsetBin , mysql .UnsignedFlag , 22 , types .UnspecifiedLength },
215+ {"c_decimal " , mysql .TypeNewDecimal , charset .CharsetBin , 0 , 6 , 3 }, // TODO: Flen should be 8
216+ {"c_udecimal " , mysql .TypeNewDecimal , charset .CharsetBin , mysql .UnsignedFlag , 10 , 3 }, // TODO: Flen should be 11
217+ {"c_decimal_d " , mysql .TypeNewDecimal , charset .CharsetBin , 0 , 11 , 0 },
218+ {"c_udecimal_d " , mysql .TypeNewDecimal , charset .CharsetBin , mysql .UnsignedFlag , 11 , 0 }, // TODO: Flen should be 10
220219 {"c_datetime " , mysql .TypeDatetime , charset .CharsetBin , mysql .BinaryFlag , 22 , 2 },
221220 {"c_datetime_d " , mysql .TypeDatetime , charset .CharsetBin , mysql .BinaryFlag , 19 , 0 },
222221 {"c_time " , mysql .TypeDuration , charset .CharsetBin , mysql .BinaryFlag , 14 , 3 },
223222 {"c_time_d " , mysql .TypeDuration , charset .CharsetBin , mysql .BinaryFlag , 10 , 0 },
224223 {"c_timestamp " , mysql .TypeTimestamp , charset .CharsetBin , mysql .NotNullFlag | mysql .BinaryFlag | mysql .TimestampFlag , 24 , 4 },
225224 {"c_timestamp_d" , mysql .TypeTimestamp , charset .CharsetBin , mysql .NotNullFlag | mysql .BinaryFlag | mysql .TimestampFlag , 19 , 0 },
226- {"c_char " , mysql .TypeString , charset .CharsetUTF8 , 0 , 20 , 0 },
225+ {"c_char " , mysql .TypeString , charset .CharsetUTF8 , 0 , 20 , 0 }, // TODO: flag should be BinaryFlag
227226 {"c_bchar " , mysql .TypeString , charset .CharsetUTF8 , mysql .BinaryFlag , 20 , 0 },
228- {"c_varchar " , mysql .TypeVarchar , charset .CharsetUTF8 , 0 , 20 , 0 }, // TODO: tp should be TypeVarString
229- {"c_bvarchar " , mysql .TypeVarchar , charset .CharsetUTF8 , mysql .BinaryFlag , 20 , 0 }, // TODO: tp should be TypeVarString
230- {"c_text_d " , mysql .TypeBlob , charset .CharsetUTF8 , 0 , 65535 , 0 }, // TODO: BlobFlag
231- {"c_btext_d " , mysql .TypeBlob , charset .CharsetUTF8 , mysql .BinaryFlag , 65535 , 0 }, // TODO: BlobFlag
232- {"c_binary " , mysql .TypeString , charset .CharsetBin , mysql .BinaryFlag , 20 , 0 },
233- {"c_varbinary " , mysql .TypeVarchar , charset .CharsetBin , mysql .BinaryFlag , 20 , 0 }, // TODO: tp should be TypeVarString
234- {"c_blob_d " , mysql .TypeBlob , charset .CharsetBin , mysql .BinaryFlag , 65535 , 0 }, // TODO: BlobFlag
235- {"c_set " , mysql .TypeSet , charset .CharsetUTF8 , 0 , types .UnspecifiedLength , 0 }, // TODO: SetFlag, Flen should be 5
236- {"c_enum " , mysql .TypeEnum , charset .CharsetUTF8 , 0 , types .UnspecifiedLength , 0 }, // TODO: EnumFlag, Flen should be 1
227+ {"c_varchar " , mysql .TypeVarchar , charset .CharsetUTF8 , 0 , 20 , 0 }, // TODO: BinaryFlag, tp should be TypeVarString
228+ {"c_bvarchar " , mysql .TypeVarchar , charset .CharsetUTF8 , mysql .BinaryFlag , 20 , 0 }, // TODO: BinaryFlag, tp should be TypeVarString
229+ {"c_text_d " , mysql .TypeBlob , charset .CharsetUTF8 , 0 , 65535 , 0 }, // TODO: BlobFlag, BinaryFlag
230+ {"c_btext_d " , mysql .TypeBlob , charset .CharsetUTF8 , mysql .BinaryFlag , 65535 , 0 }, // TODO: BlobFlag, BinaryFlag
231+ {"c_binary " , mysql .TypeString , charset .CharsetBin , mysql .BinaryFlag , 20 , 0 }, // TODO: BinaryFlag
232+ {"c_varbinary " , mysql .TypeVarchar , charset .CharsetBin , mysql .BinaryFlag , 20 , 0 }, // TODO: BinaryFlag, tp should be TypeVarString
233+ {"c_blob_d " , mysql .TypeBlob , charset .CharsetBin , mysql .BinaryFlag , 65535 , 0 }, // TODO: BlobFlag, BinaryFlag
234+ {"c_set " , mysql .TypeSet , charset .CharsetUTF8 , 0 , types .UnspecifiedLength , 0 }, // TODO: SetFlag, BinaryFlag, Flen should be 5
235+ {"c_enum " , mysql .TypeEnum , charset .CharsetUTF8 , 0 , types .UnspecifiedLength , 0 }, // TODO: EnumFlag, BinaryFlag, Flen should be 1
237236 }
238237}
239238
@@ -795,20 +794,20 @@ func (s *testInferTypeSuite) createTestCase4ControlFuncs() []typeInferTestCase {
795794 return []typeInferTestCase {
796795 {"ifnull(c_int_d, c_int_d)" , mysql .TypeLong , charset .CharsetBin , mysql .BinaryFlag , 11 , 0 },
797796 {"ifnull(c_int_d, c_decimal)" , mysql .TypeNewDecimal , charset .CharsetBin , mysql .BinaryFlag , 14 , 3 },
798- {"ifnull(c_int_d, c_char)" , mysql .TypeString , charset .CharsetUTF8 , 0 , 20 , types .UnspecifiedLength },
797+ {"ifnull(c_int_d, c_char)" , mysql .TypeString , charset .CharsetUTF8 , mysql . BinaryFlag , 20 , types .UnspecifiedLength },
799798 {"ifnull(c_int_d, c_binary)" , mysql .TypeString , charset .CharsetBin , mysql .BinaryFlag , 20 , types .UnspecifiedLength },
800799 {"ifnull(c_char, c_binary)" , mysql .TypeString , charset .CharsetBin , mysql .BinaryFlag , 20 , types .UnspecifiedLength },
801800 {"ifnull(null, null)" , mysql .TypeNull , charset .CharsetBin , mysql .BinaryFlag , 0 , types .UnspecifiedLength },
802801 {"ifnull(c_double_d, c_timestamp_d)" , mysql .TypeVarchar , charset .CharsetUTF8 , mysql .NotNullFlag , 22 , types .UnspecifiedLength },
803802 {"ifnull(c_json, c_decimal)" , mysql .TypeLongBlob , charset .CharsetUTF8 , 0 , math .MaxUint32 , types .UnspecifiedLength },
804803 {"if(c_int_d, c_decimal, c_int_d)" , mysql .TypeNewDecimal , charset .CharsetBin , mysql .BinaryFlag , 14 , 3 },
805- {"if(c_int_d, c_char, c_int_d)" , mysql .TypeString , charset .CharsetUTF8 , 0 , 20 , types .UnspecifiedLength },
804+ {"if(c_int_d, c_char, c_int_d)" , mysql .TypeString , charset .CharsetUTF8 , mysql . BinaryFlag , 20 , types .UnspecifiedLength },
806805 {"if(c_int_d, c_binary, c_int_d)" , mysql .TypeString , charset .CharsetBin , mysql .BinaryFlag , 20 , types .UnspecifiedLength },
807806 {"if(c_int_d, c_bchar, c_int_d)" , mysql .TypeString , charset .CharsetUTF8 , mysql .BinaryFlag , 20 , types .UnspecifiedLength },
808- {"if(c_int_d, c_char, c_decimal)" , mysql .TypeString , charset .CharsetUTF8 , 0 , 20 , types .UnspecifiedLength },
807+ {"if(c_int_d, c_char, c_decimal)" , mysql .TypeString , charset .CharsetUTF8 , mysql . BinaryFlag , 20 , types .UnspecifiedLength },
809808 {"if(c_int_d, c_datetime, c_int_d)" , mysql .TypeVarchar , charset .CharsetUTF8 , 0 , 22 , types .UnspecifiedLength },
810809 {"if(c_int_d, c_int_d, c_double_d)" , mysql .TypeDouble , charset .CharsetBin , mysql .BinaryFlag , 22 , types .UnspecifiedLength },
811- {"if(c_int_d, c_time_d, c_datetime)" , mysql .TypeDatetime , charset .CharsetUTF8 , 0 , 22 , 2 },
810+ {"if(c_int_d, c_time_d, c_datetime)" , mysql .TypeDatetime , charset .CharsetUTF8 , mysql . BinaryFlag , 22 , 2 }, // TODO: should not be BinaryFlag
812811 {"if(c_int_d, c_time, c_json)" , mysql .TypeLongBlob , charset .CharsetUTF8 , 0 , math .MaxUint32 , types .UnspecifiedLength },
813812 {"if(null, null, null)" , mysql .TypeString , charset .CharsetBin , mysql .BinaryFlag , 0 , 0 },
814813 {"case when c_int_d then c_char else c_varchar end" , mysql .TypeVarchar , charset .CharsetUTF8 , 0 , 20 , types .UnspecifiedLength },
@@ -835,6 +834,7 @@ func (s *testInferTypeSuite) createTestCase4Aggregations() []typeInferTestCase {
835834 {"avg(1.0)" , mysql .TypeNewDecimal , charset .CharsetBin , mysql .BinaryFlag , mysql .MaxDecimalWidth , 5 },
836835 {"avg(1.2e2)" , mysql .TypeDouble , charset .CharsetBin , mysql .BinaryFlag , mysql .MaxRealWidth , types .UnspecifiedLength },
837836 {"avg(c_char)" , mysql .TypeDouble , charset .CharsetBin , mysql .BinaryFlag , mysql .MaxRealWidth , 0 },
837+ {"group_concat(c_int_d)" , mysql .TypeVarString , charset .CharsetUTF8 , 0 , mysql .MaxBlobWidth , 0 },
838838 }
839839}
840840
@@ -1951,9 +1951,3 @@ func (s *testInferTypeSuite) createTestCase4MiscellaneousFunc() []typeInferTestC
19511951 {"release_lock(c_text_d)" , mysql .TypeLonglong , charset .CharsetBin , mysql .BinaryFlag , 1 , 0 },
19521952 }
19531953}
1954-
1955- func (s * testInferTypeSuite ) createTestCase4AggregationFunc () []typeInferTestCase {
1956- return []typeInferTestCase {
1957- {"group_concat(c_int_d)" , mysql .TypeVarString , charset .CharsetUTF8 , 0 , mysql .MaxBlobWidth , 0 },
1958- }
1959- }
0 commit comments