Author: dr
Date: Mon Dec  3 13:43:47 2007
New Revision: 6902

Log:
- Fixed bug #12152: The SQLite's unixTimestamp() expression function
  implementation uses the current UTC offset, instead of the UTC offset that
  belongs to the date for which a Unix timestamp should be generated.

Modified:
    trunk/Database/ChangeLog
    trunk/Database/src/handlers/sqlite.php
    trunk/Database/src/sqlabstraction/implementations/expression_sqlite.php
    
trunk/Database/src/sqlabstraction/implementations/query_sqlite_function_implementations.php
    trunk/Database/tests/sqlabstraction/expression_test.php

Modified: trunk/Database/ChangeLog
==============================================================================
--- trunk/Database/ChangeLog [iso-8859-1] (original)
+++ trunk/Database/ChangeLog [iso-8859-1] Mon Dec  3 13:43:47 2007
@@ -1,3 +1,11 @@
+1.3.3 - [RELEASEDATE]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Fixed bug #12152: The SQLite's unixTimestamp() expression function
+  implementation uses the current UTC offset, instead of the UTC offset that
+  belongs to the date for which a Unix timestamp should be generated.
+
+
 1.3.2 - Wednesday 28 November 2007
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 

Modified: trunk/Database/src/handlers/sqlite.php
==============================================================================
--- trunk/Database/src/handlers/sqlite.php [iso-8859-1] (original)
+++ trunk/Database/src/handlers/sqlite.php [iso-8859-1] Mon Dec  3 13:43:47 2007
@@ -72,6 +72,7 @@
         $this->sqliteCreateFunction( 'floor', array( 
'ezcQuerySqliteFunctions', 'floorImpl'), 1 );
         $this->sqliteCreateFunction( 'ceil', array( 'ezcQuerySqliteFunctions', 
'ceilImpl'), 1 );
         $this->sqliteCreateFunction( 'concat', array( 
'ezcQuerySqliteFunctions', 'concatImpl') );
+        $this->sqliteCreateFunction( 'toUnixTimestamp', array( 
'ezcQuerySqliteFunctions', 'toUnixTimestampImpl' ), 1 );
         $this->sqliteCreateFunction( 'now', 'time', 0 );
     }
 

Modified: 
trunk/Database/src/sqlabstraction/implementations/expression_sqlite.php
==============================================================================
--- trunk/Database/src/sqlabstraction/implementations/expression_sqlite.php 
[iso-8859-1] (original)
+++ trunk/Database/src/sqlabstraction/implementations/expression_sqlite.php 
[iso-8859-1] Mon Dec  3 13:43:47 2007
@@ -99,7 +99,7 @@
         else
         {
             $column = $this->getIdentifier( $column );
-            return " strftime( '%s', {$column} ) - ".date('Z')." ";
+            return " toUnixTimestamp( {$column} ) ";
         }
     }
 

Modified: 
trunk/Database/src/sqlabstraction/implementations/query_sqlite_function_implementations.php
==============================================================================
--- 
trunk/Database/src/sqlabstraction/implementations/query_sqlite_function_implementations.php
 [iso-8859-1] (original)
+++ 
trunk/Database/src/sqlabstraction/implementations/query_sqlite_function_implementations.php
 [iso-8859-1] Mon Dec  3 13:43:47 2007
@@ -87,5 +87,16 @@
      {
          return (int) ceil( $number );
      }
+
+     /**
+      * Returns the unix timestamp belonging to a date/time spec
+      *
+      * @param string $spec
+      * @return integer
+      */
+     static public function toUnixTimestampImpl( $spec )
+     {
+         return strtotime( $spec );
+     }
 }
 ?>

Modified: trunk/Database/tests/sqlabstraction/expression_test.php
==============================================================================
--- trunk/Database/tests/sqlabstraction/expression_test.php [iso-8859-1] 
(original)
+++ trunk/Database/tests/sqlabstraction/expression_test.php [iso-8859-1] Mon 
Dec  3 13:43:47 2007
@@ -976,12 +976,20 @@
         $this->assertSame( 4, (int)$stmt->fetchColumn( 0 ) );
     }
 
-    public function testUnixTimestampImpl()
+    public function testUnixTimestampImpl1()
     {
         $this->q->select( $this->e->unixTimestamp( "'2007-05-03 11:54:17'" ) );
         $stmt = $this->q->prepare();
         $stmt->execute();
         $this->assertSame( strtotime( '2007-05-03 11:54:17' ), 
(int)$stmt->fetchColumn( 0 ) );
+    }
+
+    public function testUnixTimestampImpl2()
+    {
+        $this->q->select( $this->e->unixTimestamp( "'2007-12-03 11:54:17'" ) );
+        $stmt = $this->q->prepare();
+        $stmt->execute();
+        $this->assertSame( strtotime( '2007-12-03 11:54:17' ), 
(int)$stmt->fetchColumn( 0 ) );
     }
 
     public function testDateSubSecondImpl()


-- 
svn-components mailing list
svn-components@lists.ez.no
http://lists.ez.no/mailman/listinfo/svn-components

Reply via email to