@@ -98,6 +98,124 @@ component extends="org.lucee.cfml.test.LuceeTestCase" labels="mysql" {
9898 }
9999
100100
101+ public void function testTypesDefault () {
102+ testTypes ();
103+ }
104+
105+ public void function testTypes8019 () {
106+ testTypes (" 8.0.19" );
107+ }
108+
109+ public void function testTypes8033 () {
110+ testTypes (" 8.0.33" );
111+ }
112+
113+ /**
114+ * test types
115+ */
116+ private void function testTypes (version = " " ) {
117+ if (! variables .has ) return ;
118+
119+ var datasourceName = " ds" & createUniqueID ();
120+ defineDatasource (arguments .version ,datasourceName );
121+
122+ var MinInt = " -2147483648" ;
123+ var MaxInt = " 2147483647" ;
124+ var MinUnsignedInt = " 0" ;
125+ var UnsignedMaxInt = " 4294967295" ;
126+ var MinBigInt = " -9223372036854775808" ;
127+ var MaxBigInt = " 9223372036854775807" ;
128+ var MinUnsignedBigInt = " 0" ;
129+ var UnsignedMaxBigInt = " 18446744073709551615" ;
130+ var MinFloat = " -3.402823466E+38" ;
131+ var MaxFloat = " 3.402823466E+38" ;
132+ var MinDouble = " -1.7976931348623157E+308" ;
133+ var MaxDouble = " 1.7976931348623157E+308" ;
134+ var MinDecimal = " -99999999999999.9999" ;
135+ var MaxDecimal = " 99999999999999.9999" ;
136+
137+
138+ try {
139+
140+ query name = " local.qry" datasource = datasourceName {
141+ echo ("
142+ SELECT
143+ CAST(#MinInt # AS SIGNED INTEGER) AS MinInt,
144+ CAST(#MaxInt # AS SIGNED INTEGER) AS MaxInt, -- INT (signed)
145+ CAST(#MinUnsignedInt # AS UNSIGNED INTEGER) AS MinUnsignedInt,
146+ CAST(#UnsignedMaxInt # AS UNSIGNED INTEGER) AS UnsignedMaxInt, -- INT (unsigned)
147+ CAST(#MinBigInt # AS SIGNED) AS MinBigInt,
148+ CAST(#MaxBigInt # AS SIGNED) AS MaxBigInt, -- BIGINT (signed)
149+ CAST(#MinUnsignedBigInt # AS UNSIGNED) AS MinUnsignedBigInt,
150+ CAST(#UnsignedMaxBigInt # AS UNSIGNED) AS UnsignedMaxBigInt, -- BIGINT (unsigned)
151+ CAST(#MinFloat # AS FLOAT) AS MinFloat,
152+ CAST(#MaxFloat # AS FLOAT) AS MaxFloat, -- FLOAT
153+ CAST(#MinDouble # AS DOUBLE) AS MinDouble,
154+ CAST(#MaxDouble # AS DOUBLE) AS MaxDouble, -- DOUBLE
155+ CAST(#MinDecimal # AS DECIMAL(18,4)) AS MinDecimal,
156+ CAST(#MaxDecimal # AS DECIMAL(18,4)) AS MaxDecimal -- DECIMAL
157+ ;" );
158+ }
159+ assertEquals (" java.lang.String" ,qry .MinInt [1 ].getClass ().getName ());
160+ assertEquals (MaxInt ,qry .MaxInt );
161+ assertEquals (MaxInt ," " & qry .MaxInt );
162+
163+ assertEquals (" java.lang.Double" ,qry .MinUnsignedInt [1 ].getClass ().getName ());
164+ assertEquals (MinUnsignedInt ,qry .MinUnsignedInt );
165+ assertEquals (MinUnsignedInt ," " & qry .MinUnsignedInt );
166+
167+ assertEquals (" java.lang.String" ,qry .UnsignedMaxInt [1 ].getClass ().getName ());
168+ assertEquals (UnsignedMaxInt ,qry .UnsignedMaxInt );
169+ assertEquals (UnsignedMaxInt ," " & qry .UnsignedMaxInt );
170+
171+ assertEquals (" java.lang.String" ,qry .MinBigInt [1 ].getClass ().getName ());
172+ assertEquals (MinBigInt ,qry .MinBigInt );
173+ assertEquals (MinBigInt ," " & qry .MinBigInt );
174+
175+ assertEquals (" java.lang.String" ,qry .MaxBigInt [1 ].getClass ().getName ());
176+ assertEquals (MaxBigInt ,qry .MaxBigInt );
177+ assertEquals (MaxBigInt ," " & qry .MaxBigInt );
178+
179+ assertEquals (" java.lang.Double" ,qry .MinUnsignedBigInt [1 ].getClass ().getName ());
180+ assertEquals (MinUnsignedBigInt ,qry .MinUnsignedBigInt );
181+ assertEquals (MinUnsignedBigInt ," " & qry .MinUnsignedBigInt );
182+
183+ assertEquals (" java.lang.String" ,qry .UnsignedMaxBigInt [1 ].getClass ().getName ());
184+ assertEquals (UnsignedMaxBigInt ,qry .UnsignedMaxBigInt );
185+ assertEquals (UnsignedMaxBigInt ," " & qry .UnsignedMaxBigInt );
186+
187+ // ATM we only test the types, because there is an issue with float that need fixing first
188+ assertEquals (" java.lang.Float" ,qry .MinFloat [1 ].getClass ().getName ());
189+ // assertEquals(MinFloat,qry.MinFloat);
190+ // assertEquals(MinFloat,""&qry.MinFloat);
191+
192+ // ATM we only test the types, because there is an issue with float that need fixing first
193+ assertEquals (" java.lang.Float" ,qry .MaxFloat [1 ].getClass ().getName ());
194+ // assertEquals(MaxFloat,qry.MaxFloat);
195+ // assertEquals(MaxFloat,""&qry.MaxFloat);
196+
197+ assertEquals (" java.lang.Double" ,qry .MinDouble [1 ].getClass ().getName ());
198+ assertEquals (MinDouble ,qry .MinDouble );
199+ assertEquals (MinDouble ," " & qry .MinDouble );
200+
201+ assertEquals (" java.lang.Double" ,qry .MaxDouble [1 ].getClass ().getName ());
202+ assertEquals (MaxDouble ,qry .MaxDouble );
203+ assertEquals (MaxDouble ," " & qry .MaxDouble );
204+
205+ assertEquals (" java.math.BigDecimal" ,qry .MinDecimal [1 ].getClass ().getName ());
206+ assertEquals (MinDecimal ,qry .MinDecimal );
207+ assertEquals (MinDecimal ," " & qry .MinDecimal );
208+
209+ assertEquals (" java.math.BigDecimal" ,qry .MaxDecimal [1 ].getClass ().getName ());
210+ assertEquals (MaxDecimal ,qry .MaxDecimal );
211+ assertEquals (MaxDecimal ," " & qry .MaxDecimal );
212+ }
213+ finally {
214+
215+ }
216+ }
217+
218+
101219 public void function testMySQLWithBSTTimezone (){
102220 if (! variables .has ) return ;
103221
0 commit comments