Source for file postgresql.php
Documentation is available at postgresql.php
* @package Joomla.Platform
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
* @package Joomla.Platform
* @var object The FOR UPDATE element used in "FOR UPDATE" lock
* @var object The FOR SHARE element used in "FOR SHARE" lock
* @var object The NOWAIT element used in "FOR SHARE" and "FOR UPDATE" lock
* @var object The LIMIT element
* @var object The OFFSET element
* @var object The RETURNING element of INSERT INTO
* Magic function to convert the query to a string, only for postgresql specific query
* @return string The completed query.
$query .= (string)
$this->select;
$query .= (string)
$this->from;
// Special case for joins
foreach ($this->join as $join)
$query .= (string)
$join;
$query .= (string)
$this->where;
$query .= (string)
$this->group;
$query .= (string)
$this->having;
$query .= (string)
$this->order;
$query .= (string)
$this->noWait;
$query .= (string)
$this->update;
$query .= (string)
$this->set;
// Workaround for special case of JOIN with UPDATE
foreach ($this->join as $join)
$joinElem =
$join->getElements();
$joinArray =
explode($onWord, $joinElem[0]);
$this->from($joinArray[0]);
$this->where($joinArray[1]);
$query .= (string)
$this->from;
$query .= (string)
$this->where;
$query .= (string)
$this->insert;
$elements =
$this->values->getElements();
if (!($elements[0] instanceof
$this))
$query .= (string)
$this->values;
* Clear data from the query or a specific clause of the query.
* @param string $clause Optionally, the name of the clause to clear, or nothing to clear the whole query.
* @return JDatabaseQueryPostgresql Returns this object to allow chaining.
public function clear($clause =
null)
* Casts a value to a char.
* Ensure that the value is properly quoted before passing to the method.
* $query->select($query->castAsChar('a'));
* @param string $value The value to cast as a char.
* @return string Returns the cast value.
return $value .
'::text';
* Concatenates an array of column names or values.
* $query->select($query->concatenate(array('a', 'b')));
* @param array $values An array of values to concatenate.
* @param string $separator As separator to place between each value.
* @return string The concatenated values.
public function concatenate($values, $separator =
null)
return implode(' || ' .
$this->quote($separator) .
' || ', $values);
* Gets the current date and time.
* @return string Return string used in query to obtain
* Sets the FOR UPDATE lock on select's output row
* @param string $table_name The table to lock
* @param string $glue The glue by which to join the conditions. Defaults to ',' .
* @return JDatabaseQueryPostgresql FOR UPDATE query element
public function forUpdate($table_name, $glue =
',')
$this->type =
'forUpdate';
* Sets the FOR SHARE lock on select's output row
* @param string $table_name The table to lock
* @param string $glue The glue by which to join the conditions. Defaults to ',' .
* @return JDatabaseQueryPostgresql FOR SHARE query element
public function forShare($table_name, $glue =
',')
$this->type =
'forShare';
* Used to get a string to extract year from date column.
* $query->select($query->year($query->quoteName('dateColumn')));
* @param string $date Date column containing year to be extracted.
* @return string Returns string to extract year from a date.
public function year($date)
return 'EXTRACT (YEAR FROM ' .
$date .
')';
* Used to get a string to extract month from date column.
* $query->select($query->month($query->quoteName('dateColumn')));
* @param string $date Date column containing month to be extracted.
* @return string Returns string to extract month from a date.
public function month($date)
return 'EXTRACT (MONTH FROM ' .
$date .
')';
* Used to get a string to extract day from date column.
* $query->select($query->day($query->quoteName('dateColumn')));
* @param string $date Date column containing day to be extracted.
* @return string Returns string to extract day from a date.
public function day($date)
return 'EXTRACT (DAY FROM ' .
$date .
')';
* Used to get a string to extract hour from date column.
* $query->select($query->hour($query->quoteName('dateColumn')));
* @param string $date Date column containing hour to be extracted.
* @return string Returns string to extract hour from a date.
public function hour($date)
return 'EXTRACT (HOUR FROM ' .
$date .
')';
* Used to get a string to extract minute from date column.
* $query->select($query->minute($query->quoteName('dateColumn')));
* @param string $date Date column containing minute to be extracted.
* @return string Returns string to extract minute from a date.
return 'EXTRACT (MINUTE FROM ' .
$date .
')';
* Used to get a string to extract seconds from date column.
* $query->select($query->second($query->quoteName('dateColumn')));
* @param string $date Date column containing second to be extracted.
* @return string Returns string to extract second from a date.
return 'EXTRACT (SECOND FROM ' .
$date .
')';
* Sets the NOWAIT lock on select's output row
* @return JDatabaseQueryPostgresql NO WAIT query element
* Set the LIMIT clause to the query
* @param integer $limit An int of how many row will be returned
* @return JDatabaseQueryPostgresql Returns this object to allow chaining.
public function limit($limit =
0)
* Set the OFFSET clause to the query
* @param integer $offset An int for skipping row
* @return JDatabaseQueryPostgresql Returns this object to allow chaining.
public function offset($offset =
0)
* Add the RETURNING element to INSERT INTO statement.
* @param mixed $pkCol The name of the primary key column.
* @return JDatabaseQueryPostgresql Returns this object to allow chaining.
* Sets the offset and limit for the result set, if the database driver supports it.
* $query->setLimit(100, 0); (retrieve 100 rows, starting at first record)
* $query->setLimit(50, 50); (retrieve 50 rows, starting at 50th record)
* @param integer $limit The limit for the result set
* @param integer $offset The offset for the result set
* @return JDatabaseQueryPostgresql Returns this object to allow chaining.
public function setLimit($limit =
0, $offset =
0)
$this->limit = (int)
$limit;
$this->offset = (int)
$offset;
* Method to modify a query already in string format with the needed
* additions to make the query limited to a particular number of
* results, or start at a particular offset.
* @param string $query The query in string format
* @param integer $limit The limit for the result set
* @param integer $offset The offset for the result set
$query .=
' LIMIT ' .
$limit;
$query .=
' OFFSET ' .
$offset;
* Add to the current date and time in Postgresql.
* $query->select($query->dateAdd());
* Prefixing the interval with a - (negative sign) will cause subtraction to be used.
* @param datetime $date The date to add to
* @param string $interval The string representation of the appropriate number of units
* @param string $datePart The part of the date to perform the addition on
* @return string The string with the appropriate sql for addition of dates
* @note Not all drivers support all units. Check appropriate references
* @link http://www.postgresql.org/docs/9.0/static/functions-datetime.html.
public function dateAdd($date, $interval, $datePart)
if (substr($interval, 0, 1) !=
'-')
return "timestamp '" .
$date .
"' + interval '" .
$interval .
" " .
$datePart .
"'";
return "timestamp '" .
$date .
"' - interval '" .
ltrim($interval, '-') .
" " .
$datePart .
"'";
Documentation generated on Tue, 19 Nov 2013 15:11:01 +0100 by phpDocumentor 1.4.3