New test.
[mono.git] / mcs / class / System.Data.OracleClient / System.Data.OracleClient.jvm / OracleDataReader.cs
index e927e1df6228a58895d3bcacf2b8e933a8decdd1..4483b4ea3ddd308949c85577339a525eef35c427 100644 (file)
@@ -72,6 +72,205 @@ namespace System.Data.OracleClient {
                        return (int)OracleConvert.JdbcTypeToOracleType(jdbcType);   
                }\r
 \r
+               protected override IReaderCacheContainer CreateReaderCacheContainer(int jdbcType, int columnIndex) {\r
+                       switch ((JavaSqlTypes)jdbcType) {\r
+                               case JavaSqlTypes.BINARY_FLOAT:\r
+                                       jdbcType = (int)JavaSqlTypes.REAL;\r
+                                       break;\r
+                               case JavaSqlTypes.BINARY_DOUBLE:\r
+                                       jdbcType = (int)JavaSqlTypes.DOUBLE;\r
+                                       break;\r
+                               case JavaSqlTypes.ROWID:\r
+                                       jdbcType = (int)JavaSqlTypes.VARCHAR;\r
+                                       break;\r
+//                             case JavaSqlTypes.CURSOR:\r
+//                                     jdbcType = JavaSqlTypes.OTHER;\r
+//                                     break;\r
+                               case JavaSqlTypes.TIMESTAMPNS:\r
+                                       jdbcType = (int)JavaSqlTypes.TIMESTAMP;\r
+                                       break;\r
+                               case JavaSqlTypes.TIMESTAMPTZ:\r
+                                       jdbcType = (int)JavaSqlTypes.TIMESTAMP;\r
+                                       break;\r
+                               case JavaSqlTypes.TIMESTAMPLTZ: \r
+                                       jdbcType = (int)JavaSqlTypes.TIMESTAMP;\r
+                                       break;\r
+                               case JavaSqlTypes.INTERVALYM:\r
+                                       jdbcType = (int)JavaSqlTypes.INTEGER;\r
+                                       break;\r
+                               case JavaSqlTypes.INTERVALDS:\r
+                                       jdbcType = (int)JavaSqlTypes.TIMESTAMP;\r
+                                       break;\r
+                       }\r
+                       return base.CreateReaderCacheContainer (jdbcType, columnIndex);\r
+               }\r
+\r
+\r
+               protected override void SetSchemaType(DataRow schemaRow, ResultSetMetaData metaData, int columnIndex) {\r
+                       JavaSqlTypes columnType = (JavaSqlTypes)metaData.getColumnType(columnIndex);\r
+                       switch (columnType) {\r
+                               case JavaSqlTypes.BINARY_FLOAT:\r
+                                       schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+                                       schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfFloat;\r
+                                       schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+                                       break;\r
+                               case JavaSqlTypes.BINARY_DOUBLE:\r
+                                       schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+                                       schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfDouble;\r
+                                       schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+                                       break;\r
+                               case JavaSqlTypes.ROWID:\r
+                                       schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+                                       schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfString;\r
+                                       schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+                                       break;\r
+                               case JavaSqlTypes.CURSOR:\r
+                                       schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+                                       schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfDouble;\r
+                                       schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+                                       break;\r
+                               case JavaSqlTypes.TIMESTAMPNS:\r
+                                       schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+                                       schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfTimespan;\r
+                                       schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+                                       break;\r
+                               case JavaSqlTypes.TIMESTAMPTZ:\r
+                                       schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+                                       schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfTimespan;\r
+                                       schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+                                       break;\r
+                               case JavaSqlTypes.TIMESTAMPLTZ: \r
+                                       schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+                                       schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfTimespan;\r
+                                       schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+                                       break;\r
+                               case JavaSqlTypes.INTERVALYM:\r
+                                       schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+                                       schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfUInt32;\r
+                                       schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+                                       break;\r
+                               case JavaSqlTypes.INTERVALDS:\r
+                                       schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+                                       schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfTimespan;\r
+                                       schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+                                       break;\r
+                               default:\r
+                                       base.SetSchemaType(schemaRow, metaData, columnIndex);\r
+                                       break;\r
+                       }\r
+               }\r
+\r
+               public override decimal GetDecimal(int i) {\r
+                       if (IsNumeric(i))\r
+                               return GetDecimalSafe(i);\r
+\r
+                       return base.GetDecimal(i);\r
+               }\r
+\r
+               public override double GetDouble(int i) {\r
+                       if (IsNumeric(i))\r
+                               return GetDoubleSafe(i);\r
+\r
+                       return base.GetDouble(i);\r
+               }\r
+\r
+               public override float GetFloat(int i) {\r
+                       if (IsNumeric(i))\r
+                               return GetFloatSafe(i);\r
+\r
+                       return base.GetFloat(i);\r
+               }\r
+//\r
+//             OracleClient does not "excuse" for Int16\r
+//\r
+//             public override short GetInt16(int i) {\r
+//                     if (IsNumeric(i))\r
+//                             return GetInt16Safe(i);\r
+//\r
+//                     return base.GetInt16(i);\r
+//             }\r
+\r
+\r
+               public override int GetInt32(int i) {\r
+                       if (IsNumeric(i))\r
+                               return GetInt32Safe(i);\r
+\r
+                       return base.GetInt32(i);\r
+               }\r
+\r
+               public override long GetInt64(int i) {\r
+                       if (IsNumeric(i))\r
+                               return GetInt64Safe(i);\r
+\r
+                       return base.GetInt64(i);\r
+               }\r
+\r
+#if SUPPORT_ORACLE_TYPES\r
+               #region GetOracleXXX\r
+\r
+               public OracleBFile GetOracleBFile(\r
+                       int i\r
+                       ) {\r
+                       throw new NotImplementedException();\r
+               }\r
+\r
+               public OracleBinary GetOracleBinary(\r
+                       int i\r
+                       ) {\r
+                       throw new NotImplementedException();\r
+               }\r
+\r
+               public OracleDateTime GetOracleDateTime(\r
+                       int i\r
+                       ) {\r
+                       throw new NotImplementedException();\r
+               }\r
+\r
+               public OracleLob GetOracleLob(\r
+                       int i\r
+                       ) {\r
+                       throw new NotImplementedException();\r
+               }\r
+\r
+               public OracleMonthSpan GetOracleMonthSpan(\r
+                       int i\r
+                       ) {\r
+                       throw new NotImplementedException();\r
+               }\r
+\r
+               public OracleNumber GetOracleNumber(\r
+                       int i\r
+                       ) {\r
+                       throw new NotImplementedException();\r
+               }\r
+\r
+               public OracleString GetOracleString(\r
+                       int i\r
+                       ) {\r
+                       throw new NotImplementedException();\r
+               }\r
+\r
+               public OracleTimeSpan GetOracleTimeSpan(\r
+                       int i\r
+                       ) {\r
+                       throw new NotImplementedException();\r
+               }\r
+\r
+               public object GetOracleValue(\r
+                       int i\r
+                       ) {\r
+                       throw new NotImplementedException();\r
+               }\r
+\r
+               public int GetOracleValues(\r
+                       object[] values\r
+                       ) {\r
+                       throw new NotImplementedException();\r
+               }\r
+\r
+               #endregion\r
+#endif\r
+\r
                #endregion // Methods\r
        }\r
 }
\ No newline at end of file