@@ -293,6 +293,15 @@ case object MsSqlServerDialect extends JdbcDialect {
293293@ DeveloperApi
294294case object OracleDialect extends JdbcDialect {
295295 override def canHandle (url : String ): Boolean = url.startsWith(" jdbc:oracle" )
296+ override def getCatalystType (
297+ sqlType : Int , typeName : String , size : Int , md : MetadataBuilder ): Option [DataType ] = {
298+ if (sqlType == Types .VARCHAR && typeName.equals(" VARCHAR" )) {
299+ // Save varchar size to metadata
300+ md.putLong(" maxlength" , size)
301+ Some (LongType )
302+ } else None
303+ }
304+
296305 override def getJDBCType (dt : DataType , md : Metadata ): Option [JdbcType ] = {
297306 if (dt == StringType && md.contains(" maxlength" )) {
298307 Some (JdbcType (s " VARCHAR( ${md.getLong(" maxlength" )}) " , java.sql.Types .VARCHAR ))
@@ -311,6 +320,15 @@ case object OracleDialect extends JdbcDialect {
311320@ DeveloperApi
312321case object NetezzaDialect extends JdbcDialect {
313322 override def canHandle (url : String ): Boolean = url.startsWith(" jdbc:netezza" )
323+ override def getCatalystType (
324+ sqlType : Int , typeName : String , size : Int , md : MetadataBuilder ): Option [DataType ] = {
325+ if (sqlType == Types .VARCHAR && typeName.equals(" VARCHAR" )) {
326+ // Save varchar size to metadata
327+ md.putLong(" maxlength" , size)
328+ Some (LongType )
329+ } else None
330+ }
331+
314332 override def getJDBCType (dt : DataType , md : Metadata ): Option [JdbcType ] = {
315333 if (dt == StringType && md.contains(" maxlength" )) {
316334 Some (JdbcType (s " VARCHAR( ${md.getLong(" maxlength" )}) " , java.sql.Types .VARCHAR ))
0 commit comments