|
| 1 | +# -*- coding: utf-8 -*- |
| 2 | + |
| 3 | +""" |
| 4 | +/*************************************************************************** |
| 5 | +Name : DB Manager |
| 6 | +Description : Database manager plugin for QGIS (Oracle) |
| 7 | +Date : Aug 27, 2014 |
| 8 | +copyright : (C) 2014 by Médéric RIBREUX |
| 9 | +email : mederic.ribreux@gmail.com |
| 10 | +
|
| 11 | +The content of this file is based on |
| 12 | +- PG_Manager by Martin Dobias <wonder.sk@gmail.com> (GPLv2 license) |
| 13 | +- DB Manager by Giuseppe Sucameli <brush.tyler@gmail.com> (GPLv2 license) |
| 14 | + ***************************************************************************/ |
| 15 | +
|
| 16 | +/*************************************************************************** |
| 17 | + * * |
| 18 | + * This program is free software; you can redistribute it and/or modify * |
| 19 | + * it under the terms of the GNU General Public License as published by * |
| 20 | + * the Free Software Foundation; either version 2 of the License, or * |
| 21 | + * (at your option) any later version. * |
| 22 | + * * |
| 23 | + ***************************************************************************/ |
| 24 | +""" |
| 25 | + |
| 26 | +__author__ = 'Médéric RIBREUX' |
| 27 | +__date__ = 'August 2014' |
| 28 | +__copyright__ = '(C) 2014, Médéric RIBREUX' |
| 29 | +# This will get replaced with a git SHA1 when you do a git archive |
| 30 | +__revision__ = '$Format:%H$' |
| 31 | + |
| 32 | +# keywords |
| 33 | +keywords = [ |
| 34 | + # From: |
| 35 | + # http://docs.oracle.com/cd/B19306_01/server.102/b14200/ap_keywd.htm |
| 36 | + "ACCESS", "ADD", "ALL", "ALTER", "AND", "ANY", "AS", "ASC", |
| 37 | + "AUDIT", "BETWEEN", "BY", "CHAR", "CHECK", "CLUSTER", "COLUMN", |
| 38 | + "COMMENT", "COMPRESS", "CONNECT", "CREATE", "CURRENT", "DATE", |
| 39 | + "DECIMAL", "DEFAULT", "DELETE", "DESC", "DISTINCT", "DROP", |
| 40 | + "ELSE", "EXCLUSIVE", "EXISTS", "FILE", "FLOAT", "FOR", "FROM", |
| 41 | + "GRANT", "GROUP", "HAVING", "IDENTIFIED", "IMMEDIATE", "IN", |
| 42 | + "INCREMENT", "INDEX", "INITIAL", "INSERT", "INTEGER", "INTERSECT", |
| 43 | + "INTO", "IS", "LEVEL", "LIKE", "LOCK", "LONG", "MAXEXTENTS", |
| 44 | + "MINUS", "MLSLABEL", "MODE", "MODIFY", "NOAUDIT", "NOCOMPRESS", |
| 45 | + "NOT", "NOWAIT", "NULL", "NUMBER", "OF", "OFFLINE", "ON", |
| 46 | + "ONLINE", "OPTION", "OR", "ORDER", "PCTFREE", "PRIOR", |
| 47 | + "PRIVILEGES", "PUBLIC", "RAW", "RENAME", "RESOURCE", "REVOKE", |
| 48 | + "ROW", "ROWID", "ROWNUM", "ROWS", "SELECT", "SESSION", "SET", |
| 49 | + "SHARE", "SIZE", "SMALLINT", "START", "SUCCESSFUL", "SYNONYM", |
| 50 | + "SYSDATE", "TABLE", "THEN", "TO", "TRIGGER", "UID", "UNION", |
| 51 | + "UNIQUE", "UPDATE", "USER", "VALIDATE", "VALUES", "VARCHAR", |
| 52 | + "VARCHAR2", "VIEW", "WHENEVER", "WHERE", "WITH", |
| 53 | + # From http://docs.oracle.com/cd/B13789_01/appdev.101/a42525/apb.htm |
| 54 | + "ADMIN", "CURSOR", "FOUND", "MOUNT", "AFTER", "CYCLE", "FUNCTION", |
| 55 | + "NEXT", "ALLOCATE", "DATABASE", "GO", "NEW", "ANALYZE", |
| 56 | + "DATAFILE", "GOTO", "NOARCHIVELOG", "ARCHIVE", "DBA", "GROUPS", |
| 57 | + "NOCACHE", "ARCHIVELOG", "DEC", "INCLUDING", "NOCYCLE", |
| 58 | + "AUTHORIZATION", "DECLARE", "INDICATOR", "NOMAXVALUE", "AVG", |
| 59 | + "DISABLE", "INITRANS", "NOMINVALUE", "BACKUP", "DISMOUNT", |
| 60 | + "INSTANCE", "NONE", "BEGIN", "DOUBLE", "INT", "NOORDER", "BECOME", |
| 61 | + "DUMP", "KEY", "NORESETLOGS", "BEFORE", "EACH", "LANGUAGE", |
| 62 | + "NORMAL", "BLOCK", "ENABLE", "LAYER", "NOSORT", "BODY", "END", |
| 63 | + "LINK", "NUMERIC", "CACHE", "ESCAPE", "LISTS", "OFF", "CANCEL", |
| 64 | + "EVENTS", "LOGFILE", "OLD", "CASCADE", "EXCEPT", "MANAGE", "ONLY", |
| 65 | + "CHANGE", "EXCEPTIONS", "MANUAL", "OPEN", "CHARACTER", "EXEC", |
| 66 | + "MAX", "OPTIMAL", "CHECKPOINT", "EXPLAIN", "MAXDATAFILES", "OWN", |
| 67 | + "CLOSE", "EXECUTE", "MAXINSTANCES", "PACKAGE", "COBOL", "EXTENT", |
| 68 | + "MAXLOGFILES", "PARALLEL", "COMMIT", "EXTERNALLY", |
| 69 | + "MAXLOGHISTORY", "PCTINCREASE", "COMPILE", "FETCH", |
| 70 | + "MAXLOGMEMBERS", "PCTUSED", "CONSTRAINT", "FLUSH", "MAXTRANS", |
| 71 | + "PLAN", "CONSTRAINTS", "FREELIST", "MAXVALUE", "PLI", "CONTENTS", |
| 72 | + "FREELISTS", "MIN", "PRECISION", "CONTINUE", "FORCE", |
| 73 | + "MINEXTENTS", "PRIMARY", "CONTROLFILE", "FOREIGN", "MINVALUE", |
| 74 | + "PRIVATE", "COUNT", "FORTRAN", "MODULE", "PROCEDURE", "PROFILE", |
| 75 | + "SAVEPOINT", "SQLSTATE", "TRACING", "QUOTA", "SCHEMA", |
| 76 | + "STATEMENT_ID", "TRANSACTION", "READ", "SCN", "STATISTICS", |
| 77 | + "TRIGGERS", "REAL", "SECTION", "STOP", "TRUNCATE", "RECOVER", |
| 78 | + "SEGMENT", "STORAGE", "UNDER", "REFERENCES", "SEQUENCE", "SUM", |
| 79 | + "UNLIMITED", "REFERENCING", "SHARED", "SWITCH", "UNTIL", |
| 80 | + "RESETLOGS", "SNAPSHOT", "SYSTEM", "USE", "RESTRICTED", "SOME", |
| 81 | + "TABLES", "USING", "REUSE", "SORT", "TABLESPACE", "WHEN", "ROLE", |
| 82 | + "SQL", "TEMPORARY", "WRITE", "ROLES", "SQLCODE", "THREAD", "WORK", |
| 83 | + "ROLLBACK", "SQLERROR", "TIME", "ABORT", "BETWEEN", "CRASH", |
| 84 | + "DIGITS", "ACCEPT", "BINARY_INTEGER", "CREATE", "DISPOSE", |
| 85 | + "ACCESS", "BODY", "CURRENT", "DISTINCT", "ADD", "BOOLEAN", |
| 86 | + "CURRVAL", "DO", "ALL", "BY", "CURSOR", "DROP", "ALTER", "CASE", |
| 87 | + "DATABASE", "ELSE", "AND", "CHAR", "DATA_BASE", "ELSIF", "ANY", |
| 88 | + "CHAR_BASE", "DATE", "END", "ARRAY", "CHECK", "DBA", "ENTRY", |
| 89 | + "ARRAYLEN", "CLOSE", "DEBUGOFF", "EXCEPTION", "AS", "CLUSTER", |
| 90 | + "DEBUGON", "EXCEPTION_INIT", "ASC", "CLUSTERS", "DECLARE", |
| 91 | + "EXISTS", "ASSERT", "COLAUTH", "DECIMAL", "EXIT", "ASSIGN", |
| 92 | + "COLUMNS", "DEFAULT", "FALSE", "AT", "COMMIT", "DEFINITION", |
| 93 | + "FETCH", "AUTHORIZATION", "COMPRESS", "DELAY", "FLOAT", "AVG", |
| 94 | + "CONNECT", "DELETE", "FOR", "BASE_TABLE", "CONSTANT", "DELTA", |
| 95 | + "FORM", "BEGIN", "COUNT", "DESC", "FROM", "FUNCTION", "NEW", |
| 96 | + "RELEASE", "SUM", "GENERIC", "NEXTVAL", "REMR", "TABAUTH", "GOTO", |
| 97 | + "NOCOMPRESS", "RENAME", "TABLE", "GRANT", "NOT", "RESOURCE", |
| 98 | + "TABLES", "GROUP", "NULL", "RETURN", "TASK", "HAVING", "NUMBER", |
| 99 | + "REVERSE", "TERMINATE", "IDENTIFIED", "NUMBER_BASE", "REVOKE", |
| 100 | + "THEN", "IF", "OF", "ROLLBACK", "TO", "IN", "ON", "ROWID", "TRUE", |
| 101 | + "INDEX", "OPEN", "ROWLABEL", "TYPE", "INDEXES", "OPTION", |
| 102 | + "ROWNUM", "UNION", "INDICATOR", "OR", "ROWTYPE", "UNIQUE", |
| 103 | + "INSERT", "ORDER", "RUN", "UPDATE", "INTEGER", "OTHERS", |
| 104 | + "SAVEPOINT", "USE", "INTERSECT", "OUT", "SCHEMA", "VALUES", |
| 105 | + "INTO", "PACKAGE", "SELECT", "VARCHAR", "IS", "PARTITION", |
| 106 | + "SEPARATE", "VARCHAR2", "LEVEL", "PCTFREE", "SET", "VARIANCE", |
| 107 | + "LIKE", "POSITIVE", "SIZE", "VIEW", "LIMITED", "PRAGMA", |
| 108 | + "SMALLINT", "VIEWS", "LOOP", "PRIOR", "SPACE", "WHEN", "MAX", |
| 109 | + "PRIVATE", "SQL", "WHERE", "MIN", "PROCEDURE", "SQLCODE", "WHILE", |
| 110 | + "MINUS", "PUBLIC", "SQLERRM", "WITH", "MLSLABEL", "RAISE", |
| 111 | + "START", "WORK", "MOD", "RANGE", "STATEMENT", "XOR", "MODE", |
| 112 | + "REAL", "STDDEV", "NATURAL", "RECORD", "SUBTYPE" |
| 113 | +] |
| 114 | + |
| 115 | +oracle_spatial_keywords = [] |
| 116 | + |
| 117 | +# SQL functions |
| 118 | +# other than math/string/aggregate/date/conversion/xml/data mining |
| 119 | +functions = [ |
| 120 | + # FROM |
| 121 | + # https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions001.htm |
| 122 | + "CAST", "COALESCE", "DECODE", "GREATEST", "LEAST", "LNNVL", |
| 123 | + "NULLIF", "NVL", "NVL2", "SET", "UID", "USER", "USERENV" |
| 124 | +] |
| 125 | + |
| 126 | +# SQL math functions |
| 127 | +math_functions = [ |
| 128 | + 'ABS', 'ACOS', 'ASIN', 'ATAN', 'ATAN2', 'BITAND', 'CEIL', 'COS', |
| 129 | + 'COSH', 'EXP', 'FLOOR', 'LN', 'LOG', 'MOD', 'NANVL', 'POWER', |
| 130 | + 'REMAINDER', 'ROUND', 'SIGN', 'SIN', 'SINH', 'SQRT', 'TAN', |
| 131 | + 'TANH', 'TRUNC', 'WIDTH_BUCKET' |
| 132 | +] |
| 133 | + |
| 134 | +# Strings functions |
| 135 | +string_functions = [ |
| 136 | + 'CHR', 'CONCAT', 'INITCAP', 'LOWER', 'LPAD', 'LTRIM', 'NLS_INITCAP', |
| 137 | + 'NLS_LOWER', 'NLSSORT', 'NLS_UPPER', 'REGEXP_REPLACE', 'REGEXP_SUBSTR', |
| 138 | + 'REPLACE', 'RPAD', 'RTRIM', 'SOUNDEX', 'SUBSTR', 'TRANSLATE', 'TREAT', |
| 139 | + 'TRIM', 'UPPER', 'ASCII', 'INSTR', 'LENGTH', 'REGEXP_INSTR' |
| 140 | +] |
| 141 | + |
| 142 | +# Aggregate functions |
| 143 | +aggregate_functions = [ |
| 144 | + 'AVG', 'COLLECT', 'CORR', 'COUNT', 'COVAR_POP', 'COVAR_SAMP', 'CUME_DIST', |
| 145 | + 'DENSE_RANK', 'FIRST', 'GROUP_ID', 'GROUPING', 'GROUPING_ID', |
| 146 | + 'LAST', 'MAX', 'MEDIAN', 'MIN', 'PERCENTILE_CONT', |
| 147 | + 'PERCENTILE_DISC', 'PERCENT_RANK', 'RANK', |
| 148 | + 'STATS_BINOMIAL_TEST', 'STATS_CROSSTAB', 'STATS_F_TEST', |
| 149 | + 'STATS_KS_TEST', 'STATS_MODE', 'STATS_MW_TEST', |
| 150 | + 'STATS_ONE_WAY_ANOVA', 'STATS_WSR_TEST', 'STDDEV', |
| 151 | + 'STDDEV_POP', 'STDDEV_SAMP', 'SUM', 'SYS_XMLAGG', 'VAR_POP', |
| 152 | + 'VAR_SAMP', 'VARIANCE', 'XMLAGG' |
| 153 | +] |
| 154 | + |
| 155 | +oracle_spatial_functions = [ |
| 156 | + # From http://docs.oracle.com/cd/B19306_01/appdev.102/b14255/toc.htm |
| 157 | + # Spatial operators |
| 158 | + "SDO_ANYINTERACT", "SDO_CONTAINS", "SDO_COVEREDBY", "SDO_COVERS", |
| 159 | + "SDO_EQUAL", "SDO_FILTER", "SDO_INSIDE", "SDO_JOIN", "SDO_NN", |
| 160 | + "SDO_NN_DISTANCE", "SDO_ON", "SDO_OVERLAPBDYDISJOINT", |
| 161 | + "SDO_OVERLAPBDYINTERSECT", "SDO_OVERLAPS", "SDO_RELATE", |
| 162 | + "SDO_TOUCH", "SDO_WITHIN_DISTANCE", |
| 163 | + # SPATIAL AGGREGATE FUNCTIONS |
| 164 | + "SDO_AGGR_CENTROID", "SDO_AGGR_CONCAT_LINES", |
| 165 | + "SDO_AGGR_CONVEXHULL", "SDO_AGGR_LRS_CONCAT", "SDO_AGGR_MBR", |
| 166 | + "SDO_AGGR_UNION", |
| 167 | + # COORDINATE SYSTEM TRANSFORMATION (SDO_CS) |
| 168 | + "SDO_CS.ADD_PREFERENCE_FOR_OP", "SDO_CS.CONVERT_NADCON_TO_XML", |
| 169 | + "SDO_CS.CONVERT_NTV2_TO_XML", "SDO_CS.CONVERT_XML_TO_NADCON", |
| 170 | + "SDO_CS.CONVERT_XML_TO_NTV2", "SDO_CS.CREATE_CONCATENATED_OP", |
| 171 | + "SDO_CS.CREATE_OBVIOUS_EPSG_RULES", |
| 172 | + "SDO_CS.CREATE_PREF_CONCATENATED_OP", |
| 173 | + "SDO_CS.DELETE_ALL_EPSG_RULES", "SDO_CS.DELETE_OP", |
| 174 | + "SDO_CS.DETERMINE_CHAIN", "SDO_CS.DETERMINE_DEFAULT_CHAIN", |
| 175 | + "SDO_CS.FIND_GEOG_CRS", "SDO_CS.FIND_PROJ_CRS", |
| 176 | + "SDO_CS.FROM_OGC_SIMPLEFEATURE_SRS", "SDO_CS.FROM_USNG", |
| 177 | + "SDO_CS.MAP_EPSG_SRID_TO_ORACLE", |
| 178 | + "SDO_CS.MAP_ORACLE_SRID_TO_EPSG", |
| 179 | + "SDO_CS.REVOKE_PREFERENCE_FOR_OP", |
| 180 | + "SDO_CS.TO_OGC_SIMPLEFEATURE_SRS", "SDO_CS.TO_USNG", |
| 181 | + "SDO_CS.TRANSFORM", "SDO_CS.TRANSFORM_LAYER", |
| 182 | + "SDO_CS.UPDATE_WKTS_FOR_ALL_EPSG_CRS", |
| 183 | + "SDO_CS.UPDATE_WKTS_FOR_EPSG_CRS", |
| 184 | + "SDO_CS.UPDATE_WKTS_FOR_EPSG_DATUM", |
| 185 | + "SDO_CS.UPDATE_WKTS_FOR_EPSG_ELLIPS", |
| 186 | + "SDO_CS.UPDATE_WKTS_FOR_EPSG_OP", |
| 187 | + "SDO_CS.UPDATE_WKTS_FOR_EPSG_PARAM", |
| 188 | + "SDO_CS.UPDATE_WKTS_FOR_EPSG_PM", "SDO_CS.VALIDATE_WKT", |
| 189 | + "SDO_CS.VIEWPORT_TRANSFORM", |
| 190 | + # GEOCODING (SDO_GCDR) |
| 191 | + "SDO_GCDR.GEOCODE", "SDO_GCDR.GEOCODE_ADDR", |
| 192 | + "SDO_GCDR.GEOCODE_ADDR_ALL", "SDO_GCDR.GEOCODE_ALL", |
| 193 | + "SDO_GCDR.GEOCODE_AS_GEOMETRY", "SDO_GCDR.REVERSE_GEOCODE", |
| 194 | + # GEOMETRY (SDO_GEOM) |
| 195 | + "SDO_GEOM.RELATE", "SDO_GEOM.SDO_ARC_DENSIFY", |
| 196 | + "SDO_GEOM.SDO_AREA", "SDO_GEOM.SDO_BUFFER", |
| 197 | + "SDO_GEOM.SDO_CENTROID", "SDO_GEOM.SDO_CONVEXHULL", |
| 198 | + "SDO_GEOM.SDO_DIFFERENCE", "SDO_GEOM.SDO_DISTANCE", |
| 199 | + "SDO_GEOM.SDO_INTERSECTION", "SDO_GEOM.SDO_LENGTH", |
| 200 | + "SDO_GEOM.SDO_MAX_MBR_ORDINATE", "SDO_GEOM.SDO_MBR", |
| 201 | + "SDO_GEOM.SDO_MIN_MBR_ORDINATE", "SDO_GEOM.SDO_POINTONSURFACE", |
| 202 | + "SDO_GEOM.SDO_UNION", "SDO_GEOM.SDO_XOR", |
| 203 | + "SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT", |
| 204 | + "SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT", |
| 205 | + "SDO_GEOM.WITHIN_DISTANCE", |
| 206 | + # LINEAR REFERENCING SYSTEM (SDO_LRS) |
| 207 | + "SDO_LRS.CLIP_GEOM_SEGMENT", "SDO_LRS.CONCATENATE_GEOM_SEGMENTS", |
| 208 | + "SDO_LRS.CONNECTED_GEOM_SEGMENTS", |
| 209 | + "SDO_LRS.CONVERT_TO_LRS_DIM_ARRAY", "SDO_LRS.CONVERT_TO_LRS_GEOM", |
| 210 | + "SDO_LRS.CONVERT_TO_LRS_LAYER", |
| 211 | + "SDO_LRS.CONVERT_TO_STD_DIM_ARRAY", "SDO_LRS.CONVERT_TO_STD_GEOM", |
| 212 | + "SDO_LRS.CONVERT_TO_STD_LAYER", "SDO_LRS.DEFINE_GEOM_SEGMENT", |
| 213 | + "SDO_LRS.DYNAMIC_SEGMENT", "SDO_LRS.FIND_LRS_DIM_POS", |
| 214 | + "SDO_LRS.FIND_MEASURE", "SDO_LRS.FIND_OFFSET", |
| 215 | + "SDO_LRS.GEOM_SEGMENT_END_MEASURE", "SDO_LRS.GEOM_SEGMENT_END_PT", |
| 216 | + "SDO_LRS.GEOM_SEGMENT_LENGTH", |
| 217 | + "SDO_LRS.GEOM_SEGMENT_START_MEASURE", |
| 218 | + "SDO_LRS.GEOM_SEGMENT_START_PT", "SDO_LRS.GET_MEASURE", |
| 219 | + "SDO_LRS.GET_NEXT_SHAPE_PT", "SDO_LRS.GET_NEXT_SHAPE_PT_MEASURE", |
| 220 | + "SDO_LRS.GET_PREV_SHAPE_PT", "SDO_LRS.GET_PREV_SHAPE_PT_MEASURE", |
| 221 | + "SDO_LRS.IS_GEOM_SEGMENT_DEFINED", |
| 222 | + "SDO_LRS.IS_MEASURE_DECREASING", "SDO_LRS.IS_MEASURE_INCREASING", |
| 223 | + "SDO_LRS.IS_SHAPE_PT_MEASURE", "SDO_LRS.LOCATE_PT", |
| 224 | + "SDO_LRS.LRS_INTERSECTION", "SDO_LRS.MEASURE_RANGE", |
| 225 | + "SDO_LRS.MEASURE_TO_PERCENTAGE", "SDO_LRS.OFFSET_GEOM_SEGMENT", |
| 226 | + "SDO_LRS.PERCENTAGE_TO_MEASURE", "SDO_LRS.PROJECT_PT", |
| 227 | + "SDO_LRS.REDEFINE_GEOM_SEGMENT", "SDO_LRS.RESET_MEASURE", |
| 228 | + "SDO_LRS.REVERSE_GEOMETRY", "SDO_LRS.REVERSE_MEASURE", |
| 229 | + "SDO_LRS.SET_PT_MEASURE", "SDO_LRS.SPLIT_GEOM_SEGMENT", |
| 230 | + "SDO_LRS.TRANSLATE_MEASURE", "SDO_LRS.VALID_GEOM_SEGMENT", |
| 231 | + "SDO_LRS.VALID_LRS_PT", "SDO_LRS.VALID_MEASURE", |
| 232 | + "SDO_LRS.VALIDATE_LRS_GEOMETRY", |
| 233 | + # SDO_MIGRATE |
| 234 | + "SDO_MIGRATE.TO_CURRENT", |
| 235 | + # SPATIAL ANALYSIS AND MINING (SDO_SAM) |
| 236 | + "SDO_SAM.AGGREGATES_FOR_GEOMETRY", "SDO_SAM.AGGREGATES_FOR_LAYER", |
| 237 | + "SDO_SAM.BIN_GEOMETRY", "SDO_SAM.BIN_LAYER", |
| 238 | + "SDO_SAM.COLOCATED_REFERENCE_FEATURES", |
| 239 | + "SDO_SAM.SIMPLIFY_GEOMETRY", "SDO_SAM.SIMPLIFY_LAYER", |
| 240 | + "SDO_SAM.SPATIAL_CLUSTERS", "SDO_SAM.TILED_AGGREGATES", |
| 241 | + "SDO_SAM.TILED_BINS", |
| 242 | + # TUNING (SDO_TUNE) |
| 243 | + "SDO_TUNE.AVERAGE_MBR", "SDO_TUNE.ESTIMATE_RTREE_INDEX_SIZE", |
| 244 | + "SDO_TUNE.EXTENT_OF", "SDO_TUNE.MIX_INFO", |
| 245 | + "SDO_TUNE.QUALITY_DEGRADATION", |
| 246 | + # UTILITY (SDO_UTIL) |
| 247 | + "SDO_UTIL.APPEND", "SDO_UTIL.CIRCLE_POLYGON", |
| 248 | + "SDO_UTIL.CONCAT_LINES", "SDO_UTIL.CONVERT_UNIT", |
| 249 | + "SDO_UTIL.ELLIPSE_POLYGON", "SDO_UTIL.EXTRACT", |
| 250 | + "SDO_UTIL.FROM_WKBGEOMETRY", "SDO_UTIL.FROM_WKTGEOMETRY", |
| 251 | + "SDO_UTIL.GETNUMELEM", "SDO_UTIL.GETNUMVERTICES", |
| 252 | + "SDO_UTIL.GETVERTICES", "SDO_UTIL.INITIALIZE_INDEXES_FOR_TTS", |
| 253 | + "SDO_UTIL.POINT_AT_BEARING", "SDO_UTIL.POLYGONTOLINE", |
| 254 | + "SDO_UTIL.PREPARE_FOR_TTS", "SDO_UTIL.RECTIFY_GEOMETRY", |
| 255 | + "SDO_UTIL.REMOVE_DUPLICATE_VERTICES", |
| 256 | + "SDO_UTIL.REVERSE_LINESTRING", "SDO_UTIL.SIMPLIFY", |
| 257 | + "SDO_UTIL.TO_GMLGEOMETRY", "SDO_UTIL.TO_WKBGEOMETRY", |
| 258 | + "SDO_UTIL.TO_WKTGEOMETRY", "SDO_UTIL.VALIDATE_WKBGEOMETRY", |
| 259 | + "SDO_UTIL.VALIDATE_WKTGEOMETRY" |
| 260 | +] |
| 261 | + |
| 262 | +# Oracle Operators |
| 263 | +operators = [ |
| 264 | + ' AND ', ' OR ', '||', ' < ', ' <= ', ' > ', ' >= ', ' = ', |
| 265 | + ' <> ', '!=', '^=', ' IS ', ' IS NOT ', ' IN ', ' ANY ', ' SOME ', |
| 266 | + ' NOT IN ', ' LIKE ', ' GLOB ', ' MATCH ', ' REGEXP ', |
| 267 | + ' BETWEEN x AND y ', ' NOT BETWEEN x AND y ', ' EXISTS ', |
| 268 | + ' IS NULL ', ' IS NOT NULL', ' ALL ', ' NOT ', |
| 269 | + ' CASE {column} WHEN {value} THEN {value} ' |
| 270 | +] |
| 271 | + |
| 272 | + |
| 273 | +# constants |
| 274 | +constants = ["null", "false", "true"] |
| 275 | +oracle_spatial_constants = [] |
| 276 | + |
| 277 | + |
| 278 | +def getSqlDictionary(spatial=True): |
| 279 | + k, c, f = list(keywords), list(constants), list(functions) |
| 280 | + |
| 281 | + if spatial: |
| 282 | + k += oracle_spatial_keywords |
| 283 | + f += oracle_spatial_functions |
| 284 | + c += oracle_spatial_constants |
| 285 | + |
| 286 | + return {'keyword': k, 'constant': c, 'function': f} |
| 287 | + |
| 288 | + |
| 289 | +def getQueryBuilderDictionary(): |
| 290 | + # concat functions |
| 291 | + def ff(l): |
| 292 | + return filter(lambda s: s[0] != '*', l) |
| 293 | + |
| 294 | + def add_paren(l): |
| 295 | + return map(lambda s: s + "(", l) |
| 296 | + |
| 297 | + foo = sorted( |
| 298 | + add_paren( |
| 299 | + ff( |
| 300 | + list( |
| 301 | + set.union(set(functions), |
| 302 | + set(oracle_spatial_functions)))))) |
| 303 | + m = sorted(add_paren(ff(math_functions))) |
| 304 | + agg = sorted(add_paren(ff(aggregate_functions))) |
| 305 | + op = ff(operators) |
| 306 | + s = sorted(add_paren(ff(string_functions))) |
| 307 | + return {'function': foo, 'math': m, 'aggregate': agg, |
| 308 | + 'operator': op, 'string': s} |
0 commit comments