Open main menu

CDOT Wiki β

Changes

PostgreSQL Adapter-nexj/schema-test

1,156 bytes added, 20:49, 26 January 2014
no edit summary
{{Admon/obsolete}}
 
<big><big> PostgreSQL Adapter for NexJ - Working Inside Schema 'test' </big></big>
{{NexJ_Express Index}}
===1- Initializing the SQL environment===
* ''PostgreSQLAdapter.java''
: When a connection is first established, this initial SQL statement should execute in MySQL, which is not the case for PostgreSQL, so the implementation was removed from PostgreSQLAdapter.java:
</source>
* ''postgresql_create.sql''
: This file was just created as a copy of mysql_create.sql, which was not the case for PostgreSQL again. So the line in the file is commented out removed for now. The file itself may be removed deleted later, if there was no need for it. It's Name of the script file is being called from returned in '''''getCreateEtcScriptName()'''''' in '''PostgreSQLSchemaManager.java'''
::
<source lang=java>
: After activating the connection, the database is locked.
===2- Modifying Syntax DATA DEFINITION LANGUAGE _ DDL ===== CREATING SCHEMA ===* List of Files needed to be modified *:src- [[ PostgreSQL_Adapter-nexj/SchemaManger | PostgreSQLSchemaManager.java ]] --- ([[SchemaBackup]]) // Extends SQLSchemaManager.java - class for reading, creating and upgrading the database schema: test- [[ PostgreSQL_Adapter-nexj/SchemaMangerTest | PostgreSQLSchemaManagerTest.java]] // Extends SQLSchemaManagerTest.java: Script - scripts are being processed through SQLDataTest.java 
* <u><code> CREATE TABLE </code></u>
: File to configure: ''PostgreSQLSchemaManager.java'':: 1- DATA TYPE: data types are changed in '''''<code> appendColumnType() </code>''''' based on each jdbc type's equivalent in PostgreSQL. :::*[http://db.apache.org/ddlutils/databases/postgresql.html mapping JDBC data types to PostgreSQL data types]:::*[http://en.wikibooks.org/wiki/Converting_MySQL_to_PostgreSQL#Data_Types comparison between Postgre and MySQL data types] :: 2- STORAGE ENGINE: In MySQL, the storage engine is set to a transactional safe engine such as [http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL#MySQL:InnoDB InnoDB], whereas PostgreSQL has a single built in engine. So, implementation of '''''<code> appendTableSuffix() </code>''''' in PostgreSQLManager.java was removed:: 3- CHARACTER SET: In MySQL, the character set should be defined when creating a table. Whereas in PostgreSQL when a database is created, the character set is set to 'UTF8' by default. :: 4- AUTO INCREMENT: PostgreSQL doesn't support 'auto_increment' as some other databases for a unique identifier column. There are two ways around this, 1- To create a 'sequence', 2- Use SERIAL, which is a macro around 'sequence'. SERIAL is an 'integer' and a 'sequence, with the column default to the sequences next value. As of postgreSQL 7.3, to make a serial column unique, it should be specified as a unique constraint or a primary key. More info @ [[PostgreSQL_Adapter-nexj/Resources#Mapping_Data_Types.2C_Metadata | PostgreSQL Resources]]::
<source lang=java>
/* MySQL version of creating table script */
)engine=InnoDB character set = utf8
</source>
::
<source lang=java>
/* PostgreSQL version of creating table script */
*<u><code> CREATE TEXT TABLE </code></u>
::The implementation in '''''<code> crateTextTable () </code>''''' is removed for now (base class's version is being called).:TODO To be checked if it's the case for PostgreSQL as well. 
* <u><code>CREATE INDEX </code></u>
:The implementation in '''''<code> createIndex() </code>''''' is removed for now (base class's version is being called).:TODO To be checked if it's the case for PostgreSQL as well.:Note- If there was a complain for duplicate index name, a fully qualified name can be used. Just note that PostgreSQL doesn't like fully qualified name as <code>table.indexname</code> for indexes or triggers, instead a '_' can be used: <code>table_indexname</code> * <code> <u>CREATE Trigger</u> <// code>:TODO To be checked if it's triggers are needed for PostgreSQL as well as MySQL. It's not an abstract method in '''''SQLSchemaManager.java'''''.: <code>'''''createTrigger()'''''</code> is added to '''''MySQLSchemaManager.java''''' ===UPDGRADING SCHEMA===* List of Files needed to be modified :src - [[ PostgreSQL_Adapter-nexj/SchemaManger | PostgreSQLSchemaManager.java ]] --- ([[SchemaBackup]]) // Extends SQLSchemaManager.java - class for reading, creating and upgrading the database schema: [[ PostgreSQL_Adapter-nexj/Upgrade | main.upgrade ]]: test- [[ PostgreSQL_Adapter-nexj/SchemaMangerTest | PostgreSQLSchemaManagerTest.java]] // Extends SQLSchemaManagerTest.java: Script - postgresql_drop.sql * <u><code> DROP TABLE </code></u> * <u><code> INSERT INTO TABLE </code></u> * <u><code> ALTER TABLE </code></u>
{|class="collapsible collapsed" style="border-style:solid;border-width:thin;border3-color:black"!alignDATA MANIPULATION LANGUAGE _ DML ="left" style="background-color:SteelBlue; font-weight:bold;border-style:solid;border-width:thin;padding: 2px 2px 2px 2px;"| '''* List of Files needed to Configure''' |- |be modified[[sampleProj]]:src:: - [[ PostgreSQL_Adapter-nexj/Adapter | PostgreSQLAdapter.java ]] // Extends SQLAdapter.java - SQL Persistence adapter, responsible for regular data queries (insert, select, delete):: [[ PostgreSQL_Adaptertest-nexj/SchemaManger | PostgreSQLSchemaManager.java ]] // Extends SQLSchemaManager.java - class for reading, creating and upgrading the database schema:: [[ PostgreSQL_Adapter-nexj/Upgrade | main.upgrade ]]: test:: [[ PostgreSQL_Adapter-nexj/AdapterTest | PostgreSQLAdapterTest.java ]]] // Extends SQLAdapterTest.java:: [[ PostgreSQL_Adapter-nexj/SchemaMangerTest | PostgreSQLSchemaManagerTest.java]] // Extends SQLSchemaManagerTest.java
: Script - scripts are being processed through SQLDataTest.java
:: postgresql_setuppostgresql_insert.sql:: TO be cond'|}