Hi,

thank you, I have already the adapter platform and got the limit and skip on 
the sql platform working.

But a few questions remain, in \Zend\Db\Sql\Select in processSelect the 
quantifier are processed.
The skip and first of informix seem similar and my first apporach was to add 
another select specification with 4 arguments and
do something like this:

    protected $specifications = array(
        ...
        self::SELECT => array(
            'SELECT %1$s FROM %2$s' => array(
                array(1 => '%1$s', 2 => '%1$s AS %2$s', 'combinedby' => ', '),
                null
            ),
            'SELECT %1$s %2$s FROM %3$s' => array(
                null,
                array(1 => '%1$s', 2 => '%1$s AS %2$s', 'combinedby' => ', '),
                null
            ),
            'SELECT SKIP %1$s FIRST %2$s %3$s FROM %4$s' => array(
                null,
                null,
                array(1 => '%1$s', 2 => '%1$s AS %2$s', 'combinedby' => ', '),
                null
            ),
            'SELECT %1$s' => array(
                array(1 => '%1$s', 2 => '%1$s AS %2$s', 'combinedby' => ', '),
            ),
        ),
       ...

in processSelect() I return:
        if (!isset($table)) {
            return array($columns);
        } elseif (isset($quantifier)) {
            return array($quantifier, $columns, $table);
        } elseif (isset($this->offset) && isset($this->limit)) {
            return array($this->offset, $this->limit, $columns, $table);
        } else {
            return array($columns, $table);
        }

That worked likea charm, but is a totally other way than in Platform\MySql. 
Is there an oversight on my side why the other method is better in Mysql?

Greetings

Marc


 

> -----Ursprüngliche Nachricht-----
> Von: Ralf Eggert [mailto:[email protected]]
> Gesendet: Mittwoch, 26. November 2014 17:43
> An: [email protected]
> Betreff: Re: [fw-general] \Zend\Db and what to do?
> 
> Hi Marc,
> 
> first of all, I have no idea about informix at all. But this is what I would 
> do to
> start informix support for ZF2.
> 
> First, you need the driver. You must decide if you want to use PDO or the
> native ifx extension. If you want to use PDO the driver part is quite simple,
> because you can use the Zend\Db\Adapter\Driver\Pdo. If not you need to
> implement the native ifx support. Please look at the classes of
> Zend\Db\Adapter\Driver\Mysqli to get you started.
> 
> Second, you need the platform. For example look at the MySQL
> implementation at Zend\Db\Adapter\Platform\Mysql. The platform is
> independent from the driver, ie. from PDO or ifx support.
> 
> Third, you need the SQL implementation. Please look at the classes of
> Zend\Db\Sql\Platform\Mysql for MySQL inspiration. The concrete
> implementation for LIMIT and OFFSET can be found in the class
> Zend\Db\Sql\Platform\Mysql\SelectDecorator.
> 
> Please could others correct me, if I am wrong in any point?
> 
> Marc, good luck and have fun. Although I won't need it personally, but it
> would be nice if you could add your implementation to the framework by a
> PR if finished or at least create a module for the informix support.
> 
> Thanks and best regards,
> 
> Ralf
> 
> --
> List: [email protected]
> Info: http://framework.zend.com/archives
> Unsubscribe: [email protected]
> 

Reply via email to