# HG changeset patch # User catherine@dellzilla # Date 1236717747 14400 # Node ID 230447ce6e607a44d38b79b3c8267cbd3300a33d # Parent f0f293d83337cd9337c1dea6f807f47342471ba6 end wed diff -r f0f293d83337 -r 230447ce6e60 sqlpython/sqlpyPlus.py --- a/sqlpython/sqlpyPlus.py Wed Mar 04 17:44:29 2009 -0500 +++ b/sqlpython/sqlpyPlus.py Tue Mar 10 16:42:27 2009 -0400 @@ -670,20 +670,22 @@ self.stdout = open(filename, 'w') if vc: subprocess.call(vc + [filename]) - try: - if object_type == 'PACKAGE': - ddl = [['PACKAGE_SPEC', object_name, owner],['PACKAGE_BODY', object_name, owner]] - elif object_type in ['CONTEXT', 'DIRECTORY', 'JOB']: - ddl = [[object_type, object_name]] - else: - ddl = [[object_type, object_name, owner]] - for ddlargs in ddl: + if object_type == 'PACKAGE': + ddl = [['PACKAGE_SPEC', object_name, owner],['PACKAGE_BODY', object_name, owner]] + elif object_type in ['CONTEXT', 'DIRECTORY', 'JOB']: + ddl = [[object_type, object_name]] + else: + ddl = [[object_type, object_name, owner]] + for ddlargs in ddl: + try: self.stdout.write('REMARK BEGIN %s\n%s\nREMARK END\n\n' % (object_name, str(self.curs.callfunc('DBMS_METADATA.GET_DDL', cx_Oracle.CLOB, ddlargs)))) - except cx_Oracle.DatabaseError: - if object_type == 'JOB': - print '%s: DBMS_METADATA.GET_DDL does not support JOBs (MetaLink DocID 567504.1)' % object_name - continue - raise + except cx_Oracle.DatabaseError, errmsg: + if object_type == 'JOB': + print '%s: DBMS_METADATA.GET_DDL does not support JOBs (MetaLink DocID 567504.1)' % object_name + elif 'ORA-31603' in str(errmsg): # not found, as in package w/o package body + pass + else: + raise if opts.full: for dependent_type in ('OBJECT_GRANT', 'CONSTRAINT', 'TRIGGER'): try: @@ -735,6 +737,11 @@ supported_ddl_types = supported_ddl_types.split(', ') def _vc(self, arg, opts, program): + if not os.path.exists('.%s' % program): + create = raw_input('%s repository not yet in current directory (%s). Create (y/N)? ' % + (program, os.getcwd())) + if not create.strip().lower().startswith('y'): + return subprocess.call([program, 'init']) opts.dump = True self._pull(arg, opts, vc=[program, 'add'])