src/main/core-api/java/com/mysql/cj/MysqlType.java (20 lines): - line 181: // TODO If MySQL server run with the MAXDB SQL mode enabled, TIMESTAMP is identical with DATETIME. If this mode is enabled at the time that a table is created, TIMESTAMP columns are created as DATETIME columns. - line 286: BIT("BIT", Types.BIT, Boolean.class, 0, MysqlType.IS_DECIMAL, 1L, "[(M)]"), // TODO maybe precision=8 ? - line 415: * Protocol: no concrete type on the wire TODO: really? - line 423: GEOMETRY("GEOMETRY", Types.BINARY, null, 0, MysqlType.IS_NOT_DECIMAL, 65535L, ""), // TODO check precision, it isn't well documented, only mentioned that WKB format is represented by BLOB - line 450: // TODO parse complex names like [NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name] - line 502: return GEOMETRY; // TODO think about different MysqlTypes for Spatial Data Types - line 515: // TODO Exception: If the REAL_AS_FLOAT SQL mode is enabled, REAL is a synonym for FLOAT rather than DOUBLE. - line 524: // TODO FLOAT(p) [UNSIGNED] [ZEROFILL]. If p is from 0 to 24, the data type becomes FLOAT with no M or D values. If p is from 25 to 53, the data type becomes DOUBLE with no M or D values. - line 617: return GEOMETRY; // TODO think about different MysqlTypes for Spatial Data Types - line 637: case Types.NCHAR: // TODO check that it's correct - line 650: case Types.BLOB: // TODO check that it's correct - line 651: case Types.JAVA_OBJECT: // TODO check that it's correct - line 654: case Types.LONGNVARCHAR: // TODO check that it's correct - line 655: case Types.CLOB: // TODO check that it's correct - line 656: case Types.NCLOB: // TODO check that it's correct - line 673: case Types.NVARCHAR: // TODO check that it's correct - line 674: case Types.DATALINK: // TODO check that it's correct - line 675: case Types.SQLXML: // TODO check that it's correct - line 685: // TODO check next types - line 709: // TODO use MysqlTypes here ? src/main/protocol-impl/java/com/mysql/cj/protocol/x/XMessageBuilder.java (11 lines): - line 425: // TODO: encoding (character_set_client?) - line 676: // TODO this works for tables too - line 831: // TODO: encoding (character_set_client?) - line 843: // TODO: encoding for all this? - line 877: // TODO: encoding for all this? - line 930: // TODO: >> serverName. Is this of any use in our X Protocol exchange? Should be defined to be blank or something. - line 942: // TODO: better exception, should introduce a new exception class for auth? - line 951: // TODO ((NameCallback) c).setName(user); - line 954: // TODO ((PasswordCallback) c).setPassword(password.toCharArray()); - line 967: // TODO: >> serverName. Is this of any use in our X Protocol exchange? Should be defined to be blank or something. - line 979: // TODO: better exception, should introduce a new exception class for auth? src/main/user-impl/java/com/mysql/cj/jdbc/result/ResultSetImpl.java (10 lines): - line 253: // TODO which database to use, from connection or from statement? - line 1140: throw new RuntimeException(e); // FIXME: Need to evolve interface - line 1168: // TODO Field sets binary and blob flags if the length of BIT field is > 1; is it needed at all? - line 2111: throw new RuntimeException(e); // FIXME: Need to evolve public interface - line 2126: throw new RuntimeException(e); // FIXME: Need to evolve public interface - line 2147: throw new RuntimeException(e); // TODO: FIXME: Need to evolve public interface - line 2171: throw new RuntimeException(e); // TODO: FIXME: Need to evolve public interface - line 2193: throw new RuntimeException(e); // TODO: FIXME: Need to evolve public interface - line 2209: throw new RuntimeException(e); // TODO: FIXME: Need to evolve public interface - line 2227: throw new RuntimeException(e); // TODO: FIXME: Need to evolve public interface src/main/protocol-impl/java/com/mysql/cj/protocol/x/XProtocolDecoder.java (10 lines): - line 154: // TODO Auto-generated method stub - line 160: // TODO Auto-generated method stub - line 166: // TODO Auto-generated method stub - line 172: // TODO Auto-generated method stub - line 178: // TODO Auto-generated method stub - line 184: // TODO Auto-generated method stub - line 233: // TODO: optimization possibilities include using int/long if the digits is < X and scale = 0 - line 314: // TODO: charset - line 317: // TODO: charset mess here - line 327: // TODO Auto-generated method stub src/build/java/instrumentation/TranslateExceptions.java (10 lines): - line 165: // TODO: Does it's own typical exception wrapping, could be instrumented with different catch method - line 170: // TODO: Does it's own typical exception wrapping, could be instrumented with different catch method - line 175: // TODO: Does it's own typical exception wrapping, could be instrumented with different catch method - line 485: * TODO: - line 491: * TODO: - line 499: * TODO: - line 506: * TODO: - line 513: * TODO: - line 520: * TODO: - line 527: * TODO: src/main/user-impl/java/com/mysql/cj/jdbc/BlobFromLocator.java (9 lines): - line 162: // TODO: Make fetch size configurable - line 178: // FIXME: Needs to use identifiers for column/table names - line 201: // FIXME: Have this passed in instead - line 262: // FIXME: Needs to use identifiers for column/table names - line 279: // FIXME: Have this passed in instead - line 326: // FIXME: Needs to use identifiers for column/table names - line 346: // FIXME: Have this passed in instead - line 388: // FIXME: Needs to use identifiers for column/table names - line 409: // FIXME: Have this passed in instead src/main/protocol-impl/java/com/mysql/cj/protocol/x/XProtocol.java (7 lines): - line 181: this.messageToProtocolEntityFactory.put(ColumnMetaData.class, new FieldFactory("latin1")); // TODO configure metadata character set from server session - line 252: } // TODO Log "Compression negotiation failed. Connection will proceed uncompressed." - line 274: } // TODO Log "Compression negotiation failed. Connection will proceed uncompressed." - line 465: private String currUser = null, currPassword = null, currDatabase = null; // TODO remove these variables after implementing mysql_reset_connection() in reset() method - line 519: // TODO: can use a simple default for this as we don't need metadata. need to prevent against exceptions though - line 978: // TODO: Figure out how this is relevant for X Protocol client Session - line 983: //TODO: expose this via ServerVersion so calls look like x.getServerVersion().meetsMinimum(major, minor, subminor) src/main/protocol-impl/java/com/mysql/cj/protocol/x/FieldFactory.java (7 lines): - line 90: // TODO: support custom character set - line 168: if (collationIndex == 33) { // TODO what if other utf8 or utf8mb4 collation ? - line 183: // TODO: longlong - line 185: throw new WrongArgumentException("TODO: unknown field type: " + type); - line 202: // TODO: figure out ranges in detail and test them - line 232: // TODO: longlong - line 234: throw new WrongArgumentException("TODO: unknown field type: " + type); src/main/core-impl/java/com/mysql/cj/NativeSession.java (6 lines): - line 140: // TODO do we need different types of physical connections? - line 162: // TODO: this method should not be used in user-level APIs - line 189: // TODO: we should examine the call flow here, we shouldn't have to know about the socket connection but this should be addressed in a wider scope. - line 203: //this.protocol = null; // TODO actually we shouldn't remove protocol instance because some of its methods can be called after closing the socket - line 265: // TODO Turn this feature back on as soon as the server bug is fixed. Consider making it version specific. - line 444: // TODO what's the purpose of this variable? src/main/user-impl/java/com/mysql/cj/jdbc/StatementImpl.java (5 lines): - line 104: protected NativeMessageBuilder commandBuilder = null; // TODO use shared builder - line 417: // TODO souldn't we also clear warnings from _server_ ? - line 2057: // FIXME: can't break interface at this point - line 2125: // FIXME: Can't break interface atm, we'll get the exception later when you try and do something useful with a closed statement... - line 2149: // FIXME: Can't break interface atm, we'll get the exception later when you try and do something useful with a closed statement... src/main/user-impl/java/com/mysql/cj/jdbc/CallableStatement.java (5 lines): - line 286: // TODO Adjust for pseudo-boolean ? - line 900: // TODO There is something strange here: - line 2029: registerOutParameter(parameterIndex, mysqlType); // TODO is that correct that we ignore scale? - line 2034: registerOutParameter(parameterIndex, sqlType); // TODO is that correct that we ignore scale? - line 2047: registerOutParameter(parameterIndex, mysqlType); // TODO is that correct that we ignore typeName? src/main/protocol-impl/java/com/mysql/cj/protocol/a/NativeProtocol.java (5 lines): - line 1017: // TODO why doing this? - line 1069: // TODO how to handle executeTopLevelOnly in such case ? - line 1119: // TODO how to handle executeTopLevelOnly in such case ? - line 2178: selectedTz = TimeZone.getTimeZone(ZoneId.of(connectionTimeZone)); // TODO use ZoneId.of(String zoneId, Map aliasMap) for custom abbreviations support - line 2184: // TODO don't send 'SET SESSION time_zone' if time_zone is already equal to the selectedTz (but it requires time zone detection) src/main/protocol-impl/java/com/mysql/cj/protocol/x/XProtocolRow.java (4 lines): - line 66: // TODO: implement remaining types when server is ready - line 74: // TODO scale is unavailable from X Protocol - line 96: // TODO: do we need to really do anything special with JSON? just return correct stuff with getObject() I guess - line 118: // TODO scale is unavailable from X Protocol src/main/protocol-impl/java/com/mysql/cj/protocol/x/XServerCapabilities.java (4 lines): - line 98: // TODO Auto-generated method stub - line 104: // TODO Auto-generated method stub - line 109: // TODO Auto-generated method stub - line 120: // TODO Auto-generated method stub src/main/protocol-impl/java/com/mysql/cj/protocol/x/SyncMessageReader.java (4 lines): - line 140: // TODO close socket? - line 165: // TODO close socket? - line 252: int millis = 5000; // TODO expose via properties ? - line 277: private static final long POLL_TIMEOUT = 100; // TODO expose via connection property src/main/core-impl/java/com/mysql/cj/ServerPreparedQuery.java (4 lines): - line 54: // TODO should not be protocol-specific - line 263: public NativePacketPayload sendExecutePacket(NativePacketPayload packet, String queryAsString) { // TODO queryAsString should be shared instead of passed - line 323: // TODO queryAsString should be shared instead of passed - line 478: // TODO consider to use more precise type than just Closable src/main/core-impl/java/com/mysql/cj/conf/DefaultPropertySet.java (3 lines): - line 94: // TODO improve message - line 111: // TODO improve message - line 181: // TODO do we need to remove next properties (as it was before)? src/main/user-impl/java/com/mysql/cj/xdevapi/CollectionImpl.java (3 lines): - line 68: // TODO should also check that the table has a DbObjectType.COLLECTION type - line 76: throw new FeatureNotAvailableException("TODO: "); - line 142: // TODO check MySQL > 8.0.1 for built in solution, like passing ifExists to dropView src/main/protocol-impl/java/com/mysql/cj/protocol/x/StatementExecuteOkBuilder.java (3 lines): - line 73: this.lastInsertId = ((XSessionStateChanged) notice).getValue().getVUnsignedInt(); // TODO: handle > 2^63-1? - line 76: this.rowsAffected = ((XSessionStateChanged) notice).getValue().getVUnsignedInt(); // TODO: handle > 2^63-1? - line 91: // TODO do something with notices, expose them to client src/main/user-impl/java/com/mysql/cj/xdevapi/ExprParser.java (3 lines): - line 865: // TODO charset? - line 977: // TODO: we need to propagate the appropriate encoding here? it's ascii but it might not *always* be a superset encoding?? - line 1171: // TODO unit test src/main/core-impl/java/com/mysql/cj/NativeQueryBindings.java (3 lines): - line 248: binding.setBinding(x, MysqlType.TEXT, this.numberOfExecutions, this.sendTypesToServer); // TODO use length to find right TEXT type - line 277: binding.setBinding(x, MysqlType.BLOB, this.numberOfExecutions, this.sendTypesToServer); // TODO use length to find the right BLOB type - line 309: binding.setBinding(x, MysqlType.BINARY, this.numberOfExecutions, this.sendTypesToServer); // TODO VARBINARY ? src/main/user-impl/java/com/mysql/cj/jdbc/DatabaseMetaData.java (3 lines): - line 205: static int MAX_BUFFER_SIZE = 65535; // TODO find a way to use actual (not default) value. - line 620: case DECIMAL: // TODO is it right? DECIMAL isn't a floating-point number... - line 1434: // TODO add missed types (aliases) src/main/core-api/java/com/mysql/cj/CharsetMapping.java (3 lines): - line 576: // TODO turn it to protected when com.mysql.cj.xdevapi.ColumnImpl can use dynamic maps - line 585: // TODO turn it to protected when com.mysql.cj.xdevapi.ColumnImpl can use dynamic maps - line 645: // TODO turn it to protected when com.mysql.cj.protocol.x.FieldFactory can use dynamic maps src/main/user-impl/java/com/mysql/cj/jdbc/MysqlXAConnection.java (3 lines): - line 155: // TODO: Cache this for lifetime of XAConnection - line 218: return XA_OK; // TODO: Check for read-only - line 310: // TODO: Cache this for lifetime of XAConnection src/main/core-api/java/com/mysql/cj/exceptions/ExceptionFactory.java (3 lines): - line 78: // TODO: Decide whether we need to intercept exceptions at this level - line 142: // TODO: Decide whether we need to intercept exceptions at this level - line 159: // TODO: Decide whether we need to intercept exceptions at this level src/main/core-impl/java/com/mysql/cj/result/SqlDateValueFactory.java (3 lines): - line 92: // TODO: need column context - line 101: // TODO: need column context - line 112: // TODO: need column context src/main/user-impl/java/com/mysql/cj/xdevapi/SchemaImpl.java (3 lines): - line 78: // TODO: verify quoting rules - line 101: // TODO we need to consider lower_case_table_names server variable for some cases - line 217: // TODO check MySQL > 8.0.1 for built in solution, like passing ifExists to dropView src/main/user-impl/java/com/mysql/cj/jdbc/result/UpdatableResultSet.java (2 lines): - line 610: // FIXME: What about no table? - line 1165: // TODO: FIXME: Issue warning when asked for updatable result set, but result set is not updatable src/main/user-impl/java/com/mysql/cj/xdevapi/SessionImpl.java (2 lines): - line 204: // TODO custom properties? - line 208: // TODO modify for multi-host connections src/main/core-impl/java/com/mysql/cj/result/SqlTimeValueFactory.java (2 lines): - line 107: // TODO: need column context - line 118: // TODO: need column context src/main/user-impl/java/com/mysql/cj/jdbc/ClientPreparedStatement.java (2 lines): - line 718: batchedStatement = /* FIXME -if we ever care about folks proxying our JdbcConnection */ - line 2005: // FIXME: Won't work for Non-MYSQL SQLXMLs src/main/protocol-impl/java/com/mysql/cj/protocol/a/NativeAuthenticationProvider.java (2 lines): - line 143: // TODO: better messaging - line 146: // TODO: better messaging src/main/protocol-impl/java/com/mysql/cj/protocol/x/XServerSession.java (2 lines): - line 231: // TODO Auto-generated method stub - line 237: // TODO Auto-generated method stub src/main/core-impl/java/com/mysql/cj/DataStoreMetadataImpl.java (2 lines): - line 41: // TODO: verify quoting rules - line 53: // TODO: verify quoting rules src/main/core-impl/java/com/mysql/cj/log/ProfilerEventImpl.java (2 lines): - line 237: // TODO charset? - line 245: // TODO charset (Bug#41172 ?) src/main/protocol-impl/java/com/mysql/cj/protocol/a/result/ResultsetRowsCursor.java (2 lines): - line 244: // TODO this is not the right place for this code, should be in protocol - line 280: // TODO consider to handle additional List addedRows along with fetchedRows src/main/core-api/java/com/mysql/cj/conf/PropertyDefinitions.java (2 lines): - line 75: public static final String SYSP_testsuite_loadstoreperf_tabletype /* */ = "com.mysql.cj.testsuite.loadstoreperf.tabletype"; // TODO document allowed types - line 787: // TODO currently is not used !!! src/main/user-impl/java/com/mysql/cj/jdbc/ConnectionImpl.java (2 lines): - line 1340: // TODO Turn this feature back on as soon as the server bug is fixed. Consider making it version specific. - line 1619: // FIXME: Create warnings if can't create results of the given type or concurrency src/main/user-impl/java/com/mysql/cj/xdevapi/ColumnImpl.java (2 lines): - line 156: return CharsetMapping.getStaticCollationNameForCollationIndex(this.field.getCollationIndex()); // TODO use CharsetSettings method - line 161: return CharsetMapping.getStaticMysqlCharsetNameForCollationIndex(this.field.getCollationIndex()); // TODO use CharsetSettings method src/main/core-impl/java/com/mysql/cj/ServerPreparedQueryTestcaseGenerator.java (1 line): - line 31: //TODO should not be protocol-specific src/main/core-impl/java/com/mysql/cj/conf/url/LoadBalanceConnectionUrl.java (1 line): - line 50: // TODO: Validate the hosts list: there can't be any two hosts with same host:port. src/main/user-impl/java/com/mysql/cj/xdevapi/RowImpl.java (1 line): - line 185: // TODO: charset src/main/protocol-impl/java/com/mysql/cj/protocol/x/XpluginStatementCommand.java (1 line): - line 29: // TODO add support for "ping", "list_clients", "kill_client" and "ensure_collection" commands src/main/user-impl/java/com/mysql/cj/jdbc/jmx/LoadBalanceConnectionGroupManager.java (1 line): - line 59: e.printStackTrace(); // TODO log error normally instead of sysout src/main/core-impl/java/com/mysql/cj/SimpleQuery.java (1 line): - line 23: //TODO should not be protocol-specific src/main/core-api/java/com/mysql/cj/result/Field.java (1 line): - line 149: // TODO: this becomes moot when DBMD results aren't built from ByteArrayRow src/main/user-impl/java/com/mysql/cj/xdevapi/CreateIndexParams.java (1 line): - line 224: // TODO pure "TEXT" is not allowed as a type, server requires the length specification src/main/protocol-impl/java/com/mysql/cj/protocol/a/ColumnDefinitionFactory.java (1 line): - line 48: // TODO Auto-generated method stub src/main/user-impl/java/com/mysql/cj/xdevapi/AbstractFilterParams.java (1 line): - line 94: // TODO: does this support placeholders? how do we prevent it? src/main/protocol-impl/java/com/mysql/cj/protocol/a/result/NativeResultset.java (1 line): - line 155: // TODO release resources of nextResultset, close streamer src/main/user-impl/java/com/mysql/cj/jdbc/PreparedStatementWrapper.java (1 line): - line 872: || interfaceClassName.equals("java.sql.Wrapper") || interfaceClassName.equals("java.sql.PreparedStatement"); // TODO check other interfaces src/main/core-api/java/com/mysql/cj/util/Util.java (1 line): - line 175: * TODO: consider overloading this method with a version that uses Super Type Tokens instead of Class in order to support parameterized types. src/main/user-impl/java/com/mysql/cj/xdevapi/DbDocValueFactory.java (1 line): - line 63: return null; // TODO: ? JsonValueLiteral.NULL; src/main/core-impl/java/com/mysql/cj/NativeQueryBindValue.java (1 line): - line 165: this.calendar = null; // TODO how is it set again? src/main/user-impl/java/com/mysql/cj/jdbc/ha/LoadBalancedConnectionProxy.java (1 line): - line 577: if (this.isClosed && !allowedOnClosedConnection(method) && method.getExceptionTypes().length > 0) { // TODO remove method.getExceptionTypes().length ? src/main/core-impl/java/com/mysql/cj/protocol/ExportControlled.java (1 line): - line 248: // TODO: use standard decoders with Java 6+ src/main/user-impl/java/com/mysql/cj/xdevapi/ExprUtil.java (1 line): - line 339: // TODO other types: LocalDate... src/main/user-impl/java/com/mysql/cj/jdbc/NonRegisteringDriver.java (1 line): - line 280: // TODO Is it true? DatabaseMetaData.supportsANSI92EntryLevelSQL() returns true... src/main/core-impl/java/com/mysql/cj/result/AbstractNumericValueFactory.java (1 line): - line 55: if (s.charAt(0) == '-' // TODO shouldn't we check the length as well? src/main/user-api/java/com/mysql/cj/xdevapi/Collection.java (1 line): - line 49: // TODO we have to keep add(DbDoc document) method because the DbDoc does extend the TreeMap, src/main/core-impl/java/com/mysql/cj/conf/IntegerPropertyDefinition.java (1 line): - line 68: // TODO check bounds src/main/core-api/java/com/mysql/cj/result/Row.java (1 line): - line 68: // TODO check that "if the value is SQL NULL, the value returned is null" is correctly implemented src/main/core-impl/java/com/mysql/cj/CancelQueryTaskImpl.java (1 line): - line 35: //TODO should not be protocol-specific src/main/user-impl/java/com/mysql/cj/jdbc/Blob.java (1 line): - line 295: // TODO: Do this without copying byte[]s by maintaining some end pointer on the original data src/main/user-impl/java/com/mysql/cj/jdbc/EscapeProcessor.java (1 line): - line 269: // FIXME: Let MySQL do this, however requires lightweight parsing of statement src/main/protocol-impl/java/com/mysql/cj/protocol/x/XMessage.java (1 line): - line 58: // TODO Auto-generated method stub src/main/user-impl/java/com/mysql/cj/jdbc/exceptions/SQLError.java (1 line): - line 213: // TODO should not throw SQLException src/main/core-api/java/com/mysql/cj/QueryInfo.java (1 line): - line 566: /* TODO: First char based logic is questionable. Consider replacing by statement check. */ src/main/core-impl/java/com/mysql/cj/result/BooleanValueFactory.java (1 line): - line 105: if (s.charAt(0) == '-' // TODO shouldn't we check the length as well? src/main/user-impl/java/com/mysql/cj/xdevapi/ExprUnparser.java (1 line): - line 278: // TODO: make sure this is correct src/main/core-impl/java/com/mysql/cj/conf/url/ReplicationConnectionUrl.java (1 line): - line 81: // TODO: Validate the hosts list: there can't be any two hosts with same host:port. src/main/user-impl/java/com/mysql/cj/jdbc/SuspendableXAConnection.java (1 line): - line 63: // TODO: check for same GTRID, but different BQUALs...MySQL doesn't allow this yet src/main/protocol-impl/java/com/mysql/cj/protocol/a/MysqlTextValueDecoder.java (1 line): - line 262: return s.length() == DATE_BUF_LEN && s.charAt(4) == '-' && s.charAt(7) == '-'; // TODO also check proper date parts ranges src/main/core-impl/java/com/mysql/cj/result/DefaultValueFactory.java (1 line): - line 48: // TODO we always check initial value here, whatever the setupServerForTruncationChecks() does for writes. src/main/protocol-impl/java/com/mysql/cj/protocol/x/MessageConstants.java (1 line): - line 80: // TODO Find a clever way to generate both maps with a single set of input pairs. src/main/protocol-impl/java/com/mysql/cj/protocol/x/XProtocolRowInputStream.java (1 line): - line 37: private Row next; // TODO document src/main/user-impl/java/com/mysql/cj/jdbc/StatementWrapper.java (1 line): - line 687: || interfaceClassName.equals("java.sql.Wrapper"); // TODO check other interfaces src/main/user-api/java/com/mysql/cj/jdbc/JdbcConnection.java (1 line): - line 194: // TODO this and other multi-host connection specific methods should be moved to special interface src/main/protocol-impl/java/com/mysql/cj/protocol/a/CompressedPacketSender.java (1 line): - line 32: * TODO: add support for pre-allocated buffer for large packets (if there's a demonstrable perf improvement)