Difference between revisions of "SoC postgres support"

From GeeklogWiki
Jump to: navigation, search
m (separation of content that prepared SoC, and (future) content about the concrete summer project advancement)
(link to project repository)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<center>(This is an idea page for the [[Google Summer of Code]])</center>
+
This is one of the projects to be implemented during the [[Google Summer of Code]] 2009.
  
=== Project info and advancement during Summer of Code ==
+
'''Student:''' Stan Palatnik, '''Mentor:''' Vincent Furia<br/>
 +
[http://project.geeklog.net/cgi-bin/hgwebdir.cgi/gsoc-2009-spalatnik/ Project repository]
 +
 
 +
 
 +
== Project info and advancement during Summer of Code ==
  
 
(to be written)
 
(to be written)
  
  
=== Pre-Summer of Code idea discussion & preparation ===
+
== Pre-Summer of Code idea discussion & preparation ==
 
 
  
== Incentive ==
+
=== Incentive ===
  
 
Geeklog currently supports MySQL and MS SQL Server for the database. Recently, we have had an increasing amount of requests to add support for [http://www.postgresql.org/ PostgreSQL] (aka Postgres).
 
Geeklog currently supports MySQL and MS SQL Server for the database. Recently, we have had an increasing amount of requests to add support for [http://www.postgresql.org/ PostgreSQL] (aka Postgres).
  
  
== Details ==
+
=== Details ===
  
 
Development of Geeklog started back in 2000 when most of today's database abstraction layers didn't even exist yet. It therefore uses its own (thin) abstraction layer and will have to continue to do so for the foreseeable future.
 
Development of Geeklog started back in 2000 when most of today's database abstraction layers didn't even exist yet. It therefore uses its own (thin) abstraction layer and will have to continue to do so for the foreseeable future.
Line 25: Line 28:
  
  
== Level of Difficulty ==
+
=== Level of Difficulty ===
  
 
''medium to high''
 
''medium to high''
Line 31: Line 34:
 
Students interested in this project should be ''very'' familiar with Postgres to be able to work around the restrictions outlined above.
 
Students interested in this project should be ''very'' familiar with Postgres to be able to work around the restrictions outlined above.
  
'''Mentor:''' Vinny Furia
 
  
== Further Reading ==
+
=== Further Reading ===
  
 
* [http://www.postgresql.org/ PostgreSQL homepage]
 
* [http://www.postgresql.org/ PostgreSQL homepage]

Latest revision as of 16:05, 21 May 2009

This is one of the projects to be implemented during the Google Summer of Code 2009.

Student: Stan Palatnik, Mentor: Vincent Furia
Project repository


Project info and advancement during Summer of Code

(to be written)


Pre-Summer of Code idea discussion & preparation

Incentive

Geeklog currently supports MySQL and MS SQL Server for the database. Recently, we have had an increasing amount of requests to add support for PostgreSQL (aka Postgres).


Details

Development of Geeklog started back in 2000 when most of today's database abstraction layers didn't even exist yet. It therefore uses its own (thin) abstraction layer and will have to continue to do so for the foreseeable future.

The idea is simple: Create a database abstraction layer for PostgreSQL for Geeklog. In theory, that would "only" require the implementation of one class in one file: system/databases/postgres.class.php (alongside mysql.class.php and mssql.class.php).

Due to Geeklog's thin database abstraction layer, some non-standard SQL has crept into the codebase here and there. The MS SQL implementation works around this by patching some of those requests at runtime. While our goal is to use standard-compliant SQL as much as possible it may not always be possible to change this for reasons of backward compatibility. Also, not all the code is under our control, e.g. in plugins.

In addition to the actual database class, there are also database-specific files to initialize and upgrade the database and the plugins. They usually include the SQL requests to be executed as well as, in case of upgrade files, some PHP code. Equivalents of these files for Postgres will also have to be implemented (obviously, we would not need upgrade files for older Geeklog versions).


Level of Difficulty

medium to high

Students interested in this project should be very familiar with Postgres to be able to work around the restrictions outlined above.


Further Reading