@@ -37,7 +37,7 @@ private[sql] object JDBCRDD extends Logging {
3737 * @param sqlType - A field of java.sql.Types
3838 * @return The Catalyst type corresponding to sqlType.
3939 */
40- private def getCatalystType (sqlType : Int ): DataType = {
40+ private def getCatalystType (sqlType : Int , precision : Int , scale : Int ): DataType = {
4141 val answer = sqlType match {
4242 case java.sql.Types .ARRAY => null
4343 case java.sql.Types .BIGINT => LongType
@@ -49,6 +49,8 @@ private[sql] object JDBCRDD extends Logging {
4949 case java.sql.Types .CLOB => StringType
5050 case java.sql.Types .DATALINK => null
5151 case java.sql.Types .DATE => DateType
52+ case java.sql.Types .DECIMAL
53+ if precision != 0 || scale != 0 => DecimalType (precision, scale)
5254 case java.sql.Types .DECIMAL => DecimalType .Unlimited
5355 case java.sql.Types .DISTINCT => null
5456 case java.sql.Types .DOUBLE => DoubleType
@@ -109,10 +111,11 @@ private[sql] object JDBCRDD extends Logging {
109111 val dataType = rsmd.getColumnType(i + 1 )
110112 val typeName = rsmd.getColumnTypeName(i + 1 )
111113 val fieldSize = rsmd.getPrecision(i + 1 )
114+ val fieldScale = rsmd.getScale(i + 1 )
112115 val nullable = rsmd.isNullable(i + 1 ) != ResultSetMetaData .columnNoNulls
113116 val metadata = new MetadataBuilder ().putString(" name" , columnName)
114117 var columnType = quirks.getCatalystType(dataType, typeName, fieldSize, metadata)
115- if (columnType == null ) columnType = getCatalystType(dataType)
118+ if (columnType == null ) columnType = getCatalystType(dataType, fieldSize, fieldScale )
116119 fields(i) = StructField (columnName, columnType, nullable, metadata.build())
117120 i = i + 1
118121 }
@@ -307,6 +310,7 @@ private[sql] class JDBCRDD(
307310 case BooleanType => BooleanConversion
308311 case DateType => DateConversion
309312 case DecimalType .Unlimited => DecimalConversion
313+ case DecimalType .Fixed (d) => DecimalConversion
310314 case DoubleType => DoubleConversion
311315 case FloatType => FloatConversion
312316 case IntegerType => IntegerConversion
0 commit comments