/*************************************************************************** qgspgutil.cpp - PostgreSQL Utility Functions -------------------------------------- Date : 2004-11-21 Copyright : (C) 2004 by Gary E.Sherman Email : sherman at mrcc.com *************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ /* $Id$ */ #include "qgspgutil.h" QgsPgUtil *QgsPgUtil::mInstance = 0; QgsPgUtil * QgsPgUtil::instance() { if(mInstance == 0) { mInstance = new QgsPgUtil(); } return mInstance; } QgsPgUtil::QgsPgUtil() { // load the reserved word map initReservedWords(); } QgsPgUtil::~QgsPgUtil() { } bool QgsPgUtil::isReserved(QString word) { // uppercase the word before testing it since all our reserved words are // stored in uppercase QStringList::iterator it = mReservedWords.find(word.upper()); return (it != mReservedWords.end()); } void QgsPgUtil::setConnection(PGconn *con) { mPgConnection = con; } PGconn *QgsPgUtil::connection() { return mPgConnection; } void QgsPgUtil::initReservedWords() { // create the reserved word list by loading // the words into a QStringList. We code them here // for now rather than deal with the complexities // of finding and loading from a text file // in the install path mReservedWords << "ABSOLUTE" << "ACTION" << "ADD" << "ADMIN" << "AFTER" << "AGGREGATE" << "ALIAS" << "ALL" << "ALLOCATE" << "ALTER" << "ANALYSE" << "ANALYZE" << "AND" << "ANY" << "ARE" << "ARRAY" << "AS" << "ASC" << "ASSERTION" << "AT" << "AUTHORIZATION" << "AVG" << "BEFORE" << "BEGIN" << "BETWEEN" << "BINARY" << "BIT" << "BIT_LENGTH" << "BLOB" << "BOOLEAN" << "BOTH" << "BREADTH" << "BY" << "CALL" << "CASCADE" << "CASCADED" << "CASE" << "CAST" << "CATALOG" << "CHAR" << "CHARACTER" << "CHARACTER_LENGTH" << "CHAR_LENGTH" << "CHECK" << "CLASS" << "CLOB" << "CLOSE" << "COALESCE" << "COLLATE" << "COLLATION" << "COLUMN" << "COMMIT" << "COMPLETION" << "CONNECT" << "CONNECTION" << "CONSTRAINT" << "CONSTRAINTS" << "CONSTRUCTOR" << "CONTINUE" << "CONVERT" << "CORRESPONDING" << "COUNT" << "CREATE" << "CROSS" << "CUBE" << "CURRENT" << "CURRENT_DATE" << "CURRENT_PATH" << "CURRENT_ROLE" << "CURRENT_TIME" << "CURRENT_TIMESTAMP" << "CURRENT_USER" << "CURSOR" << "CURSOR_NAME" << "CYCLE" << "DATA" << "DATE" << "DAY" << "DEALLOCATE" << "DEC" << "DECIMAL" << "DECLARE" << "DEFAULT" << "DEFERRABLE" << "DEFERRED" << "DELETE" << "DEPTH" << "DEREF" << "DESC" << "DESCRIBE" << "DESCRIPTOR" << "DESTROY" << "DESTRUCTOR" << "DETERMINISTIC" << "DIAGNOSTICS" << "DICTIONARY" << "DISCONNECT" << "DISPATCH" << "DISTINCT" << "DO" << "DOMAIN" << "DOUBLE" << "DROP" << "DYNAMIC" << "EACH" << "ELSE" << "END" << "END-EXEC" << "EQUALS" << "ESCAPE" << "EVERY" << "EXCEPT" << "EXCEPTION" << "EXEC" << "EXECUTE" << "EXISTS" << "EXTERNAL" << "EXTRACT" << "FALSE" << "FETCH" << "FIRST" << "FLOAT" << "FOR" << "FOREIGN" << "FOUND" << "FREE" << "FREEZE" << "FROM" << "FULL" << "FUNCTION" << "GENERAL" << "GET" << "GLOBAL" << "GO" << "GOTO" << "GRANT" << "GROUP" << "GROUPING" << "HAVING" << "HOST" << "HOUR" << "IDENTITY" << "IGNORE" << "ILIKE" << "IMMEDIATE" << "IMPLEMENTATION" << "IN" << "INDICATOR" << "INITIALIZE" << "INITIALLY" << "INNER" << "INOUT" << "INPUT" << "INSENSITIVE" << "INSERT" << "INT" << "INTEGER" << "INTERSECT" << "INTERVAL" << "INTO" << "IS" << "ISNULL" << "ITERATE" << "JOIN" << "KEY" << "LANGUAGE" << "LARGE" << "LAST" << "LATERAL" << "LEADING" << "LEFT" << "LESS" << "LEVEL" << "LIKE" << "LIMIT" << "LOCAL" << "LOCALTIME" << "LOCALTIMESTAMP" << "LOCATOR" << "LOWER" << "MAP" << "MATCH" << "MAX" << "MIN" << "MINUTE" << "MODIFIES" << "MODIFY" << "MODULE" << "MONTH" << "NAMES" << "NATIONAL" << "NATURAL" << "NCHAR" << "NCLOB" << "NEW" << "NEXT" << "NO" << "NONE" << "NOT" << "NOTNULL" << "NULL" << "NULLIF" << "NUMERIC" << "OBJECT" << "OCTET_LENGTH" << "OF" << "OFF" << "OFFSET" << "OLD" << "ON" << "ONLY" << "OPEN" << "OPERATION" << "OPTION" << "OR" << "ORDER" << "ORDINALITY" << "OUT" << "OUTER" << "OUTPUT" << "OVERLAPS" << "PAD" << "PARAMETER" << "PARAMETERS" << "PARTIAL" << "PATH" << "PLACING" << "POSITION" << "POSTFIX" << "PRECISION" << "PREFIX" << "PREORDER" << "PREPARE" << "PRESERVE" << "PRIMARY" << "PRIOR" << "PRIVILEGES" << "PROCEDURE" << "PUBLIC" << "READ" << "READS" << "REAL" << "RECURSIVE" << "REF" << "REFERENCES" << "REFERENCING" << "RELATIVE" << "RESTRICT" << "RESULT" << "RETURN" << "RETURNS" << "REVOKE" << "RIGHT" << "ROLE" << "ROLLBACK" << "ROLLUP" << "ROUTINE" << "ROW" << "ROWS" << "SAVEPOINT" << "SCHEMA" << "SCOPE" << "SCROLL" << "SEARCH" << "SECOND" << "SECTION" << "SELECT" << "SEQUENCE" << "SESSION" << "SESSION_USER" << "SET" << "SETS" << "SIMILAR" << "SIZE" << "SMALLINT" << "SOME" << "SPACE" << "SPECIFIC" << "SPECIFICTYPE" << "SQL" << "SQLCODE" << "SQLERROR" << "SQLEXCEPTION" << "SQLSTATE" << "SQLWARNING" << "START" << "STATE" << "STATEMENT" << "STATIC" << "STRUCTURE" << "SUBSTRING" << "SUM" << "SYSTEM_USER" << "TABLE" << "TEMPORARY" << "TERMINATE" << "THAN" << "THEN" << "TIME" << "TIMESTAMP" << "TIMEZONE_HOUR" << "TIMEZONE_MINUTE" << "TO" << "TRAILING" << "TRANSACTION" << "TRANSLATE" << "TRANSLATION" << "TREAT" << "TRIGGER" << "TRIM" << "TRUE" << "UNDER" << "UNION" << "UNIQUE" << "UNKNOWN" << "UNNEST" << "UPDATE" << "UPPER" << "USAGE" << "USER" << "USING" << "VALUE" << "VALUES" << "VARCHAR" << "VARIABLE" << "VARYING" << "VERBOSE" << "VIEW" << "WHEN" << "WHENEVER" << "WHERE" << "WITH" << "WITHOUT" << "WORK" << "WRITE" << "YEAR" << "ZONE"; }