From 22135e9ee2ae5ff1440f1f4b02763b1e84368bb4 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Tue, 15 Dec 2015 13:17:49 +1300 Subject: [PATCH] TL-8155 dml: add support for PostgreSQL 9.5 Change-Id: If745097b772d73c3d98e023337f634560e3fb3ef --- lib/dml/pgsql_native_moodle_database.php | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/dml/pgsql_native_moodle_database.php b/lib/dml/pgsql_native_moodle_database.php index 1bc0b02..4bdc560 100644 --- a/lib/dml/pgsql_native_moodle_database.php +++ b/lib/dml/pgsql_native_moodle_database.php @@ -478,7 +478,14 @@ class pgsql_native_moodle_database extends moodle_database { $info->scale = null; $info->not_null = ($rawcolumn->attnotnull === 't'); if ($info->has_default) { - $info->default_value = trim($rawcolumn->adsrc, '()'); + // Totara: PG 9.5 uses ::integer syntax for some defaults. + $parts = explode('::', $rawcolumn->adsrc); + if (count($parts) > 1) { + $info->default_value = reset($parts); + } else { + $info->default_value = $rawcolumn->adsrc; + } + $info->default_value = trim($info->default_value, "()'"); } else { $info->default_value = null; } @@ -496,7 +503,14 @@ class pgsql_native_moodle_database extends moodle_database { $info->not_null = ($rawcolumn->attnotnull === 't'); $info->has_default = ($rawcolumn->atthasdef === 't'); if ($info->has_default) { - $info->default_value = trim($rawcolumn->adsrc, '()'); + // Totara: PG 9.5 uses ::integer syntax for some defaults. + $parts = explode('::', $rawcolumn->adsrc); + if (count($parts) > 1) { + $info->default_value = reset($parts); + } else { + $info->default_value = $rawcolumn->adsrc; + } + $info->default_value = trim($info->default_value, "()'"); } else { $info->default_value = null; } @@ -514,7 +528,14 @@ class pgsql_native_moodle_database extends moodle_database { $info->not_null = ($rawcolumn->attnotnull === 't'); $info->has_default = ($rawcolumn->atthasdef === 't'); if ($info->has_default) { - $info->default_value = trim($rawcolumn->adsrc, '()'); + // Totara: PG 9.5 uses ::integer syntax for some defaults. + $parts = explode('::', $rawcolumn->adsrc); + if (count($parts) > 1) { + $info->default_value = reset($parts); + } else { + $info->default_value = $rawcolumn->adsrc; + } + $info->default_value = trim($info->default_value, "()'"); } else { $info->default_value = null; } -- 2.6.4