QGIS API Documentation  2.18.21-Las Palmas (9fba24a)
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
QgsSQLStatement Class Reference

Class for parsing SQL statements. More...

#include <qgssqlstatement.h>

Classes

class  Node
 Abstract node class. More...
 
class  NodeBetweenOperator
 'X BETWEEN y and z' operator More...
 
class  NodeBinaryOperator
 Binary logical/arithmetical operator (AND, OR, =, +, ...) More...
 
class  NodeCast
 CAST operator. More...
 
class  NodeColumnRef
 Reference to a column. More...
 
class  NodeColumnSorted
 Column in a ORDER BY. More...
 
class  NodeFunction
 Function with a name and arguments node. More...
 
class  NodeInOperator
 'x IN (y, z)' operator More...
 
class  NodeJoin
 Join definition. More...
 
class  NodeList
 List of nodes. More...
 
class  NodeLiteral
 Literal value (integer, integer64, double, string) More...
 
class  NodeSelect
 SELECT node. More...
 
class  NodeSelectedColumn
 Selected column. More...
 
class  NodeTableDef
 Table definition. More...
 
class  NodeUnaryOperator
 Unary logicial/arithmetical operator ( NOT, - ) More...
 
class  RecursiveVisitor
 A visitor that recursively explores all children. More...
 
class  Visitor
 Support for visitor pattern - algorithms dealing with the statement may be implemented without modifying the Node classes. More...
 

Public Types

enum  BinaryOperator {
  boOr, boAnd, boEQ, boNE,
  boLE, boGE, boLT, boGT,
  boLike, boNotLike, boILike, boNotILike,
  boIs, boIsNot, boPlus, boMinus,
  boMul, boDiv, boIntDiv, boMod,
  boPow, boConcat
}
 list of binary operators More...
 
enum  JoinType {
  jtDefault, jtLeft, jtLeftOuter, jtRight,
  jtRightOuter, jtCross, jtInner, jtFull
}
 list of join types More...
 
enum  NodeType {
  ntUnaryOperator, ntBinaryOperator, ntInOperator, ntBetweenOperator,
  ntFunction, ntLiteral, ntColumnRef, ntSelectedColumn,
  ntSelect, ntTableDef, ntJoin, ntColumnSorted,
  ntCast
}
 Node type. More...
 
enum  UnaryOperator { uoNot, uoMinus }
 list of unary operators More...
 

Public Member Functions

 QgsSQLStatement (const QString &statement)
 Creates a new statement based on the provided string. More...
 
 QgsSQLStatement (const QgsSQLStatement &other)
 Create a copy of this statement. More...
 
 ~QgsSQLStatement ()
 
void acceptVisitor (Visitor &v) const
 Entry function for the visitor pattern. More...
 
bool doBasicValidationChecks (QString &errorMsgOut) const
 Performs basic validity checks. More...
 
QString dump () const
 Return statement string, constructed from the internal abstract syntax tree. More...
 
bool hasParserError () const
 Returns true if an error occurred when parsing the input statement. More...
 
QgsSQLStatementoperator= (const QgsSQLStatement &other)
 Create a copy of this statement. More...
 
QString parserErrorString () const
 Returns parser error. More...
 
const NoderootNode () const
 Returns root node of the statement. Root node is null is parsing has failed. More...
 
QString statement () const
 Return the original, unmodified statement string. More...
 

Static Public Member Functions

static QString quotedIdentifier (QString name)
 Returns a quoted column reference (in double quotes) More...
 
static QString quotedIdentifierIfNeeded (QString name)
 Returns a quoted column reference (in double quotes) if needed, or otherwise the original string. More...
 
static QString quotedString (QString text)
 Returns a quoted version of a string (in single quotes) More...
 
static QString stripQuotedIdentifier (QString text)
 Remove double quotes from an identifier. More...
 

Static Public Attributes

static const char * BinaryOperatorText []
 
static const char * JoinTypeText []
 
static const char * UnaryOperatorText []
 

Protected Attributes

QString mParserErrorString
 
QgsSQLStatement::NodemRootNode
 
QString mStatement
 

Detailed Description

Class for parsing SQL statements.

Note
Added in QGIS 2.16

Definition at line 32 of file qgssqlstatement.h.

Member Enumeration Documentation

◆ BinaryOperator

list of binary operators

Note
if any change is made here, the definition of QgsSQLStatement::BinaryOperatorText[] must be adapted.
Enumerator
boOr 
boAnd 
boEQ 
boNE 
boLE 
boGE 
boLT 
boGT 
boLike 
boNotLike 
boILike 
boNotILike 
boIs 
boIsNot 
boPlus 
boMinus 
boMul 
boDiv 
boIntDiv 
boMod 
boPow 
boConcat 

Definition at line 112 of file qgssqlstatement.h.

◆ JoinType

list of join types

Note
if any change is made here, the definition of QgsSQLStatement::JoinTypeText[] must be adapted.
Enumerator
jtDefault 
jtLeft 
jtLeftOuter 
jtRight 
jtRightOuter 
jtCross 
jtInner 
jtFull 

Definition at line 149 of file qgssqlstatement.h.

◆ NodeType

Node type.

Enumerator
ntUnaryOperator 
ntBinaryOperator 
ntInOperator 
ntBetweenOperator 
ntFunction 
ntLiteral 
ntColumnRef 
ntSelectedColumn 
ntSelect 
ntTableDef 
ntJoin 
ntColumnSorted 
ntCast 

Definition at line 175 of file qgssqlstatement.h.

◆ UnaryOperator

list of unary operators

Note
if any change is made here, the definition of QgsSQLStatement::UnaryOperatorText[] must be adapted.
Enumerator
uoNot 
uoMinus 

Definition at line 102 of file qgssqlstatement.h.

Constructor & Destructor Documentation

◆ QgsSQLStatement() [1/2]

QgsSQLStatement::QgsSQLStatement ( const QString statement)

Creates a new statement based on the provided string.

Definition at line 117 of file qgssqlstatement.cpp.

◆ QgsSQLStatement() [2/2]

QgsSQLStatement::QgsSQLStatement ( const QgsSQLStatement other)

Create a copy of this statement.

Definition at line 123 of file qgssqlstatement.cpp.

◆ ~QgsSQLStatement()

QgsSQLStatement::~QgsSQLStatement ( )

Definition at line 141 of file qgssqlstatement.cpp.

Member Function Documentation

◆ acceptVisitor()

void QgsSQLStatement::acceptVisitor ( QgsSQLStatement::Visitor v) const

Entry function for the visitor pattern.

Definition at line 150 of file qgssqlstatement.cpp.

◆ doBasicValidationChecks()

bool QgsSQLStatement::doBasicValidationChecks ( QString errorMsgOut) const

Performs basic validity checks.

Basically checking that columns referencing a table, references a specified table. Returns true if the validation is successful

Definition at line 223 of file qgssqlstatement.cpp.

◆ dump()

QString QgsSQLStatement::dump ( ) const

Return statement string, constructed from the internal abstract syntax tree.

This does not contain any nice whitespace formatting or comments. In general it is preferrable to use statement() instead.

Definition at line 61 of file qgssqlstatement.cpp.

◆ hasParserError()

bool QgsSQLStatement::hasParserError ( ) const

Returns true if an error occurred when parsing the input statement.

Definition at line 146 of file qgssqlstatement.cpp.

◆ operator=()

QgsSQLStatement & QgsSQLStatement::operator= ( const QgsSQLStatement other)

Create a copy of this statement.

Definition at line 129 of file qgssqlstatement.cpp.

◆ parserErrorString()

QString QgsSQLStatement::parserErrorString ( ) const

Returns parser error.

Definition at line 148 of file qgssqlstatement.cpp.

◆ quotedIdentifier()

QString QgsSQLStatement::quotedIdentifier ( QString  name)
static

Returns a quoted column reference (in double quotes)

See also
quotedString(), quotedIdentifierIfNeeded()

Definition at line 69 of file qgssqlstatement.cpp.

◆ quotedIdentifierIfNeeded()

QString QgsSQLStatement::quotedIdentifierIfNeeded ( QString  name)
static

Returns a quoted column reference (in double quotes) if needed, or otherwise the original string.

See also
quotedString(), quotedIdentifier()

Definition at line 74 of file qgssqlstatement.cpp.

◆ quotedString()

QString QgsSQLStatement::quotedString ( QString  text)
static

Returns a quoted version of a string (in single quotes)

See also
quotedIdentifier(), quotedIdentifierIfNeeded()

Definition at line 108 of file qgssqlstatement.cpp.

◆ rootNode()

const QgsSQLStatement::Node * QgsSQLStatement::rootNode ( ) const

Returns root node of the statement. Root node is null is parsing has failed.

Definition at line 156 of file qgssqlstatement.cpp.

◆ statement()

QString QgsSQLStatement::statement ( ) const

Return the original, unmodified statement string.

If there was none supplied because it was constructed by sole API calls, dump() will be used to create one instead.

Definition at line 53 of file qgssqlstatement.cpp.

◆ stripQuotedIdentifier()

QString QgsSQLStatement::stripQuotedIdentifier ( QString  text)
static

Remove double quotes from an identifier.

See also
quotedIdentifier()

Definition at line 95 of file qgssqlstatement.cpp.

Member Data Documentation

◆ BinaryOperatorText

const char * QgsSQLStatement::BinaryOperatorText
static
Initial value:
=
{
"OR", "AND",
"=", "<>", "<=", ">=", "<", ">", "LIKE", "NOT LIKE", "ILIKE", "NOT ILIKE", "IS", "IS NOT",
"+", "-", "*", "/", "//", "%", "^",
"||"
}
Note
not available in Python bindings

Definition at line 162 of file qgssqlstatement.h.

◆ JoinTypeText

const char * QgsSQLStatement::JoinTypeText
static
Initial value:
=
{
"", "LEFT", "LEFT OUTER", "RIGHT", "RIGHT OUTER", "CROSS", "INNER", "FULL"
}
Note
not available in Python bindings

Definition at line 168 of file qgssqlstatement.h.

◆ mParserErrorString

QString QgsSQLStatement::mParserErrorString
protected

Definition at line 752 of file qgssqlstatement.h.

◆ mRootNode

QgsSQLStatement::Node* QgsSQLStatement::mRootNode
protected

Definition at line 750 of file qgssqlstatement.h.

◆ mStatement

QString QgsSQLStatement::mStatement
protected

Definition at line 751 of file qgssqlstatement.h.

◆ UnaryOperatorText

const char * QgsSQLStatement::UnaryOperatorText
static
Initial value:
=
{
"NOT", "-"
}
Note
not available in Python bindings

Definition at line 165 of file qgssqlstatement.h.


The documentation for this class was generated from the following files: