Saturday, 14 April 2012

Getting vTiger to work with Postgresql

Recently while looking at vTiger CRM, decided to spend some time getting it to work on Postgresql 9 database. It turned out to be a lot more work than I have initially anticipated. Someone has make quite a significant contribution to make vTiger working with Postgresql database. However, there is still a lot of work to be done. Most of the the problems are due to SQL syntax. I'm quite surprise at the syntax that works with MySQL. The list below contains the SQL syntax that are broken in Postgresql but works in MySQL.
  • Joining character field to integer field
  • Using '0000-00-00 00:00:00' as default date
  • Using limit min, max
  • Using duplicate index name
  • Using non standard GROUP BY syntax
  • Using double quote to enclose character data
  • Inserting NULL into integer field
  • Updating character field without enclosing it in single quote
  • Using MYSQL specific build-in functions
  • Comparing true/false on integer field
IMHO, some of these syntax should never be allowed in the first place. If only the developers were using standard SQL syntax, most of this problems would have been avoided. For more details on the work done, checkout  vTiger Postgresql Patch


  1. Eminem is an American rapper and one of the most successful artists in hip-hop. As of 2021, Eminem net worth is now estimated to be $230 million.

  2. Injection molds must have have} a high precision match between the two mould halves to be able to} completely control the fabric circulate. Creating the mould is crucial to building a seamless, precision product. Injection Duvet Cover molds are sometimes constructed using steel or aluminum, and precision machined to type the features of desired product. Frozen Layer – During mould filling, as molten plastic comes in in} contact with the perimeter of any cooled channel a frozen layer will develop. An preliminary frozen pores and skin will develop almost instantly and its thickness will dynamically change all through the mould filling and packing portions of the molding cycle.