{"record":{"id":"08bccb247e62a000","repo":"apache/shardingsphere","slug":"settypemap","errorCode":null,"errorMessage":"setTypeMap","messagePattern":"setTypeMap","errorType":"exception","errorClass":"SQLFeatureNotSupportedException","httpStatus":null,"severity":"error","filePath":"jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedOperationConnection.java","lineNumber":74,"sourceCode":"    \n    @Override\n    public final String nativeSQL(final String sql) throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"nativeSQL\");\n    }\n    \n    @Override\n    public final void abort(final Executor executor) throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"abort\");\n    }\n    \n    @Override\n    public final Map<String, Class<?>> getTypeMap() throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"getTypeMap\");\n    }\n    \n    @Override\n    public final void setTypeMap(final Map<String, Class<?>> map) throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"setTypeMap\");\n    }\n    \n    @Override\n    public int getNetworkTimeout() throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"getNetworkTimeout\");\n    }\n    \n    @Override\n    public void setNetworkTimeout(final Executor executor, final int milliseconds) throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"setNetworkTimeout\");\n    }\n    \n    @Override\n    public Array createArrayOf(final String typeName, final Object[] elements) throws SQLException {\n        throw new SQLFeatureNotSupportedException(\"createArrayOf\");\n    }\n    \n    @Override","sourceCodeStart":56,"sourceCodeEnd":92,"githubUrl":"https://github.com/apache/shardingsphere/blob/e952770a215630a3659c75d64369168cd3e26b82/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedOperationConnection.java#L56-L92","documentation":"ShardingSphere's JDBC driver does not implement the java.sql.Connection method setTypeMap (installing a custom SQL-to-Java type map on the connection). The abstract base class AbstractUnsupportedOperationConnection, which ShardingSphereConnection extends, overrides it as final and unconditionally throws SQLFeatureNotSupportedException. ShardingSphere does not maintain per-connection custom type mappings, so the mutator is permanently unsupported. The exception is thrown the moment the method is invoked on any connection produced by the ShardingSphere Driver.","triggerScenarios":"Calling Connection.setTypeMap(map) on a ShardingSphere connection.","commonSituations":"Legacy Oracle/JDBC code that maps SQL object types (STRUCT) to Java classes; ORM bootstrap code that installs type maps after obtaining a connection.","solutions":["Delete the setTypeMap call and rely on standard JDBC types or application-side conversion.","Route the type-map-dependent logic through a separate native DataSource.","Unwrap the real backend connection and set the type map on it directly if backend-local behavior is sufficient."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"boolean supportsOp = false;\ntry {\n    connection.getMetaData(); // connection is alive\n    // JDBC has no capability flag for individual methods; probe once per JVM:\n    supportsOp = probeSupport(connection); // reflective/one-time guarded call\n} catch (final SQLException ignored) {\n}\n// Simpler and recommended: capability-check by driver URL\nboolean isShardingSphere = url.startsWith(\"jdbc:shardingsphere:\");\nif (isShardingSphere) {\n    // skip the unsupported call, use the alternative API path\n}","typeGuard":null,"tryCatchPattern":"try {\n    connection.setTypeMap(/* args */);\n} catch (final SQLFeatureNotSupportedException e) {\n    // expected on ShardingSphere connections: fall back to supported API\n    log.debug(\"Driver does not support setTypeMap, using fallback\", e);\n}","preventionTips":["Never attempt custom STRUCT type mapping through ShardingSphere connections.","Check the JDBC URL before calling optional JDBC 4 methods: connections starting with jdbc:shardingsphere: never support the lob/network-timeout/client-info/callable APIs.","Catch java.sql.SQLFeatureNotSupportedException (parent of ShardingSphere's UnsupportedSQLOperationException) around optional driver-capability calls so the application degrades gracefully."],"tags":["jdbc","shardingsphere","unsupported-operation","connection-api"],"backgroundTag":null,"analyzedSha":"e952770a215630a3659c75d64369168cd3e26b82","analyzedAt":"2026-08-14T13:54:53.392Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}