Difference between revisions of "PostgreSQL Adapter Project - Code Review 1 Changes"

From CDOT Wiki
Jump to: navigation, search
(Classes)
Line 1: Line 1:
 
=General Research=
 
=General Research=
* Can postgreSQL be configured to have the where clause use case insensitive compare for string values? i.e. (<code>select 'Grace' = 'grace'</code> => should return true)
+
{| border="1" cellpadding="4" cellspacing="2" style="border: 1px solid black;border-collapse:collapse;"
* Add UUID generation to x64 versions
+
|-
* Does <code>extract(epoch from value)</code> return milliseconds?
+
! Task
* What encoding (UTF-8 and/or UTF-16) does PostgreSQL use for unicode? Can this be configured per column?
+
! Status
 
+
|-
 +
| Can postgreSQL be configured to have the where clause use case insensitive compare for string values? i.e. (<code>select 'Grace' = 'grace'</code> => should return true)
 +
|
 +
|-
 +
|Add UUID generation to x64 versions
 +
|
 +
|-
 +
|Does <code>extract(epoch from value)</code> return milliseconds?
 +
|
 +
|-
 +
|What encoding (UTF-8 and/or UTF-16) does PostgreSQL use for unicode? Can this be configured per column?
 +
|
 +
|-
 +
| How is a repeatable read with exclusive lock implemented?
 +
|
 +
|-
 +
|Does timestamp'value', handle java.sql.timestamp.toString()?
 +
|
 +
|-
 +
|Does to_timestamp support milliseconds?
 +
|
 +
|-
 +
| Does postgreSQL have constants for boolean values?
 +
|
 +
|}
  
 
=Classes=
 
=Classes=
 
==PostgreSQLAdapter==
 
==PostgreSQLAdapter==
* Add parentheses to enforce operation order
 
**appendMatchExpression
 
**
 
 
* Implement setQueryTime with Timer object
 
* Implement setQueryTime with Timer object
 
** if code variation is limited, extract to SQLAdapter
 
** if code variation is limited, extract to SQLAdapter
* Use toMetadataCase and toDatabaseCase instead of toLowerCase/toUpperCase
 
** indexNameMatches
 
 
* Refactor escaping literals
 
* Refactor escaping literals
 
** May be make use isLiteral
 
** May be make use isLiteral
* Implement query locking for aggregate queries (i.e. repeatable read + exclusive lock)
+
*appendMatchExpression
 
+
** Add parentheses to enforce operation order
 
+
** Remove implementation of MatchNode.WEIGHT.SYMBOL
 +
* indexNameMatches
 +
** Use toMetadataCase and toDatabaseCase instead of toLowerCase/toUpperCase
 +
* appendSuffixHint
 +
** Implement query locking for aggregate queries (i.e. repeatable read + exclusive lock)
 +
* appendLiteral
 +
** Check if timestamp'' accepts java.sql.timestamp.toString() format
 +
** If boolean constants are supported, use those instead of string 't'/'f'
 +
* getBind
 +
** Check if override is necessary
 +
* isLiteral
 +
** Use string.length and binary.getSize to ensure less than 1GB
 +
* appendTypeConversion
 +
** Ensure to_timestamp accepts milliseconds
 +
** Ensure case Primitive.TIMESTAMP_ORDINAL: returns milliseconds (extract(epoch from
 +
* isUnicode
 +
** Check if column is set to use UTF-16 encoding
 +
** TRUE == is a unicode column FALSE == is not a unicode column null == unknown (e.g. number column or column not present)
 +
* s_bindFactoryArray[Primitive.BINARY_ORDINAL]
 +
** Use reflection to make use of postgresql jdbc objects and methods to handle large objects
 +
* DUPLICATE_KEY_NAME_PATTERN
 +
** Remove
 
==PostgreSQLSchemaManager==
 
==PostgreSQLSchemaManager==
  

Revision as of 12:16, 20 April 2011

General Research

Task Status
Can postgreSQL be configured to have the where clause use case insensitive compare for string values? i.e. (select 'Grace' = 'grace' => should return true)
Add UUID generation to x64 versions
Does extract(epoch from value) return milliseconds?
What encoding (UTF-8 and/or UTF-16) does PostgreSQL use for unicode? Can this be configured per column?
How is a repeatable read with exclusive lock implemented?
Does timestamp'value', handle java.sql.timestamp.toString()?
Does to_timestamp support milliseconds?
Does postgreSQL have constants for boolean values?

Classes

PostgreSQLAdapter

  • Implement setQueryTime with Timer object
    • if code variation is limited, extract to SQLAdapter
  • Refactor escaping literals
    • May be make use isLiteral
  • appendMatchExpression
    • Add parentheses to enforce operation order
    • Remove implementation of MatchNode.WEIGHT.SYMBOL
  • indexNameMatches
    • Use toMetadataCase and toDatabaseCase instead of toLowerCase/toUpperCase
  • appendSuffixHint
    • Implement query locking for aggregate queries (i.e. repeatable read + exclusive lock)
  • appendLiteral
    • Check if timestamp accepts java.sql.timestamp.toString() format
    • If boolean constants are supported, use those instead of string 't'/'f'
  • getBind
    • Check if override is necessary
  • isLiteral
    • Use string.length and binary.getSize to ensure less than 1GB
  • appendTypeConversion
    • Ensure to_timestamp accepts milliseconds
    • Ensure case Primitive.TIMESTAMP_ORDINAL: returns milliseconds (extract(epoch from
  • isUnicode
    • Check if column is set to use UTF-16 encoding
    • TRUE == is a unicode column FALSE == is not a unicode column null == unknown (e.g. number column or column not present)
  • s_bindFactoryArray[Primitive.BINARY_ORDINAL]
    • Use reflection to make use of postgresql jdbc objects and methods to handle large objects
  • DUPLICATE_KEY_NAME_PATTERN
    • Remove

PostgreSQLSchemaManager

Scripts

postgrecreate.sql

postgresetup.sql

postgredrop.sql