|
|
(6 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
− | <pre>
| + | {{Admon/obsolete}} |
− | 1/15/2011 (Peter Liu)
| |
− | Summary of preliminary source code inspection
| |
− |
| |
− | 1. the structure of the SQLAdapter class
| |
− | - constants
| |
− | - attributes
| |
− | - assoications
| |
− | - operations
| |
− | - conrete methods
| |
− | - some concrete methods return null
| |
− | - abstract methods
| |
− | - inner classes (Note: They could be informative for understanding the code.)
| |
− |
| |
− | 2. The class is well documented with javadoc comments.
| |
− | (Note: Generate documentation files of these two classes by using this command line:
| |
− | javadoc SQLAdapter.java MySQLAdapter.java.)
| |
− |
| |
− | 3. research strategy: divide and conquer, collaborate
| |
− |
| |
− | 4. research questions
| |
− | a. What do these methods do (i.e. behvioural/functional descriptions)?
| |
− | Give examples for illustration.
| |
− |
| |
− | b. What are the design/persistence concepts that are encoded by these methods?
| |
− | (e.g. object-relational mapping? building a server-specific SQL query?)
| |
− |
| |
− | 5. research tactics (for the coming two weeks; open for ideas)
| |
− | a. select one method or a group of related methods for investigation
| |
− |
| |
− | b. read all the javadoc comments in SQLAdapter carefully
| |
− |
| |
− | - examples: "Appends an SQL literal to a string buffer.",
| |
− | "Appends the specified SQL type conversion expression to a string buffer."
| |
− | "@param gen The SQLGenerator instance."
| |
− | "Appends a prefix hint to the SQL clause: HINT select ..."
| |
− | "Checks if a given vendor-specific SQL exception is a query timeout exception."
| |
− |
| |
− | c. investigate the types of some parameters (e.g. SQLGenerator, SQLJoin, Query)
| |
− |
| |
− | d. read the abstract methods that have been implemented in MySQLAdapter
| |
− |
| |
− | e. share the findings with each other
| |
− |
| |
− |
| |
− | 6. Three lists of methods are given below.
| |
− |
| |
− | --------------------------------------------------------------------------------------------------
| |
− |
| |
− | A. List of abstract methods
| |
− | Note: The list of abstract methods is organized by the way the methods appears in the *source code*
| |
− |
| |
− | MySQLAdapter
| |
− |
| |
− | 1. protected abstract Boolean isUnicode(
| |
− | RelationalSchema schema,
| |
− | ResultSet rs, int nColumn)
| |
− | throws SQLException; x
| |
| | | |
− |
| + | [[Default orderBy research 2/17/2011]] |
− | 2. protected abstract long getMinTime(); x
| |
| | | |
− |
| + | [[Grouping of methods to be implemented 2/09/2011]] |
− | 3. protected abstract long getMaxTime(); x
| |
| | | |
− |
| + | [[ Summary of JUnit errors 2/07/2011]] |
− | 4. public String getInitialSQL() // it returns null! xxx-overriden
| |
− |
| |
| | | |
− |
| + | [[Research Notes 1/25/2011]] |
− | 5. public abstract String getTestSQL(); x
| |
| | | |
− |
| + | [[Research Noets 1/15/2011]] |
− | 6. public abstract void appendMatchStatement(
| |
− | StringBuffer buf, String sAlias,
| |
− | Column column, SQLJoin join,
| |
− | Pair expression); x
| |
− | | |
− |
| |
− | 7. public abstract String appendStringLengthPrefix(
| |
− | StringBuffer buf,
| |
− | FunctionOperator op); x
| |
− | | |
− |
| |
− | 8. public abstract String appendSubstringPrefix(
| |
− | StringBuffer buf,
| |
− | FunctionOperator op); x
| |
− | | |
− |
| |
− | 9. public abstract boolean isLiteral(Primitive type, Object value); x
| |
− | | |
− | 10. public abstract void appendLiteral(
| |
− | StringBuffer buf,
| |
− | Primitive type, Object value); x
| |
− | | |
− | | |
− | 11. public abstract void appendTypeConversion(
| |
− | StringBuffer buf, Object op,
| |
− | Primitive fromType, Primitive type,
| |
− | SQLGenerator gen); x
| |
− | | |
− |
| |
− | 12. public abstract void appendPrefixHint(StringBuffer buf,
| |
− | Query query); x
| |
− | | |
− |
| |
− | 13. public abstract void appendInfixHint(StringBuffer buf,
| |
− | Query query); x
| |
− | | |
− |
| |
− | 14. public abstract void appendSuffixHint(StringBuffer buf,
| |
− | Query query); x
| |
− | | |
− |
| |
− | 15. public abstract void appendTableHint(StringBuffer buf,
| |
− | SQLJoin join,
| |
− | Query query); x
| |
− | | |
− |
| |
− | 16. public abstract void appendIdentityPrefix(StringBuffer buf,
| |
− | SQLInsert work); x
| |
− | | |
− |
| |
− | 17. public abstract boolean appendIdentityColumn(StringBuffer buf,
| |
− | SQLInsert work); x
| |
− | | |
− |
| |
− | 18. public abstract boolean appendIdentityValue(StringBuffer buf,
| |
− | SQLInsert work); x
| |
− | | |
− |
| |
− | 19. public abstract boolean appendIdentitySuffix(StringBuffer buf,
| |
− | SQLInsert work); x
| |
− | | |
− |
| |
− | 20. public abstract void bindIdentity(PreparedStatement stmt,
| |
− | SQLInsert work)
| |
− | throws SQLException; x
| |
− | | |
− |
| |
− | 21. public abstract Object getIdentityValue(PreparedStatement stmt,
| |
− | Column column,
| |
− | SQLInsert work)
| |
− | throws SQLException; x
| |
− | | |
− |
| |
− | 22. public abstract boolean appendNoRowsBlock(StringBuffer buf); x
| |
− | | |
− |
| |
− | 23. public abstract void appendNoRowsStart(StringBuffer buf); x
| |
− | | |
− |
| |
− | 24. public abstract void appendNoRowsEnd(StringBuffer buf); x
| |
− | | |
− | =========
| |
− |
| |
− | 25. public abstract boolean isBatchSupported(); x
| |
− | | |
− | 26. public abstract boolean isBatchUpdateCountSupported(); x
| |
− | | |
− | 27. public abstract boolean isBatchable(SQLWork work); x
| |
− | | |
− | ==========
| |
− |
| |
− | 28. protected abstract boolean isDateRangeException(
| |
− | SQLException e); x
| |
− | | |
− | 29. protected abstract boolean isQueryTimeoutException(
| |
− | SQLException e); x
| |
− | | |
− | 30. protected abstract boolean isDuplicateKeyException(
| |
− | SQLException e); x
| |
− | | |
− | ==========
| |
− |
| |
− | 31. protected abstract String getDuplicateKeyName(SQLException e); x
| |
− | | |
− |
| |
− | 32. protected abstract boolean indexNameMatches(
| |
− | Index index,
| |
− | String sPhysicalName); x
| |
− | | |
− | ==========
| |
− |
| |
− | 33. protected abstract boolean isDeadlockException(SQLException e); x
| |
− |
| |
− | 34. protected abstract boolean isLockTimeoutException(
| |
− | SQLException e); x
| |
− | | |
− | ==========
| |
− |
| |
− | 35. public abstract SQLSchemaManager createSchemaManager(); !!!-Grace -- This returns a new instance of PostgreSQLSchemaManager
| |
− | | |
− | (Note: It is used by the next concrete method
| |
− | createSchemaManager(RelationalDatabsae databse).)
| |
− |
| |
− |
| |
− |
| |
− | B. List of concrete methods in SQLAdapter that are OVERRIDEN in MySQLAdapter
| |
− |
| |
− | 1. appendLikeEscape
| |
− |
| |
− | 2. appendLiteral(StringBuffer buf, String value)
| |
− | (Note: Another appendLiteral is an abstract method.)
| |
− |
| |
− | 3. getConnection
| |
− |
| |
− | 4. getInitialSQL
| |
− |
| |
− | 5. getMatchJoin
| |
− |
| |
− | 6. setFetchSize
| |
− |
| |
− |
| |
− | C. List of methods that are ADDED to MySQLAdatper
| |
− |
| |
− | 1. appendMatchExpression
| |
− |
| |
− | 2. appendMatchLiteral
| |
− |
| |
− | </pre>
| |