# tasks/ext/pdo/PgsqlPDOQuerySplitter.php

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This software consists of voluntary contributions made by many individuals and is licensed under the LGPL. For more information please see http://phing.info.

Package
  phing.tasks.ext.pdo
Version
  SVN: $Id: PgsqlPDOQuerySplitter.php 1274 2011-08-17 13:38:07Z mrook $

## \PgsqlPDOQuerySplitter
jump to top

Package: phing\tasks\ext\pdo

Splits PostgreSQL's dialect of SQL into separate queries

Unlike DefaultPDOQuerySplitter this uses a lexer instead of regular expressions. This allows handling complex constructs like C-style comments (including nested ones) and dollar-quoted strings.

Parent(s)
  \PDOQuerySplitter
Author
  Alexey Borzov
Link
  http://www.phing.info/trac/ticket/499
Link
  http://www.postgresql.org/docs/current/interactive/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING
Version
  $Revision: 1274 $

### Constants

`STATE_NORMAL = 0`

`STATE_SINGLE_QUOTED = 1`

`STATE_DOUBLE_QUOTED = 2`

`STATE_DOLLAR_QUOTED = 3`

`STATE_COMMENT_LINEEND = 4`

`STATE_COMMENT_MULTILINE = 5`

`STATE_BACKSLASH = 6`

### Properties

`int $commentDepth= '0'`

Nesting depth of current multiline comment

Default value `0` Details

Type
  int

`bool $escape= 'false'`

Whether a backslash was just encountered in quoted string

Default value `false` Details

Type
  bool

`int $inputIndex= ''`

Position in current source line

Details

Type
  int

`string $line= ''''`

Current source line being examined

Default value`''`Details

Type
  string

`\PDOSQLExecTask $parent= ''`
inherited

Task that uses the splitter

Inherited from: \PDOQuerySplitter::$parent
Details

Type
  \PDOSQLExecTask
Inherited_from
  \PDOQuerySplitter::$parent

`string $quotingTag= ''''`

Current dollar-quoting "tag"

Default value`''`Details

Type
  string

`\BufferedReader $sqlReader= ''`
inherited

Reader with SQL source

Inherited from: \PDOQuerySplitter::$sqlReader
Details

Type
  \BufferedReader
Inherited_from
  \PDOQuerySplitter::$sqlReader

`int $state= 'self::STATE_NORMAL'`

Current lexer state, one of STATE_* constants

Default value `self::STATE_NORMAL` Details

Type
  int

### Methods

`__construct( \PDOSQLExecTask $parent, \Reader $reader ) : void`
inherited

Constructor, sets the parent task and reader with SQL source

Inherited from: \PDOQuerySplitter::__construct()
Parameters

Name | Type | Description
--- | --- | ---
$parent | \PDOSQLExecTask |
$reader | \Reader |

`checkDollarQuote( ) : string|bool`

Checks whether symbols after $ are a valid dollar-quoting tag

Returns

Type | Description
--- | ---
string|bool | Dollar-quoting "tag" if it is present, false otherwise

`getc( ) : string|bool`

Gets next symbol from the input, false if at end

Returns

Type | Description
--- | ---
string|bool |

`nextQuery( ) : string|null`

Returns next query from SQL source, null if no more queries left

Returns

Type | Description
--- | ---
string|null |

`ungetc( ) : void`

Bactracks one symbol on the input

NB: we don't need ungetc() at the start of the line, so this case is not handled.

Documentation was generated by DocBlox 0.15.1.