Open main menu

CDOT Wiki β

Changes

PostgreSQL Adapter Project - Extending SQLSchemaManager

2,347 bytes added, 19:33, 26 January 2014
no edit summary
<big><big> PostgreSQL Adapter for NexJ - Extending SQL Schema Manager</big></big>{{NexJ_Express IndexAdmon/obsolete}}
[[category: NexJ Express PostgreSQL]][[category: NexJ Express Development]] [[category: NexJ Express]]
 
==Summary==
* SQLSchemaManager is used in maintaining database schemas (DDL)
== Task Summary Tasks ==
{| border="1" cellpadding="4" cellspacing="2" style="border: 1px solid black;border-collapse:collapse;"
|-
|-
| Research and add Maximum column Precision
|DONE|DONE
|-
| Figure out Data Type Mapping
|DONE| DONE|-| Implement <code>analyzeTable</code>| '''Ask NexJ, what this should do'''
|
|-
| Implement <code>appendColumnType()</code> method
|DONE|DONE
|-
| Implement <code>appendConcatenate()</code> method
|DONE|DONE
|-
| Implement <code>appendPrint()</code> method
|DONE|DONE
|-
| Implement <code>appendUpgradeStepEnd()</code> method
|DONE|DONE
|-
| Implement <code>appendUpgradeStepStart()</code> method<br/> '''NOTE''': Delimiter cannot be changed in Postgre<br/> Used begin; commit; block|DONE|DONE
|-
| Implement <code>appendTSExtract()</code> method
|DONE|DONE|-| Add <code>appendTSField</code> method <br /> *NOTE: It is used in <code>appendTSExtract()</code> method,<br /> and it is quite similar to the one in MySQL. <br />(Suggest to NexJ to add it to the super class)| DONE| DONE
|-
| Implement <code>appendTSIncrement()</code> method
|DONE|DONE
|-
| Implement <code>getCreateEtcScriptName()</code> method
|DONE|DONE
|-
| Implement <code>getDefaultIndexspace()</code> method
|DONE|DONE
|-
| Implement <code>getDefaultLongspace()</code> method
|DONE|DONE
|-
| Implement <code>getDefaultTablespace()</code> method
|DONE|DONE
|-
| Implement <code>getDropEtcScriptName()</code> method
|?
|
|-
| Implement <code>getDynamicSQLAppender()</code> method
|DONE|DONE
|-
| Implement <code>getGUIDExpr()</code> method
|DONE|DONE
|-
| Implement <code>getNowExpr()</code> method
|DONE|DONE
|-
| Implement <code>getSeparator()</code> method
|DONE|DONE
|-
| Implement <code>getSetupEtcScriptName()</code> method
|DONE|DONE|-| Override <code>renameTable</code>[http://www.postgresql.org/docs/8.0/static/sql-altertable.html] (+ recreate functions)| DONE| DONE|-| Override <code>renameColumn</code>[http://www.postgresql.org/docs/8.0/static/sql-altertable.html]| DONE| DONE|-| Override <code>renameIndex</code>[http://www.postgresql.org/docs/8.0/static/sql-alterindex.html]| DONE| DONE|-| Override <code>getIndexName()</code>| DONE| DONE|-| Override <code>createIndex(Index)</code> to add full text search| DONE| DONE|-| Override <code>dropTable(table)</code> (+ drop functions)| DONE| DONE|-| Port <code>mysql_insert.sql</code> script to <code>postgresql_insert</code>| DONE| DONE|-| Add <code>dropTriggers(columnName, table)</code> <br/>to drop full-text triggers when column is dropped| DONE| DONE|-| Add <code>dropTrigerFunctions(column)</code> <br/>to drop full-text trigger functions when column or table is dropped| DONE| DONE
|}
== Task Details ==
=== Extend SQLSchemaManager to support PostgreSQL ===
Create a new class PostgreSQLSchemaManager by extending SQLSchemaManager and implementing all necessary abstract classesmethods
=== Research and add Maximum column Precision ===
=== Figure out Data Type Mapping ===
http://www.postgresql.org/docs/current/static/datatype.html
* Go over all data types offered in PostgreSQL
* Map types defined in <code>Primitive</code> class
* use logic and mapping to append required column data types to incoming string.
* Test it
 
=== Implement <code>appendTSExtract()</code> method ===
This method extracts a field from a timestamp. It uses <code>SQLSubstReaser</code>'s enums.
* Research the extract function in the PostgreSQL
* Implement it in Adapter
* Test it<br />
 
*NOTE: The logic to implement the extract function is similar to the one in MySQL Adapter. It could be a good idea to suggest to NexJ to add the <code>appendTSField</code> method to the super class, so we are not repeating the code. (Can be done in the Optimization stage)
 
==References==
[http://jdbc.postgresql.org/documentation/84/connect.html#connection-parameters Connection Properties]
[http://www.postgresql.org/docs/8.0/static/sql-commands.html#AEN36282 SQL Commands supported by PostgreSQL]