Doctrine DBAL
  1. Doctrine DBAL
  2. DBAL-21

Pgsql: getListTableColumnsSQL: read domains info (patch provided)

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.0-BETA2
    • Fix Version/s: 2.0.0-BETA3
    • Component/s: None
    • Labels:
      None

      Description

      Hello,

      If you use DOMAIN (CREATE DOMAIN) in pgsql, PostgreSqlPlatform generate a "new \Doctrine\DBAL\DBALException("Unknown database type ".$dbType." requested, " . get_class($this) . " may not support it.");" exception because it does not know the type "domain_name" (CREATE DOMAIN domain_name AS VARCHAR(80); )

      With this patch, it checks if the given type (either normal type, either domain) is a domain, and if yes, takes the right info (domain_name is type varchar and complete_type character varying(80)). If it's not a domain, it takes the normal type.

      (patch -p0 doctrine2/lib/Doctrine/DBAL/Platforms/PostgreSqlPlatform.php < pgsql_domains.patch)

      Also, it's not the goal here, but the queries could be optimized using joins in place of auto join + where, but, as said, the speed is not the goal since the queries are there only for entities mapping.

      Hope it helps.

      Best regards,

      Raphaël Dehousse

        Activity

        Hide
        Benjamin Eberlei added a comment -

        Let me understand this, this patch automatically detects the underlying type of a new DOMAIN Type created in postgresql?

        So say i create a MONEY type and have it be a decimal or something, your code would make doctrine automatically detect it being a decimal and create the decimal doctrine type?

        Show
        Benjamin Eberlei added a comment - Let me understand this, this patch automatically detects the underlying type of a new DOMAIN Type created in postgresql? So say i create a MONEY type and have it be a decimal or something, your code would make doctrine automatically detect it being a decimal and create the decimal doctrine type?
        Hide
        Raphaël Dehousse added a comment -

        Indeed, it will detect the "natural" type under MONEY and use this type for doctrine.

        Show
        Raphaël Dehousse added a comment - Indeed, it will detect the "natural" type under MONEY and use this type for doctrine.
        Show
        Benjamin Eberlei added a comment - Implemented and tested in http://github.com/doctrine/dbal/commit/93ad4c2a24adf93d450c9eefbc966ccf3fe87414

          People

          • Assignee:
            Benjamin Eberlei
            Reporter:
            Raphaël Dehousse
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: