From dc116b994d7749a2c0cb2c3c1f0f5ad8f028a3d0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Mon, 8 Oct 2012 17:24:15 +0200 Subject: [PATCH] reenable hack to use CURRENT_TIMESTAMP for postgresql when creating the database, fixes oc-1852 TODO for OC5: use CURRENT_TIMESTAMP for all databases. mysql supports it as a default for DATETIME since 5.6.5 [1] as a fallback we could use 0000-01-01 00:00:00 everywhere [1] http://bugs.mysql.com/bug.php?id=27645 http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html http://www.postgresql.org/docs/8.1/static/functions-datetime.html http://www.sqlite.org/lang_createtable.html http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions037.htm --- lib/db.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/db.php b/lib/db.php index 256ae5b6bf3..54d9a63fbce 100644 --- a/lib/db.php +++ b/lib/db.php @@ -427,14 +427,14 @@ class OC_DB { $file2 = 'static://db_scheme'; $content = str_replace( '*dbname*', $CONFIG_DBNAME, $content ); $content = str_replace( '*dbprefix*', $CONFIG_DBTABLEPREFIX, $content ); - /* FIXME: REMOVE this commented code - * actually mysql, postgresql, sqlite and oracle support CURRENT_TIMESTAMP + /* FIXME: use CURRENT_TIMESTAMP for all databases. mysql supports it as a default for DATETIME since 5.6.5 [1] + * as a fallback we could use 0000-01-01 00:00:00 everywhere + * [1] http://bugs.mysql.com/bug.php?id=27645 * http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html * http://www.postgresql.org/docs/8.1/static/functions-datetime.html * http://www.sqlite.org/lang_createtable.html * http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions037.htm */ - if( $CONFIG_DBTYPE == 'pgsql' ) { //mysql support it too but sqlite doesn't $content = str_replace( '0000-00-00 00:00:00', 'CURRENT_TIMESTAMP', $content ); } @@ -493,16 +493,17 @@ class OC_DB { $file2 = 'static://db_scheme'; $content = str_replace( '*dbname*', $previousSchema['name'], $content ); $content = str_replace( '*dbprefix*', $CONFIG_DBTABLEPREFIX, $content ); - /* FIXME: REMOVE this commented code - * actually mysql, postgresql, sqlite and oracle support CUURENT_TIMESTAMP + /* FIXME: use CURRENT_TIMESTAMP for all databases. mysql supports it as a default for DATETIME since 5.6.5 [1] + * as a fallback we could use 0000-01-01 00:00:00 everywhere + * [1] http://bugs.mysql.com/bug.php?id=27645 * http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html * http://www.postgresql.org/docs/8.1/static/functions-datetime.html * http://www.sqlite.org/lang_createtable.html * http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions037.htm + */ if( $CONFIG_DBTYPE == 'pgsql' ) { //mysql support it too but sqlite doesn't $content = str_replace( '0000-00-00 00:00:00', 'CURRENT_TIMESTAMP', $content ); } - */ file_put_contents( $file2, $content ); $op = self::$schema->updateDatabase($file2, $previousSchema, array(), false); -- 2.39.5