Aleksander Machniak
2012-06-30 7c8fd8031038e7958ef4dbb059e86decd6fefa28
program/include/rcube_mdb2.php
@@ -48,6 +48,7 @@
    private $a_query_results = array('dummy');
    private $last_res_id = 0;
    private $tables;
    private $variables;
    /**
@@ -210,6 +211,31 @@
    public function is_replicated()
    {
      return !empty($this->db_dsnr) && $this->db_dsnw != $this->db_dsnr;
    }
    /**
     * Get database runtime variables
     *
     * @param string Variable name
     * @param mixed  Default value if var is not set
     * @return mixed Variable value or default
     */
    public function get_variable($varname, $default = null)
    {
        if (!isset($this->variables)) {
            $this->variables = array();
            // only mysql and postgres are know to support this
            if ($this->db_provider == 'pgsql' || $this->db_provider == 'mysql' || $this->db_provider == 'mysqli') {
                $this->db_connect('r');
                $query = $this->db_provider == 'pgsql' ? 'SHOW ALL' : 'SHOW VARIABLES';
                foreach ((array)$this->db_handle->queryAll($query) as $row)
                    $this->variables[$row[0]] = $row[1];
            }
        }
        return isset($this->variables[$varname]) ? $this->variables[$varname] : $default;
    }
@@ -665,6 +691,11 @@
            case 'mssql':
            case 'sqlsrv':
                $delim = ' + ';
                // Modify arguments, because + operator requires them to be of type varchar (#1488505)
                // with SQL Server 2012 we can use just CONCAT(), but we need to support older versions
                foreach ($args as $idx => $arg) {
                    $args[$idx] = "CAST($arg AS varchar)";
                }
                break;
            default:
                $delim = ' || ';