1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356
|
/* BEGIN_COMMON_COPYRIGHT_HEADER
*
* TOra - An Oracle Toolkit for DBA's and developers
*
* Shared/mixed copyright is held throughout files in this product
*
* Portions Copyright (C) 2000-2001 Underscore AB
* Portions Copyright (C) 2003-2005 Quest Software, Inc.
* Portions Copyright (C) 2004-2009 Numerous Other Contributors
*
* 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; only version 2 of
* the License is valid for this program.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* As a special exception, you have permission to link this program
* with the Oracle Client libraries and distribute executables, as long
* as you follow the requirements of the GNU GPL in regard to all of the
* software in the executable aside from Oracle client libraries.
*
* Specifically you are not permitted to link this program with the
* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
* And you are not permitted to distribute binaries compiled against
* these libraries.
*
* You may link this product with any GPL'd Qt library.
*
* All trademarks belong to their respective owners.
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef TO_ORACLEEXTRACT
#define TO_ORACLEEXTRACT
#include "utils.h"
#include "toconf.h"
#include "toconnection.h"
#include "toextract.h"
#include "tosql.h"
#include "totool.h"
#include <qapplication.h>
#include <qregexp.h>
// Some convenient defines
static const QString ORACLE_NAME("Oracle");
#define CONNECTION (ext.connection())
#define QUOTE(x) (ext.connection().quote(x))
#define PROMPT (ext.getPrompt())
#define addDescription toExtract::addDescription
class toOracleExtract : public toExtract::extractor
{
std::list<toExtract::datatype> oracle_datatypes;
// Misc utility functions
void clearFlags(toExtract &ext) const;
QString displaySource(toExtract &ext, const QString &schema, const QString &owner,
const QString &name, const QString &type, bool describe) const;
QString keyColumns(toExtract &ext, const QString &owner, const QString &name,
const QString &type, const QString &table) const;
QString partitionKeyColumns(toExtract &ext, const QString &owner,
const QString &name, const QString &type) const;
static QString prepareDB(const QString &data);
QString segments(toExtract &ext) const;
QString segments(toExtract &ext, const toSQL &sql) const;
QString subPartitionKeyColumns(toExtract &ext, const QString &owner,
const QString &name, const QString &type) const;
// Create utility functions
QString constraintColumns(toExtract &ext, const QString &owner, const QString &name) const;
QString createComments(toExtract &ext, const QString &schema,
const QString &owner, const QString &name) const;
QString createContextPrefs(toExtract &ext, const QString &schema, const QString &owner,
const QString &name, const QString &sql) const;
QString createIOT(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createMView(toExtract &ext, const QString &schema, const QString &owner,
const QString &name, const QString &type) const;
QString createMViewIndex(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createMViewLog(toExtract &ext, const QString &schema, const QString &owner,
const QString &name, const QString &type) const;
QString createMViewTable(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createPartitionedIOT(toExtract &ext, const QString &schema,
const QString &owner, const QString &name) const;
QString createPartitionedIndex(toExtract &ext, const QString &schema, const QString &owner,
const QString &name, const QString &sql) const;
QString createPartitionedTable(toExtract &ext, const QString &schema,
const QString &owner, const QString &name) const;
QString createTableText(toExtract &ext, toQList &result, const QString &schema,
const QString &owner, const QString &name) const;
QString grantedPrivs(toExtract &ext, const QString &dest, const QString &name, int typ) const;
QString indexColumns(toExtract &ext, const QString &indent, const QString &owner,
const QString &name) const;
QString rangePartitions(toExtract &ext, const QString &owner, const QString &name,
const QString &subPartitionType, const QString &caller) const;
QString segmentAttributes(toExtract &ext, toQList &result) const;
QString tableColumns(toExtract &ext, const QString &owner, const QString &name) const;
// Describe utility functions
void describeAttributes(toExtract &ext, std::list<QString> &dsp, std::list<QString> &ctx,
toQList &result) const;
void describeComments(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
const QString &owner, const QString &name) const;
void describePrivs(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
const QString &name) const;
void describeIOT(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
const QString &schema, const QString &owner, const QString &name) const;
void describeIndexColumns(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
const QString &owner, const QString &name) const;
void describeMView(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name, const QString &type) const;
void describeMViewIndex(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
const QString &schema, const QString &owner, const QString &name) const;
void describeMViewLog(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name, const QString &type) const;
void describeMViewTable(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
const QString &schema, const QString &owner, const QString &name) const;
void describePartitions(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
const QString &owner, const QString &name,
const QString &subPartitionType, const QString &caller) const;
void describePartitionedIOT(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
const QString &schema, const QString &owner,
const QString &name) const;
void describePartitionedIndex(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
const QString &schema, const QString &owner,
const QString &name) const;
void describePartitionedTable(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
const QString &schema, const QString &owner,
const QString &name) const;
void describeSource(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name, const QString &type) const;
void describeTableColumns(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
const QString &owner, const QString &name) const;
void describeTableText(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
toQList &result, const QString &schema, const QString &owner,
const QString &name) const;
// Migrate utility functions
QString migrateAttributes(std::list<QString> &desc,
std::list<QString>::iterator i,
int level,
const QString &indent) const;
QString migrateIndexColumns(std::list<QString> &destin,
std::list<QString>::iterator i,
const QString &context) const;
QString migratePartitions(std::list<QString> &desc,
std::list<QString>::iterator &i,
int level,
const QString &indent) const;
QString migratePrivs(toExtract &ext,
std::list<QString> &source,
std::list<QString> &destin,
const QString &type) const;
QString migrateSource(toExtract &ext,
std::list<QString> &source,
std::list<QString> &destin,
const QString &type) const;
QString createTable(std::list<QString> &destin) const;
QString alterTable(std::list<QString> &source, std::list<QString> &destin) const;
// Create functions
QString createConstraint(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createDBLink(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createExchangeIndex(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createExchangeTable(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createFunction(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createIndex(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createMaterializedView(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createMaterializedViewLog(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createPackage(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createPackageBody(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createProcedure(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createProfile(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createRole(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createRollbackSegment(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createSequence(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createSnapshot(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createSnapshotLog(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createSynonym(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createTable(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createTableFamily(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
void createTableContents(toExtract &ext, QTextStream &stream,
const QString &schema, const QString &owner, const QString &name) const;
QString createTableReferences(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createTablespace(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createTrigger(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createType(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createUser(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
QString createView(toExtract &ext, const QString &schema, const QString &owner,
const QString &name) const;
// Describe functions
void describeConstraint(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeDBLink(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeExchangeIndex(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeExchangeTable(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeFunction(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeIndex(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeMaterializedView(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeMaterializedViewLog(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describePackage(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describePackageBody(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeProcedure(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeProfile(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeRole(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeRollbackSegment(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeSequence(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeSnapshot(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeSnapshotLog(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeSynonym(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeTable(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeTableFamily(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeTableReferences(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeTablespace(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeTrigger(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeType(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeUser(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
void describeView(toExtract &ext, std::list<QString> &lst, const QString &schema,
const QString &owner, const QString &name) const;
// Drop functions
QString dropConstraint(toExtract &ext, const QString &schema, const QString &owner,
const QString &type, const QString &name) const;
QString dropDatabaseLink(toExtract &ext, const QString &schema, const QString &owner,
const QString &type, const QString &name) const;
QString dropMViewLog(toExtract &ext, const QString &schema, const QString &owner,
const QString &type, const QString &name) const;
QString dropObject(toExtract &ext, const QString &schema, const QString &owner,
const QString &type, const QString &name) const;
QString dropProfile(toExtract &ext, const QString &schema, const QString &owner,
const QString &type, const QString &name) const;
QString dropSchemaObject(toExtract &ext, const QString &schema, const QString &owner,
const QString &type, const QString &name) const;
QString dropSynonym(toExtract &ext, const QString &schema, const QString &owner,
const QString &type, const QString &name) const;
QString dropTable(toExtract &ext, const QString &schema, const QString &owner,
const QString &type, const QString &name) const;
QString dropTablespace(toExtract &ext, const QString &schema, const QString &owner,
const QString &type, const QString &name) const;
QString dropUser(toExtract &ext, const QString &schema, const QString &owner,
const QString &type, const QString &name) const;
// Migrate functions
QString migrateConstraint(toExtract &ext, std::list<QString> &source,
std::list<QString> &destin) const;
QString migrateDBLink(toExtract &ext, std::list<QString> &source,
std::list<QString> &destin) const;
QString migrateFunction(toExtract &ext, std::list<QString> &source,
std::list<QString> &destin) const;
QString migrateIndex(toExtract &ext, std::list<QString> &source,
std::list<QString> &destin) const;
QString migratePackage(toExtract &ext, std::list<QString> &source,
std::list<QString> &destin) const;
QString migratePackageBody(toExtract &ext, std::list<QString> &source,
std::list<QString> &destin) const;
QString migrateProcedure(toExtract &ext, std::list<QString> &source,
std::list<QString> &destin) const;
QString migrateRole(toExtract &ext, std::list<QString> &source,
std::list<QString> &destin) const;
QString migrateSequence(toExtract &ext, std::list<QString> &source,
std::list<QString> &destin) const;
QString migrateTable(toExtract &ext, std::list<QString> &source,
std::list<QString> &destin) const;
public:
// Public interface
toOracleExtract();
virtual ~toOracleExtract();
virtual void initialize(toExtract &ext) const;
virtual void create(toExtract &ext, QTextStream &stream,
const QString &type, const QString &schema,
const QString &owner, const QString &name) const;
virtual void describe(toExtract &ext, std::list<QString> &lst, const QString &type,
const QString &schema, const QString &owner, const QString &name) const;
virtual void drop(toExtract &ext, QTextStream &stream, const QString &type, const QString &schema,
const QString &owner, const QString &name) const;
virtual void migrate(toExtract &ext,
QTextStream &stream,
const QString &type,
std::list<QString> &src,
std::list<QString> &dst) const;
virtual std::list<toExtract::datatype> datatypes() const;
};
#endif
|