Просмотр исходного кода

[HUE-5930] [Backend] Upgrade cx_Oracle python library to 5.2.1

(cherry picked from commit c4a1cd865e1db4d53525074f5bb8da3493ef1a13)
Prakash Ranade 9 лет назад
Родитель
Сommit
1fc2cf7d4e
100 измененных файлов с 2738 добавлено и 9062 удалено
  1. 0 715
      desktop/core/ext-py/cx_Oracle-5.1.2/HISTORY.txt
  2. 0 36
      desktop/core/ext-py/cx_Oracle-5.1.2/LICENSE.txt
  3. 0 540
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/basic.css
  4. BIN
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/comment-bright.png
  5. BIN
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/comment-close.png
  6. BIN
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/comment.png
  7. 0 256
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/default.css
  8. 0 247
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/doctools.js
  9. BIN
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/down-pressed.png
  10. BIN
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/down.png
  11. BIN
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/file.png
  12. 0 154
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/jquery.js
  13. BIN
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/minus.png
  14. BIN
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/plus.png
  15. 0 62
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/pygments.css
  16. 0 560
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/searchtools.js
  17. 0 151
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/sidebar.js
  18. 0 23
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/underscore.js
  19. BIN
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/up-pressed.png
  20. BIN
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/up.png
  21. 0 808
      desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/websupport.js
  22. 0 516
      desktop/core/ext-py/cx_Oracle-5.1.2/html/connection.html
  23. 0 533
      desktop/core/ext-py/cx_Oracle-5.1.2/html/cursor.html
  24. 0 1157
      desktop/core/ext-py/cx_Oracle-5.1.2/html/genindex.html
  25. 0 162
      desktop/core/ext-py/cx_Oracle-5.1.2/html/index.html
  26. 0 131
      desktop/core/ext-py/cx_Oracle-5.1.2/html/license.html
  27. 0 202
      desktop/core/ext-py/cx_Oracle-5.1.2/html/lob.html
  28. 0 1044
      desktop/core/ext-py/cx_Oracle-5.1.2/html/module.html
  29. BIN
      desktop/core/ext-py/cx_Oracle-5.1.2/html/objects.inv
  30. 0 115
      desktop/core/ext-py/cx_Oracle-5.1.2/html/py-modindex.html
  31. 0 106
      desktop/core/ext-py/cx_Oracle-5.1.2/html/search.html
  32. 0 0
      desktop/core/ext-py/cx_Oracle-5.1.2/html/searchindex.js
  33. 0 225
      desktop/core/ext-py/cx_Oracle-5.1.2/html/session_pool.html
  34. 0 276
      desktop/core/ext-py/cx_Oracle-5.1.2/html/subscription.html
  35. 0 192
      desktop/core/ext-py/cx_Oracle-5.1.2/html/variable.html
  36. 5 3
      desktop/core/ext-py/cx_Oracle-5.2.1/BUILD.txt
  37. 105 0
      desktop/core/ext-py/cx_Oracle-5.2.1/BooleanVar.c
  38. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/Buffer.c
  39. 15 21
      desktop/core/ext-py/cx_Oracle-5.2.1/Callback.c
  40. 76 75
      desktop/core/ext-py/cx_Oracle-5.2.1/Connection.c
  41. 204 24
      desktop/core/ext-py/cx_Oracle-5.2.1/Cursor.c
  42. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/CursorVar.c
  43. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/DateTimeVar.c
  44. 15 92
      desktop/core/ext-py/cx_Oracle-5.2.1/Environment.c
  45. 107 13
      desktop/core/ext-py/cx_Oracle-5.2.1/Error.c
  46. 55 48
      desktop/core/ext-py/cx_Oracle-5.2.1/ExternalLobVar.c
  47. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/ExternalObjectVar.c
  48. 1 1
      desktop/core/ext-py/cx_Oracle-5.2.1/IntervalVar.c
  49. 9 8
      desktop/core/ext-py/cx_Oracle-5.2.1/LobVar.c
  50. 3 7
      desktop/core/ext-py/cx_Oracle-5.2.1/LongVar.c
  51. 0 2
      desktop/core/ext-py/cx_Oracle-5.2.1/MANIFEST.in
  52. 15 27
      desktop/core/ext-py/cx_Oracle-5.2.1/NumberVar.c
  53. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/ObjectType.c
  54. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/ObjectVar.c
  55. 2 2
      desktop/core/ext-py/cx_Oracle-5.2.1/PKG-INFO
  56. 13 10
      desktop/core/ext-py/cx_Oracle-5.2.1/README.txt
  57. 22 14
      desktop/core/ext-py/cx_Oracle-5.2.1/SessionPool.c
  58. 25 38
      desktop/core/ext-py/cx_Oracle-5.2.1/StringVar.c
  59. 308 25
      desktop/core/ext-py/cx_Oracle-5.2.1/Subscription.c
  60. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/TimestampVar.c
  61. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/Transforms.c
  62. 44 40
      desktop/core/ext-py/cx_Oracle-5.2.1/Variable.c
  63. 52 26
      desktop/core/ext-py/cx_Oracle-5.2.1/cx_Oracle.c
  64. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/samples/DatabaseChangeNotification.py
  65. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/samples/DatabaseShutdown.py
  66. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/samples/DatabaseStartup.py
  67. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/samples/ReturnLongs.py
  68. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/samples/ReturnUnicode.py
  69. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/samples/RowsAsInstance.py
  70. 5 0
      desktop/core/ext-py/cx_Oracle-5.2.1/setup.cfg
  71. 75 34
      desktop/core/ext-py/cx_Oracle-5.2.1/setup.py
  72. 165 0
      desktop/core/ext-py/cx_Oracle-5.2.1/test/3kArrayDMLBatchError.py
  73. 29 29
      desktop/core/ext-py/cx_Oracle-5.2.1/test/3kNumberVar.py
  74. 55 68
      desktop/core/ext-py/cx_Oracle-5.2.1/test/3kStringVar.py
  75. 166 0
      desktop/core/ext-py/cx_Oracle-5.2.1/test/ArrayDMLBatchError.py
  76. 35 0
      desktop/core/ext-py/cx_Oracle-5.2.1/test/BooleanVar.py
  77. 0 2
      desktop/core/ext-py/cx_Oracle-5.2.1/test/Connection.py
  78. 12 12
      desktop/core/ext-py/cx_Oracle-5.2.1/test/Cursor.py
  79. 2 2
      desktop/core/ext-py/cx_Oracle-5.2.1/test/CursorVar.py
  80. 47 47
      desktop/core/ext-py/cx_Oracle-5.2.1/test/DateTimeVar.py
  81. 12 0
      desktop/core/ext-py/cx_Oracle-5.2.1/test/IntervalVar.py
  82. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/test/LobVar.py
  83. 5 5
      desktop/core/ext-py/cx_Oracle-5.2.1/test/LongVar.py
  84. 15 31
      desktop/core/ext-py/cx_Oracle-5.2.1/test/NCharVar.py
  85. 29 29
      desktop/core/ext-py/cx_Oracle-5.2.1/test/NumberVar.py
  86. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/test/ObjectVar.py
  87. 0 1
      desktop/core/ext-py/cx_Oracle-5.2.1/test/SessionPool.py
  88. 655 0
      desktop/core/ext-py/cx_Oracle-5.2.1/test/SetupTest-BooleanArrays.sql
  89. 53 12
      desktop/core/ext-py/cx_Oracle-5.2.1/test/SetupTest.sql
  90. 55 68
      desktop/core/ext-py/cx_Oracle-5.2.1/test/StringVar.py
  91. 7 1
      desktop/core/ext-py/cx_Oracle-5.2.1/test/TestEnv.py
  92. 14 14
      desktop/core/ext-py/cx_Oracle-5.2.1/test/TimestampVar.py
  93. 29 0
      desktop/core/ext-py/cx_Oracle-5.2.1/test/t.sql
  94. 10 3
      desktop/core/ext-py/cx_Oracle-5.2.1/test/test.py
  95. 7 1
      desktop/core/ext-py/cx_Oracle-5.2.1/test/test3k.py
  96. 0 0
      desktop/core/ext-py/cx_Oracle-5.2.1/test/test_dbapi20.py
  97. 166 0
      desktop/core/ext-py/cx_Oracle-5.2.1/test/uArrayDMLBatchError.py
  98. 0 2
      desktop/core/ext-py/cx_Oracle-5.2.1/test/uConnection.py
  99. 12 12
      desktop/core/ext-py/cx_Oracle-5.2.1/test/uCursor.py
  100. 2 2
      desktop/core/ext-py/cx_Oracle-5.2.1/test/uCursorVar.py

+ 0 - 715
desktop/core/ext-py/cx_Oracle-5.1.2/HISTORY.txt

@@ -1,715 +0,0 @@
-Changes from 5.1.1 to 5.1.2
- 1) Added support for LONG_UNICODE which is a type used to handle long unicode
-    strings. These are not explicitly supported in Oracle but can be used to
-    bind to NCLOB, for example, without getting the error "unimplemented or
-    unreasonable conversion requested".
- 2) Set the row number in a cursor when executing PL/SQL blocks as requested
-    by Robert Ritchie.
- 3) Added support for setting the module, action and client_info attributes
-    during connection so that logon triggers will see the supplied values, as
-    requested by Rodney Barnett.
-
-Changes from 5.1 to 5.1.1
- 1) Simplify management of threads for callbacks performed by database change
-    notification and eliminate a crash that occurred under high load in
-    certain situations. Thanks to Calvin S. for noting the issue and suggesting
-    a solution and testing the patch.
- 2) Force server detach on close so that the connection is completely closed
-    and not just the session as before.
- 3) Force use of OCI_UTF16ID for NCLOBs as using the default character set
-    would result in ORA-03127 with Oracle 11.2.0.2 and UTF8 character set.
- 4) Avoid attempting to clear temporary LOBs a second time when destroying the
-    variable as in certain situations this results in spurious errors.
- 5) Added additional parameter service_name to makedsn() which can be used to
-    use the service_name rather than the SID in the DSN string that is
-    generated.
- 6) Fix cursor description in test suite to take into account the number of
-    bytes per character.
- 7) Added tests for NCLOBS to the test suite.
- 8) Removed redundant code in setup.py for calculating the library path.
-
-Changes from 5.0.4 to 5.1
- 1) Remove support for UNICODE mode and permit Unicode to be passed through in
-    everywhere a string may be passed in. This means that strings will be
-    passed through to Oracle using the value of the NLS_LANG environment
-    variable in Python 3.x as well. Doing this eliminated a bunch of problems
-    that were discovered by using UNICODE mode and also removed an unnecessary
-    restriction in Python 2.x that Unicode could not be used in connect strings
-    or SQL statements, for example.
- 2) Added support for creating an empty object variable via a named type, the
-    first step to adding full object support.
- 3) Added support for Python 3.2.
- 4) Account for lib64 used on x86_64 systems. Thanks to Alex Wood for supplying
-    the patch.
- 5) Clear up potential problems when calling cursor.close() ahead of the
-    cursor being freed by going out of scope.
- 6) Avoid compilation difficulties on AIX5 as OCIPing does not appear to be
-    available on that platform under Oracle 10g Release 2. Thanks to
-    Pierre-Yves Fontaniere for the patch.
- 7) Free temporary LOBs prior to each fetch in order to avoid leaking them.
-    Thanks to Uwe Hoffmann for the initial patch.
-
-Changes from 5.0.3 to 5.0.4
- 1) Added support for Python 2.7.
- 2) Added support for new parameter (port) for subscription() call which allows
-    the client to specify the listening port for callback notifications from
-    the database server. Thanks to Geoffrey Weber for the initial patch.
- 3) Fixed compilation under Oracle 9i.
- 4) Fixed a few error messages.
-
-Changes from 5.0.2 to 5.0.3
- 1) Added support for 64-bit Windows.
- 2) Added support for Python 3.1 and dropped support for Python 3.0.
- 3) Added support for keyword arguments in cursor.callproc() and
-    cursor.callfunc().
- 4) Added documentation for the UNICODE and FIXED_UNICODE variable types.
- 5) Added extra link arguments required for Mac OS X as suggested by Jason
-    Woodward.
- 6) Added additional error codes to the list of error codes that raise
-    OperationalError rather than DatabaseError.
- 7) Fixed calculation of display size for strings with national database
-    character sets that are not the default AL16UTF16.
- 8) Moved the resetting of the setinputsizes flag before the binding takes
-    place so that if an error takes place and a new statement is prepared
-    subsequently, spurious errors will not occur.
- 9) Fixed compilation with Oracle 10g Release 1.
-10) Tweaked documentation based on feedback from a number of people.
-11) Added support for running the test suite using "python setup.py test"
-12) Added support for setting the CLIENT_IDENTIFIER value in the v$session
-    table for connections.
-13) Added exception when attempting to call executemany() with arrays which is
-    not supported by the OCI.
-14) Fixed bug when converting from decimal would result in OCI-22062 because
-    the locale decimal point was not a period. Thanks to Amaury Forgeot d'Arc
-    for the solution to this problem.
-
-Changes from 5.0.1 to 5.0.2
- 1) Fix creation of temporary NCLOB values and the writing of NCLOB values in
-    non Unicode mode.
- 2) Re-enabled parsing of non select statements as requested by Roy Terrill.
- 3) Implemented a parse error offset as requested by Catherine Devlin.
- 4) Removed lib subdirectory when forcing RPATH now that the library directory
-    is being calculated exactly in setup.py.
- 5) Added an additional cast in order to support compiling by Microsoft
-    Visual C++ 2008 as requested by Marco de Paoli.
- 6) Added additional include directory to setup.py in order to support
-    compiling by Microsoft Visual Studio was requested by Jason Coombs.
- 7) Fixed a few documentation issues.
-
-Changes from 5.0 to 5.0.1
- 1) Added support for database change notification available in Oracle 10g
-    Release 2 and higher.
- 2) Fix bug where NCLOB data would be corrupted upon retrieval (non Unicode
-    mode) or would generate exception ORA-24806 (LOB form mismatch). Oracle
-    insists upon differentiating between CLOB and NCLOB no matter which
-    character set is being used for retrieval.
- 3) Add new attributes size, bufferSize and numElements to variable objects,
-    deprecating allocelems (replaced by numElements) and maxlength (replaced
-    by bufferSize)
- 4) Avoid increasing memory allocation for strings when using variable width
-    character sets and increasing the number of elements in a variable during
-    executemany().
- 5) Tweaked code in order to ensure that cx_Oracle can compile with Python
-    3.0.1.
-
-Changes from 4.4.1 to 5.0
- 1) Added support for Python 3.0 with much help from Amaury Forgeot d'Arc.
- 2) Removed support for Python 2.3 and Oracle 8i.
- 3) Added support for full unicode mode in Python 2.x where all strings are
-    passed in and returned as unicode (module must be built in this mode)
-    rather than encoded strings
- 4) nchar and nvarchar columns now return unicode instead of encoded strings
- 5) Added support for an output type handler and/or an input type handler to be
-    specified at the connection and cursor levels.
- 6) Added support for specifying both input and output converters for variables
- 7) Added support for specifying the array size of variables that are created
-    using the cursor.var() method
- 8) Added support for events mode and database resident connection pooling
-    (DRCP) in Oracle 11g.
- 9) Added support for changing the password during construction of a new
-    connection object as well as after the connection object has been created
-10) Added support for the interval day to second data type in Oracle,
-    represented as datetime.timedelta objects in Python.
-11) Added support for getting and setting the current_schema attribute for a
-    session
-12) Added support for proxy authentication in session pools as requested by
-    Michael Wegrzynek (and thanks for the initial patch as well).
-13) Modified connection.prepare() to return a boolean indicating if a
-    transaction was actually prepared in order to avoid the error ORA-24756
-    (transaction does not exist).
-14) Raise a cx_Oracle.Error instance rather than a string for column
-    truncation errors as requested by Helge Tesdal.
-15) Fixed handling of environment handles in session pools in order to allow
-    session pools to fetch objects without exceptions taking place.
-
-Changes from 4.4 to 4.4.1
- 1) Make the bind variables and fetch variables accessible although they need
-    to be treated carefully since they are used internally; support added for
-    forward compatibility with version 5.x.
- 2) Include the "cannot insert null value" in the list of errors that are
-    treated as integrity errors as requested by Matt Boersma.
- 3) Use a cx_Oracle.Error instance rather than a string to hold the error when
-    truncation (ORA-1406) takes place as requested by Helge Tesdal.
- 4) Added support for fixed char, old style varchar and timestamp attribute
-    values in objects.
- 5) Tweaked setup.py to check for the Oracle version up front rather than
-    during the build in order to produce more meaningful errors and simplify
-    the code.
- 6) In setup.py added proper detection for the instant client on Mac OS X as
-    recommended by Martijn Pieters.
- 7) In setup.py, avoided resetting the extraLinkArgs on Mac OS X as doing so
-    prevents simple modification where desired as expressed by Christian
-    Zagrodnick.
- 8) Added documentation on exception handling as requested by Andreas Mock, who
-    also graciously provided an initial patch.
- 9) Modified documentation indicating that the password attribute on connection
-    objects can be written.
-10) Added documentation warning that parameters not passed in during subsequent
-    executions of a statement will retain their original values as requested by
-    Harald Armin Massa.
-11) Added comments indicating that an Oracle client is required since so many
-    people find this surprising.
-12) Removed all references to Oracle 8i from the documentation and version 5.x
-    will eliminate all vestiges of support for this version of the Oracle
-    client.
-13) Added additional link arguments for Cygwin as requested by Rob Gillen.
-
-Changes from 4.3.3 to 4.4
- 1) Fix setup.py to handle the Oracle instant client and Oracle XE on both
-    Linux and Windows as pointed out by many. Thanks also to the many people
-    who also provided patches.
- 2) Set the default array size to 50 instead of 1 as the DB API suggests
-    because the performance difference is so drastic and many people have
-    recommended that the default be changed.
- 3) Added Py_BEGIN_ALLOW_THREADS and Py_END_ALLOW_THREADS around each blocking
-    call for LOBs as requested by Jason Conroy who also provided an initial
-    patch and performed a number of tests that demonstrate the new code is much
-    more responsive.
- 4) Add support for acquiring cursor.description after a parse.
- 5) Defer type assignment when performing executemany() until the last possible
-    moment if the value being bound in is null as suggested by Dragos Dociu.
- 6) When dropping a connection from the pool, ignore any errors that occur
-    during the rollback; unfortunately, Oracle decides to commit data even when
-    dropping a connection from the pool instead of rolling it back so the
-    attempt still has to be made.
- 7) Added support for setting CLIENT_DRIVER in V$SESSION_CONNECT_INFO in Oracle
-    11g and higher.
- 8) Use cx_Oracle.InterfaceError rather than the builtin RuntimeError when
-    unable to create the Oracle environment object as requested by Luke Mewburn
-    since the error is specific to Oracle and someone attempting to catch any
-    exception cannot simply use cx_Oracle.Error.
- 9) Translated some error codes to OperationalError as requested by Matthew
-    Harriger; translated if/elseif/else logic to switch statement to make it
-    more readable and to allow for additional translation if desired.
-10) Transformed documentation to new format using restructured text. Thanks to
-    Waldemar Osuch for contributing the initial draft of the new documentation.
-11) Allow the password to be overwritten by a new value as requested by Alex
-    VanderWoude; this value is retained as a convenience to the user and not
-    used by anything in the module; if changed externally it may be convenient
-    to keep this copy up to date.
-12) Cygwin is on Windows so should be treated in the same way as noted by
-    Matthew Cahn.
-13) Add support for using setuptools if so desired as requested by Shreya
-    Bhatt.
-14) Specify that the version of Oracle 10 that is now primarily used is 10.2,
-    not 10.1.
-
-Changes from 4.3.2 to 4.3.3
- 1) Added method ping() on connections which can be used to test whether or not
-    a connection is still active (available in Oracle 10g R2).
- 2) Added method cx_Oracle.clientversion() which returns a 5-tuple giving the
-    version of the client that is in use (available in Oracle 10g R2).
- 3) Added methods startup() and shutdown() on connections which can be used to
-    startup and shutdown databases (available in Oracle 10g R2).
- 4) Added support for Oracle 11g.
- 5) Added samples directory which contains a handful of scripts containing
-    sample code for more advanced techniques. More will follow in future
-    releases.
- 6) Prevent error "ORA-24333: zero iteration count" when calling executemany()
-    with zero rows as requested by Andreas Mock.
- 7) Added methods __enter__() and __exit__() on connections to support using
-    connections as context managers in Python 2.5 and higher. The context
-    managed is the transaction state. Upon exit the transaction is either
-    rolled back or committed depending on whether an exception took place or
-    not.
- 8) Make the search for the lib32 and lib64 directories automatic for all
-    platforms.
- 9) Tweak the setup configuration script to include all of the metadata and
-    allow for building the module within another setup configuration script
-10) Include the Oracle version in addition to the Python version in the build
-    directories that are created and in the names of the binary packages that
-    are created.
-11) Remove unnecessary dependency on win32api to build module on Windows.
-
-Changes from 4.3.1 to 4.3.2
- 1) Added methods open(), close(), isopen() and getchunksize() in order to
-    improve performance of reading/writing LOB values in chunks.
- 2) Fixed support for native doubles and floats in Oracle 10g; added new type
-    NATIVE_FLOAT to allow specification of a variable of that specific type
-    where desired. Thanks to D.R. Boxhoorn for pointing out the fact that this
-    was not working properly when the arraysize was anything other than 1.
- 3) When calling connection.begin(), only create a new tranasction handle if
-    one is not already associated with the connection. Thanks to Andreas Mock
-    for discovering this and for Amaury Forgeot d'Arc for diagnosing the
-    problem and pointing the way to a solution.
- 4) Added attribute cursor.rowfactory which allows a method to be called for
-    each row that is returned; this is about 20% faster than calling the method
-    in Python using the idiom [method(*r) for r in cursor].
- 5) Attempt to locate an Oracle installation by looking at the PATH if the
-    environment variable ORACLE_HOME is not set; this is of primary use on
-    Windows where this variable should not normally be set.
- 6) Added support for autocommit mode as requested by Ian Kelly.
- 7) Added support for connection.stmtcachesize which allows for both reading
-    and writing the size of the statement cache size. This parameter can make a
-    huge difference with the length of time taken to prepare statements. Added
-    support for setting the statement tag when preparing a statement. Both of
-    these were requested by Bjorn Sandberg who also provided an initial patch.
- 8) When copying the value of a variable, copy the return code as well.
-
-Changes from 4.3 to 4.3.1
- 1) Ensure that if the client buffer size exceeds 4000 bytes that the server
-    buffer size does not as strings may only contain 4000 bytes; this allows
-    handling of multibyte character sets on the server as well as the client.
- 2) Added support for using buffer objects to populate binary data and made the
-    Binary() constructor the buffer type as requested by Ken Mason.
- 3) Fix potential crash when using full optimization with some compilers.
-    Thanks to Aris Motas for noticing this and providing the initial patch and
-    to Amaury Forgeot d'Arc for providing an even simpler solution.
- 4) Pass the correct charset form in to the write call in order to support
-    writing to national character set LOB values properly. Thanks to Ian Kelly
-    for noticing this discrepancy.
-
-Changes from 4.2.1 to 4.3
- 1) Added preliminary support for fetching Oracle objects (SQL types) as
-    requested by Kristof Beyls (who kindly provided an initial patch).
-    Additional work needs to be done to support binding and updating objects
-    but the basic structure is now in place.
- 2) Added connection.maxBytesPerCharacter which indicates the maximum number of
-    bytes each character can use; use this value to also determine the size of
-    local buffers in order to handle discrepancies between the client character
-    set and the server character set. Thanks to Andreas Mock for providing the
-    initial patch and working with me to resolve this issue.
- 3) Added support for querying native floats in Oracle 10g as requested by
-    Danny Boxhoorn.
- 4) Add support for temporary LOB variables created via PL/SQL instead of only
-    directly by cx_Oracle; thanks to Henning von Bargen for discovering this
-    problem.
- 5) Added support for specifying variable types using the builtin types int,
-    float, str and datetime.date which allows for finer control of what type of
-    Python object is returned from cursor.callfunc() for example.
- 6) Added support for passing booleans to callproc() and callfunc() as
-    requested by Anana Aiyer.
- 7) Fixed support for 64-bit environments in Python 2.5.
- 8) Thanks to Filip Ballegeer and a number of his co-workers, an intermittent
-    crash was tracked down; specifically, if a connection is closed, then the
-    call to OCIStmtRelease() will free memory twice. Preventing the call when
-    the connection is closed solves the problem.
-
-Changes from 4.2 to 4.2.1
- 1) Added additional type (NCLOB) to handle CLOBs that use the national
-    character set as requested by Chris Dunscombe.
- 2) Added support for returning cursors from functions as requested by Daniel
-    Steinmann.
- 3) Added support for getting/setting the "get" mode on session pools as
-    requested by Anand Aiyer.
- 4) Added support for binding subclassed cursors.
- 5) Fixed binding of decimal objects with absolute values less than 0.1.
-
-Changes from 4.1.2 to 4.2
- 1) Added support for parsing an Oracle statement as requested by Patrick
-    Blackwill.
- 2) Added support for BFILEs at the request of Matthew Cahn.
- 3) Added support for binding decimal.Decimal objects to cursors.
- 4) Added support for reading from NCLOBs as requested by Chris Dunscombe.
- 5) Added connection attributes encoding and nencoding which return the IANA
-    character set name for the character set and national character set in use
-    by the client.
- 6) Rework module initialization to use the techniques recommended by the
-    Python documentation as one user was experiencing random segfaults due
-    to the use of the module dictionary after the initialization was complete.
- 7) Removed support for the OPT_Threading attribute. Use the threaded keyword
-    when creating connections and session pools instead.
- 8) Removed support for the OPT_NumbersAsStrings attribute. Use the
-    numbersAsStrings attribute on cursors instead.
- 9) Use type long rather than type int in order to support long integers on
-    64-bit machines as reported by Uwe Hoffmann.
-10) Add cursor attribute "bindarraysize" which is defaulted to 1 and is used
-    to determine the size of the arrays created for bind variables.
-11) Added repr() methods to provide something a little more useful than the
-    standard type name and memory address.
-12) Added keyword argument support to the functions that imply such in the
-    documentation as requested by Harald Armin Massa.
-13) Treat an empty dictionary passed through to cursor.execute() as keyword
-    arguments the same as if no keyword arguments were specified at all, as
-    requested by Fabien Grumelard.
-14) Fixed memory leak when a LOB read would fail.
-15) Set the LDFLAGS value in the environment rather than directly in the
-    setup.py file in order to satisfy those who wish to enable the use of
-    debugging symbols.
-16) Use __DATE__ and __TIME__ to determine the date and time of the build
-    rather than passing it through directly.
-17) Use Oracle types and add casts to reduce warnings as requested by Amaury
-    Forgeot d'Arc.
-18) Fixed typo in error message.
-
-Changes from 4.1.1 to 4.1.2
- 1) Restore support of Oracle 9i features when using the Oracle 10g client.
-
-Changes from 4.1 to 4.1.1
- 1) Add support for dropping a connection from a session pool.
- 2) Add support for write only attributes "module", "action" and "clientinfo"
-    which work only in Oracle 10g as requested by Egor Starostin.
- 3) Add support for pickling database errors.
- 4) Use the previously created bind variable as a template if available when
-    creating a new variable of a larger size. Thanks to Ted Skolnick for the
-    initial patch.
- 5) Fixed tests to work properly in the Python 2.4 environment where dates and
-    timestamps are different Python types. Thanks to Henning von Bargen for
-    pointing this out.
- 6) Added additional directories to search for include files and libraries in
-    order to better support the Oracle 10g instant client.
- 7) Set the internal fetch number to 0 in order to satisfy very picky source
-    analysis tools as requested by Amaury Fogeot d'Arc.
- 8) Improve the documentation for building and installing the module from
-    source as some people are unaware of the standard methods for building
-    Python modules using distutils.
- 9) Added note in the documentation indicating that the arraysize attribute
-    can drastically affect performance of queries since this seems to be a
-    common misunderstanding of first time users of cx_Oracle.
-10) Add a comment indicating that on HP-UX Itanium with Oracle 10g the library
-    ttsh10 must alos be linked against. Thanks to Bernard Delmee for the
-    information.
-
-Changes from 4.1 beta 1 to 4.1
- 1) Fixed bug where subclasses of Cursor do not pass the connection in the
-    constructor causing a segfault.
- 2) DDL statements must be reparsed before execution as noted by Mihai
-    Ibanescu.
- 3) Add support for setting input sizes by position.
- 4) Fixed problem with catching an exception during execute and then still
-    attempting to perform a fetch afterwards as noted by Leith Parkin.
- 5) Rename the types so that they can be pickled and unpickled. Thanks to Harri
-    Pasanen for pointing out the problem.
- 6) Handle invalid NLS_LANG setting properly (Oracle seems to like to provide a
-    handle back even though it is invalid) and determine the number of bytes
-    per character in order to allow for proper support in the future of
-    multibyte and variable width character sets.
- 7) Remove date checking from the native case since Python already checks that
-    dates are valid; enhance error message when invalid dates are encountered
-    so that additional processing can be done.
- 8) Fix bug executing SQL using numeric parameter names with predefined
-    variables (such as what takes place when calling stored procedures with out
-    parameters).
- 9) Add support for reading CLOB values using multibyte or variable length
-    character sets.
-
-Changes from 4.0.1 to 4.1 beta 1
- 1) Added support for Python 2.4. In Python 2.4, the datetime module is used
-    for both binding and fetching of date and timestamp data. In Python 2.3,
-    objects from the datetime module can be bound but the internal datetime
-    objects will be returned from queries.
- 2) Added pickling support for LOB and datetime data.
- 3) Fully qualified the table name that was missing in an alter table
-    statement in the setup test script as noted by Marc Gehling.
- 4) Added a section allowing for the setting of the RPATH linker directive in
-    setup.py as requested by Iustin Pop.
- 5) Added code to raise a programming error exception when an attempt is made
-    to access a LOB locator variable in a subsequent fetch.
- 6) The username, password and dsn (tnsentry) are stored on the connection
-    object when specified, regardless of whether or not a standard connection
-    takes place.
- 7) Added additional module level constant called "LOB" as requested by Joseph
-    Canedo.
- 8) Changed exception type to IntegrityError for constraint violations as
-    requested by Joseph Canedo.
- 9) If scale and precision are not specified, an attempt is made to return a
-    long integer as requested by Joseph Canedo.
-10) Added workaround for Oracle bug which returns an invalid handle when the
-    prepare call fails. Thanks to alantam@hsbc.com for providing the code that
-    demonstrated the problem.
-11) The cusor method arravar() will now accept the actual list so that it is
-    not necessary to call cursor.arrayvar() followed immediately by
-    var.setvalue().
-12) Fixed bug where attempts to execute the statement "None" with bind
-    variables would cause a segmentation fault.
-13) Added support for binding by position (paramstyle = "numeric").
-14) Removed memory leak created by calls to OCIParamGet() which were not
-    mirrored by calls to OCIDescriptorFree(). Thanks to Mihai Ibanescu for
-    pointing this out and providing a patch.
-15) Added support for calling cursor.executemany() with statement None
-    implying that the previously prepared statement ought to be executed.
-    Thanks to Mihai Ibanescu for providing a patch.
-16) Added support for rebinding variables when a subsequent call to
-    cursor.executemany() uses a different number of rows. Thanks to Mihai
-    Ibanescu for supplying a patch.
-17) The microseconds are now displayed in datetime variables when nonzero
-    similar to method used in the datetime module.
-18) Added support for binary_float and binary_double columns in Oracle 10g.
-
-Changes from 4.0 to 4.0.1
- 1) Fixed bugs on 64-bit platforms that caused segmentation faults and bus
-    errors in session pooling and determining the bind variables associated
-    with a statement.
- 2) Modified test suite so that 64-bit platforms are tested properly.
- 3) Added missing commit statements in the test setup scripts. Thanks to Keith
-    Lyon for pointing this out.
- 4) Fix setup.py for Cygwin environments. Thanks to Doug Henderson for
-    providing the necessary fix.
- 5) Added support for compiling cx_Oracle without thread support. Thanks to
-    Andre Reitz for pointing this out.
- 6) Added support for a new keyword parameter called threaded on connections
-    and session pools. This parameter defaults to False and indicates whether
-    threaded mode ought to be used. It replaces the module level attribute
-    OPT_Threading although examining the attribute will be retained until the
-    next release at least.
- 7) Added support for a new keyword parameter called twophase on connections.
-    This parameter defaults to False and indicates whether support for two
-    phase (distributed or global) transactions ought to be present. Note that
-    support for distributed transactions is buggy when crossing major version
-    boundaries (Oracle 8i to Oracle 9i for example).
- 8) Ensure that the rowcount attribute is set properly when an exception is
-    raised during execution. Thanks to Gary Aviv for pointing out this problem
-    and its solution.
-
-Changes from 3.1 to 4.0
- 1) Added support for subclassing connections, cursors and session pools. The
-    changes involved made it necessary to drop support for Python 2.1 and
-    earlier although a branch exists in CVS to allow for support of Python 2.1
-    and earlier if needed.
- 2) Connections and session pools can now be created with keyword parameters,
-    not just sequential parameters.
- 3) Queries now return integers whenever possible and long integers if the
-    number will overflow a simple integer. Floats are only returned when it is
-    known that the number is a floating point number or the integer conversion
-    fails.
- 4) Added initial support for user callbacks on OCI functions. See the
-    documentation for more details.
- 5) Add support for retrieving the bind variable names associated with a
-    cursor with a new method bindnames().
- 6) Add support for temporary LOB variables. This means that setinputsizes()
-    can be used with the values CLOB and BLOB to create these temporary LOB
-    variables and allow for the equivalent of empty_clob() and empty_blob()
-    since otherwise Oracle will treat empty strings as NULL values.
- 7) Automatically switch to long strings when the data size exceeds the
-    maximum string size that Oracle allows (4000 characters) and raise an
-    error if an attempt is made to set a string variable to a size that it
-    does not support. This avoids truncation errors as reported by Jon Franz.
- 8) Add support for global (distributed) transactions and two phase commit.
- 9) Force the NLS settings for the session so that test tables are populated
-    correctly in all circumstances; problems were noted by Ralf Braun and
-    Allan Poulsen.
-10) Display error messages using the environment handle when the error handle
-    has not yet been created; this provides better error messages during this
-    rather rare situation.
-11) Removed memory leak in callproc() that was reported by Todd Whiteman.
-12) Make consistent the calls to manipulate memory; otherwise segfaults can
-    occur when the pymalloc option is used, as reported by Matt Hoskins.
-13) Force a rollback when a session is released back to the session pool.
-    Apparently the connections are not as stateless as Oracle's documentation
-    suggests and this makes the logic consistent with normal connections.
-14) Removed module method attach(). This can be replaced with a call to
-    Connection(handle=) if needed.
-
-Changes from 3.0a to 3.1
- 1) Added support for connecting with SYSDBA and SYSOPER access which is
-    needed for connecting as sys in Oracle 9i.
- 2) Only check the dictionary size if the variable is not NULL; otherwise, an
-    error takes place which is not caught or cleared; this eliminates a
-    spurious "Objects/dictobject.c:1258: bad argument to internal function" in
-    Python 2.3.
- 3) Add support for session pooling. This is only support for Oracle 9i but
-    is amazingly fast -- about 100 times faster than connecting.
- 4) Add support for statement caching when pooling sessions, this reduces the
-    parse time considerably. Unfortunately, the Oracle OCI does not allow this
-    to be easily turned on for normal sessions.
- 5) Add method trim() on CLOB and BLOB variables for trimming the size.
- 6) Add support for externally identified users; to use this feature leave the
-    username and password fields empty when connecting.
- 7) Add method cancel() on connection objects to cancel long running queries.
-    Note that this only works on non-Windows platforms.
- 8) Add method callfunc() on cursor objects to allow calling a function
-    without using an anonymous PL/SQL block.
- 9) Added documentation on objects that were not documented. At this point all
-    objects, methods and constants in cx_Oracle have been documented.
-10) Added support for timestamp columns in Oracle 9i.
-11) Added module level method makedsn() which creates a data source name given
-    the host, port and SID.
-12) Added constant "buildtime" which is the time when the module was built as
-    an additional means of identifying the build that is in use.
-13) Binding a value that is incompatible to the previous value that was bound
-    (data types do not match or array size is larger) will now result in a
-    new bind taking place. This is more consistent with the DB API although
-    it does imply a performance penalty when used.
-
-Changes from 3.0 to 3.0a
- 1) Fixed bug where zero length PL/SQL arrays were being mishandled
- 2) Fixed support for the data type "float" in Oracle; added one to the
-    display size to allow for the sign of the number, if necessary; changed
-    the display size of unconstrained numbers to 127, which is the largest
-    number that Oracle can handle
- 3) Added support for retrieving the description of a bound cursor before
-    fetching it
- 4) Fixed a couple of build issues on Mac OS X, AIX and Solaris (64-bit)
- 5) Modified documentation slightly based on comments from several people
- 6) Included files in MANIFEST that are needed to generate the binaries
- 7) Modified test suite to work within the test environment at Computronix
-    as well as within the packages that are distributed
-
-Changes from 2.5a to 3.0
- 1) Removed support for connection to Oracle7 databases; it is entirely
-    possible that it will still work but I no longer have any way of testing
-    and Oracle has dropped any meaningful support for Oracle7 anyway
- 2) Fetching of strings is now done with predefined memory areas rather than
-    dynamic memory areas; dynamic fetching of strings was causing problems
-    with Oracle 9i in some instances and databases using a different character
-    set other than US ASCII
- 3) Fixed bug where segfault would occur if the '/' character preceded the '@'
-    character in a connect string
- 4) Added two new cursor methods var() and arrayvar() in order to eliminate
-    the need for setinputsizes() when defining PL/SQL arrays and as a generic
-    method of acquiring bind variables directly when needed
- 5) Fixed support for binding cursors and added support for fetching cursors
-    (these are known as ref cursors in PL/SQL).
- 6) Eliminated discrepancy between the array size used internally and the
-    array size specified by the interface user; this was done earlier to avoid
-    bus errors on 64-bit platforms but another way has been found to get
-    around that issue and a number of people were getting confused because of
-    the discrepancy
- 7) Added support for the attribute "connection" on cursors, an optional
-    DB API extension
- 8) Added support for passing a dictionary as the second parameter for the
-    cursor.execute() method in order to comply with the DB API more closely;
-    the method of passing parameters with keyword arguments is still supported
-    and is in fact preferred
- 9) Added support for the attribute "statement" on cursors which is a
-    reference to the last SQL statement prepared or executed
-10) Added support for passing any sequence to callproc() rather than just
-    lists as before
-11) Fixed bug where segfault would occur if the array size was changed after
-    the cursor was executed but before it was fetched
-12) Ignore array size when performing executemany() and use the length of the
-    list of arguments instead
-13) Rollback when connection is closed or destroyed to follow DB API rather
-    than use the Oracle default (which is commit)
-14) Added check for array size too large causing an integer overflow
-15) Added support for iterators for Python 2.2 and above
-16) Added test suite based on PyUnitTest
-17) Added documentation in HTML format similar to the documentation for the
-    core Python library
-
-Changes from 2.5 to 2.5a
- 1) Fix problem with Oracle 9i and retrieving strings; it seems that Oracle 9i
-    uses the correct method for dynamic callback but Oracle 8i will not work
-    with that method so an #ifdef was added to check for the existence of an
-    Oracle 9i feature; thanks to Paul Denize for discovering this problem
-
-Changes from 2.4 to 2.5
- 1) Added flag OPT_NoOracle7 which, if set, assumes that connections are being
-    made to Oracle8 or higher databases; this allows for eliminating the
-    overhead in performing this check at connect time
- 2) Added flag OPT_NumbersAsStrings which, if set, returns all numbers as
-    strings rather than integers or floats; this flag is used when defined
-    variables are created (during select statements only)
- 3) Added flag OPT_Threading which, if set, uses OCI threading mode; there is a
-    significant performance degradation in this mode (about 15-20%) but it does
-    allow threads to share connections (threadsafety level 2 according to the
-    Python Database API 2.0); note that in order to support this, Oracle 8i or
-    higher is now required
- 4) Added Py_BEGIN_ALLOW_THREADS and Py_END_ALLOW_THREADS pairs where
-    applicable to support threading during blocking OCI calls
- 5) Added global method attach() to cx_Oracle to support attaching to an
-    existing database handle (as provided by PowerBuilder, for example)
- 6) Eliminated the cursor method fetchbinds() which was used for returning the
-    list of bind variables after execution to get the values of out variables;
-    the cursor method setinputsizes() was modified to return the list of bind
-    variables and the cursor method execute() was modified to return the list
-    of defined variables in the case of a select statement being executed;
-    these variables have three methods available to them: getvalue([<pos>]) to
-    get the value of a variable, setvalue(<pos>, <value>) to set its value and
-    copy(<var>, <src_pos>, <targ_pos>) to copy the value from a variable in a
-    more efficient manner than setvalue(getvalue())
- 7) Implemented cursor method executemany() which expects a list of
-    dictionaries for the arguments
- 8) Implemented cursor method callproc()
- 9) Added cursr method prepare() which parses (prepares) the statement for
-    execution; subsequent execute() or executemany() calls can pass None as the
-    statement which will imply use of the previously prepared statement; used
-    for high performance only
-10) Added cursor method fetchraw() which will perform a raw fetch of the cursor
-    returning the number of rows thus fetched; this is used to avoid the
-    overhead of generating result sets; used for high performance only
-11) Added cursor method executemanyprepared() which is identical to the method
-    executemany() except that it takes a single argument which is the number of
-    times to execute a previously prepared statement and it assumes that the
-    bind variables already have their values set; used for high performance
-    only
-12) Added support for rowid being returned in a select statement
-13) Added support for comparing dates returned by cx_Oracle
-14) Integrated patch from Andre Reitz to set the null ok flag in the
-    description attribute of the cursor
-15) Integrated patch from Andre Reitz to setup.py to support compilation with
-    Python 1.5
-16) Integrated patch from Benjamin Kearns to setup.py to support compilation
-    on Cygwin
-
-Changes from 2.3 to 2.4
-
-1) String variables can now be made any length (previously restricted to the
-   64K limit imposed by Oracle for default binding); use the type
-   cx_Oracle.LONG_STRING as the argument to setinputsizes() for binding in
-   string values larger than 4000 bytes.
-2) Raw and long raw columns are now supported; use the types cx_Oracle.BINARY
-   and cx_Oracle.LONG_BINARY as the argument to setinputsizes() for binding in
-   values of these types.
-3) Functions DateFromTicks(), TimeFromTicks() and TimestampFromTicks()
-   are now implemented.
-4) Function cursor.setoutputsize() implemented
-5) Added the ability to bind arrays as out parameters to procedures; use the
-   format [cx_Oracle.<DataType>, <NumElems>] as the input to the function
-   setinputsizes() for binding arrays
-6) Discovered from the Oracle 8.1.6 version of the documentation of the OCI
-   libraries, that the size of the memory location required for the precision
-   variable is larger than the printed documentation says; this was causing a
-   problem with the code on the Sun platform.
-7) Now support building RPMs for Linux.
-
-Changes from 2.2 to 2.3
-
- 1) Incremental performance enhancements (dealing with reusing cursors and
-    bind handles)
- 2) Ensured that arrays of integers with a single float in them are all
-    treated as floats, as suggested by Martin Koch.
- 3) Fixed code dealing with scale and precision for both defining a numeric
-    variable and for providing the cursor description; this eliminates the
-    problem of an underflow error (OCI-22054) when retrieving data with
-    non-zero scale.
-
-Changes from 2.1 to 2.2
-
- 1) Upgraded thread safety to level 1 (according to the Python DB API 2.0) as
-    an internal project required the ability to share the module between
-    threads.
- 2) Added ability to bind ref cursors to PL/SQL blocks as requested by
-    Brad Powell.
- 3) Added function write(Value, [Offset]) to LOB variables as requested by
-    Matthias Kirst.
- 4) Procedure execute() on Cursor objects now permits a value None for the
-    statement which means that the previously prepared statement will be
-    executed and any input sizes set earlier will be retained. This was done to
-    improve the performance of scripts that execute one statement many times.
- 5) Modified module global constants BINARY and DATETIME to point to the
-    external representations of those types so that the expression
-    type(var) == cx_Oracle.DATETIME will work as expected.
- 6) Added global constant version to provide means of determining the current
-    version of the module.
- 7) Modified error checking routine to distinguish between an Oracle error and
-    invalid handles.
- 8) Added error checking to avoid setting the value of a bind variable to a
-    value that it cannot support and raised an exception to indicate this fact.
- 9) Added extra compile arguments for the AIX platform as suggested by Jehwan
-    Ryu.
-10) Added section to the README to indicate the method for a binary
-    installation as suggested by Steve Holden.
-11) Added simple usage example as requested by many people.
-12) Added HISTORY file to the distribution.
-

+ 0 - 36
desktop/core/ext-py/cx_Oracle-5.1.2/LICENSE.txt

@@ -1,36 +0,0 @@
-Copyright © 2007-2012, Anthony Tuininga.
-Copyright © 2001-2007, Computronix (Canada) Ltd., Edmonton, Alberta, Canada.
-All rights reserved.
-
-License for cx_Oracle
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    1. Redistributions of source code must retain the above copyright notice,
-       this list of conditions, and the disclaimer that follows.
-
-    2. Redistributions in binary form must reproduce the above copyright
-       notice, this list of conditions, and the following disclaimer in the
-       documentation and/or other materials provided with the distribution.
-
-    3. Neither the names of the copyright holders nor the names of any
-       contributors may be used to endorse or promote products derived from
-       this software without specific prior written permission.
-
-DISCLAIMER:
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *AS IS*
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-Computronix® is a registered trademark of Computronix (Canada) Ltd.
-

+ 0 - 540
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/basic.css

@@ -1,540 +0,0 @@
-/*
- * basic.css
- * ~~~~~~~~~
- *
- * Sphinx stylesheet -- basic theme.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/* -- main layout ----------------------------------------------------------- */
-
-div.clearer {
-    clear: both;
-}
-
-/* -- relbar ---------------------------------------------------------------- */
-
-div.related {
-    width: 100%;
-    font-size: 90%;
-}
-
-div.related h3 {
-    display: none;
-}
-
-div.related ul {
-    margin: 0;
-    padding: 0 0 0 10px;
-    list-style: none;
-}
-
-div.related li {
-    display: inline;
-}
-
-div.related li.right {
-    float: right;
-    margin-right: 5px;
-}
-
-/* -- sidebar --------------------------------------------------------------- */
-
-div.sphinxsidebarwrapper {
-    padding: 10px 5px 0 10px;
-}
-
-div.sphinxsidebar {
-    float: left;
-    width: 230px;
-    margin-left: -100%;
-    font-size: 90%;
-}
-
-div.sphinxsidebar ul {
-    list-style: none;
-}
-
-div.sphinxsidebar ul ul,
-div.sphinxsidebar ul.want-points {
-    margin-left: 20px;
-    list-style: square;
-}
-
-div.sphinxsidebar ul ul {
-    margin-top: 0;
-    margin-bottom: 0;
-}
-
-div.sphinxsidebar form {
-    margin-top: 10px;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #98dbcc;
-    font-family: sans-serif;
-    font-size: 1em;
-}
-
-div.sphinxsidebar #searchbox input[type="text"] {
-    width: 170px;
-}
-
-div.sphinxsidebar #searchbox input[type="submit"] {
-    width: 30px;
-}
-
-img {
-    border: 0;
-}
-
-/* -- search page ----------------------------------------------------------- */
-
-ul.search {
-    margin: 10px 0 0 20px;
-    padding: 0;
-}
-
-ul.search li {
-    padding: 5px 0 5px 20px;
-    background-image: url(file.png);
-    background-repeat: no-repeat;
-    background-position: 0 7px;
-}
-
-ul.search li a {
-    font-weight: bold;
-}
-
-ul.search li div.context {
-    color: #888;
-    margin: 2px 0 0 30px;
-    text-align: left;
-}
-
-ul.keywordmatches li.goodmatch a {
-    font-weight: bold;
-}
-
-/* -- index page ------------------------------------------------------------ */
-
-table.contentstable {
-    width: 90%;
-}
-
-table.contentstable p.biglink {
-    line-height: 150%;
-}
-
-a.biglink {
-    font-size: 1.3em;
-}
-
-span.linkdescr {
-    font-style: italic;
-    padding-top: 5px;
-    font-size: 90%;
-}
-
-/* -- general index --------------------------------------------------------- */
-
-table.indextable {
-    width: 100%;
-}
-
-table.indextable td {
-    text-align: left;
-    vertical-align: top;
-}
-
-table.indextable dl, table.indextable dd {
-    margin-top: 0;
-    margin-bottom: 0;
-}
-
-table.indextable tr.pcap {
-    height: 10px;
-}
-
-table.indextable tr.cap {
-    margin-top: 10px;
-    background-color: #f2f2f2;
-}
-
-img.toggler {
-    margin-right: 3px;
-    margin-top: 3px;
-    cursor: pointer;
-}
-
-div.modindex-jumpbox {
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-    margin: 1em 0 1em 0;
-    padding: 0.4em;
-}
-
-div.genindex-jumpbox {
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-    margin: 1em 0 1em 0;
-    padding: 0.4em;
-}
-
-/* -- general body styles --------------------------------------------------- */
-
-a.headerlink {
-    visibility: hidden;
-}
-
-h1:hover > a.headerlink,
-h2:hover > a.headerlink,
-h3:hover > a.headerlink,
-h4:hover > a.headerlink,
-h5:hover > a.headerlink,
-h6:hover > a.headerlink,
-dt:hover > a.headerlink {
-    visibility: visible;
-}
-
-div.body p.caption {
-    text-align: inherit;
-}
-
-div.body td {
-    text-align: left;
-}
-
-.field-list ul {
-    padding-left: 1em;
-}
-
-.first {
-    margin-top: 0 !important;
-}
-
-p.rubric {
-    margin-top: 30px;
-    font-weight: bold;
-}
-
-img.align-left, .figure.align-left, object.align-left {
-    clear: left;
-    float: left;
-    margin-right: 1em;
-}
-
-img.align-right, .figure.align-right, object.align-right {
-    clear: right;
-    float: right;
-    margin-left: 1em;
-}
-
-img.align-center, .figure.align-center, object.align-center {
-  display: block;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-.align-left {
-    text-align: left;
-}
-
-.align-center {
-    text-align: center;
-}
-
-.align-right {
-    text-align: right;
-}
-
-/* -- sidebars -------------------------------------------------------------- */
-
-div.sidebar {
-    margin: 0 0 0.5em 1em;
-    border: 1px solid #ddb;
-    padding: 7px 7px 0 7px;
-    background-color: #ffe;
-    width: 40%;
-    float: right;
-}
-
-p.sidebar-title {
-    font-weight: bold;
-}
-
-/* -- topics ---------------------------------------------------------------- */
-
-div.topic {
-    border: 1px solid #ccc;
-    padding: 7px 7px 0 7px;
-    margin: 10px 0 10px 0;
-}
-
-p.topic-title {
-    font-size: 1.1em;
-    font-weight: bold;
-    margin-top: 10px;
-}
-
-/* -- admonitions ----------------------------------------------------------- */
-
-div.admonition {
-    margin-top: 10px;
-    margin-bottom: 10px;
-    padding: 7px;
-}
-
-div.admonition dt {
-    font-weight: bold;
-}
-
-div.admonition dl {
-    margin-bottom: 0;
-}
-
-p.admonition-title {
-    margin: 0px 10px 5px 0px;
-    font-weight: bold;
-}
-
-div.body p.centered {
-    text-align: center;
-    margin-top: 25px;
-}
-
-/* -- tables ---------------------------------------------------------------- */
-
-table.docutils {
-    border: 0;
-    border-collapse: collapse;
-}
-
-table.docutils td, table.docutils th {
-    padding: 1px 8px 1px 5px;
-    border-top: 0;
-    border-left: 0;
-    border-right: 0;
-    border-bottom: 1px solid #aaa;
-}
-
-table.field-list td, table.field-list th {
-    border: 0 !important;
-}
-
-table.footnote td, table.footnote th {
-    border: 0 !important;
-}
-
-th {
-    text-align: left;
-    padding-right: 5px;
-}
-
-table.citation {
-    border-left: solid 1px gray;
-    margin-left: 1px;
-}
-
-table.citation td {
-    border-bottom: none;
-}
-
-/* -- other body styles ----------------------------------------------------- */
-
-ol.arabic {
-    list-style: decimal;
-}
-
-ol.loweralpha {
-    list-style: lower-alpha;
-}
-
-ol.upperalpha {
-    list-style: upper-alpha;
-}
-
-ol.lowerroman {
-    list-style: lower-roman;
-}
-
-ol.upperroman {
-    list-style: upper-roman;
-}
-
-dl {
-    margin-bottom: 15px;
-}
-
-dd p {
-    margin-top: 0px;
-}
-
-dd ul, dd table {
-    margin-bottom: 10px;
-}
-
-dd {
-    margin-top: 3px;
-    margin-bottom: 10px;
-    margin-left: 30px;
-}
-
-dt:target, .highlighted {
-    background-color: #fbe54e;
-}
-
-dl.glossary dt {
-    font-weight: bold;
-    font-size: 1.1em;
-}
-
-.field-list ul {
-    margin: 0;
-    padding-left: 1em;
-}
-
-.field-list p {
-    margin: 0;
-}
-
-.refcount {
-    color: #060;
-}
-
-.optional {
-    font-size: 1.3em;
-}
-
-.versionmodified {
-    font-style: italic;
-}
-
-.system-message {
-    background-color: #fda;
-    padding: 5px;
-    border: 3px solid red;
-}
-
-.footnote:target  {
-    background-color: #ffa;
-}
-
-.line-block {
-    display: block;
-    margin-top: 1em;
-    margin-bottom: 1em;
-}
-
-.line-block .line-block {
-    margin-top: 0;
-    margin-bottom: 0;
-    margin-left: 1.5em;
-}
-
-.guilabel, .menuselection {
-    font-family: sans-serif;
-}
-
-.accelerator {
-    text-decoration: underline;
-}
-
-.classifier {
-    font-style: oblique;
-}
-
-abbr, acronym {
-    border-bottom: dotted 1px;
-    cursor: help;
-}
-
-/* -- code displays --------------------------------------------------------- */
-
-pre {
-    overflow: auto;
-    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
-}
-
-td.linenos pre {
-    padding: 5px 0px;
-    border: 0;
-    background-color: transparent;
-    color: #aaa;
-}
-
-table.highlighttable {
-    margin-left: 0.5em;
-}
-
-table.highlighttable td {
-    padding: 0 0.5em 0 0.5em;
-}
-
-tt.descname {
-    background-color: transparent;
-    font-weight: bold;
-    font-size: 1.2em;
-}
-
-tt.descclassname {
-    background-color: transparent;
-}
-
-tt.xref, a tt {
-    background-color: transparent;
-    font-weight: bold;
-}
-
-h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
-    background-color: transparent;
-}
-
-.viewcode-link {
-    float: right;
-}
-
-.viewcode-back {
-    float: right;
-    font-family: sans-serif;
-}
-
-div.viewcode-block:target {
-    margin: -1px -10px;
-    padding: 0 10px;
-}
-
-/* -- math display ---------------------------------------------------------- */
-
-img.math {
-    vertical-align: middle;
-}
-
-div.body div.math p {
-    text-align: center;
-}
-
-span.eqno {
-    float: right;
-}
-
-/* -- printout stylesheet --------------------------------------------------- */
-
-@media print {
-    div.document,
-    div.documentwrapper,
-    div.bodywrapper {
-        margin: 0 !important;
-        width: 100%;
-    }
-
-    div.sphinxsidebar,
-    div.related,
-    div.footer,
-    #top-link {
-        display: none;
-    }
-}

BIN
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/comment-bright.png


BIN
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/comment-close.png


BIN
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/comment.png


+ 0 - 256
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/default.css

@@ -1,256 +0,0 @@
-/*
- * default.css_t
- * ~~~~~~~~~~~~~
- *
- * Sphinx stylesheet -- default theme.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-@import url("basic.css");
-
-/* -- page layout ----------------------------------------------------------- */
-
-body {
-    font-family: sans-serif;
-    font-size: 100%;
-    background-color: #11303d;
-    color: #000;
-    margin: 0;
-    padding: 0;
-}
-
-div.document {
-    background-color: #1c4e63;
-}
-
-div.documentwrapper {
-    float: left;
-    width: 100%;
-}
-
-div.bodywrapper {
-    margin: 0 0 0 230px;
-}
-
-div.body {
-    background-color: #ffffff;
-    color: #000000;
-    padding: 0 20px 30px 20px;
-}
-
-div.footer {
-    color: #ffffff;
-    width: 100%;
-    padding: 9px 0 9px 0;
-    text-align: center;
-    font-size: 75%;
-}
-
-div.footer a {
-    color: #ffffff;
-    text-decoration: underline;
-}
-
-div.related {
-    background-color: #133f52;
-    line-height: 30px;
-    color: #ffffff;
-}
-
-div.related a {
-    color: #ffffff;
-}
-
-div.sphinxsidebar {
-}
-
-div.sphinxsidebar h3 {
-    font-family: 'Trebuchet MS', sans-serif;
-    color: #ffffff;
-    font-size: 1.4em;
-    font-weight: normal;
-    margin: 0;
-    padding: 0;
-}
-
-div.sphinxsidebar h3 a {
-    color: #ffffff;
-}
-
-div.sphinxsidebar h4 {
-    font-family: 'Trebuchet MS', sans-serif;
-    color: #ffffff;
-    font-size: 1.3em;
-    font-weight: normal;
-    margin: 5px 0 0 0;
-    padding: 0;
-}
-
-div.sphinxsidebar p {
-    color: #ffffff;
-}
-
-div.sphinxsidebar p.topless {
-    margin: 5px 10px 10px 10px;
-}
-
-div.sphinxsidebar ul {
-    margin: 10px;
-    padding: 0;
-    color: #ffffff;
-}
-
-div.sphinxsidebar a {
-    color: #98dbcc;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #98dbcc;
-    font-family: sans-serif;
-    font-size: 1em;
-}
-
-
-
-/* -- hyperlink styles ------------------------------------------------------ */
-
-a {
-    color: #355f7c;
-    text-decoration: none;
-}
-
-a:visited {
-    color: #355f7c;
-    text-decoration: none;
-}
-
-a:hover {
-    text-decoration: underline;
-}
-
-
-
-/* -- body styles ----------------------------------------------------------- */
-
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
-    font-family: 'Trebuchet MS', sans-serif;
-    background-color: #f2f2f2;
-    font-weight: normal;
-    color: #20435c;
-    border-bottom: 1px solid #ccc;
-    margin: 20px -20px 10px -20px;
-    padding: 3px 0 3px 10px;
-}
-
-div.body h1 { margin-top: 0; font-size: 200%; }
-div.body h2 { font-size: 160%; }
-div.body h3 { font-size: 140%; }
-div.body h4 { font-size: 120%; }
-div.body h5 { font-size: 110%; }
-div.body h6 { font-size: 100%; }
-
-a.headerlink {
-    color: #c60f0f;
-    font-size: 0.8em;
-    padding: 0 4px 0 4px;
-    text-decoration: none;
-}
-
-a.headerlink:hover {
-    background-color: #c60f0f;
-    color: white;
-}
-
-div.body p, div.body dd, div.body li {
-    text-align: justify;
-    line-height: 130%;
-}
-
-div.admonition p.admonition-title + p {
-    display: inline;
-}
-
-div.admonition p {
-    margin-bottom: 5px;
-}
-
-div.admonition pre {
-    margin-bottom: 5px;
-}
-
-div.admonition ul, div.admonition ol {
-    margin-bottom: 5px;
-}
-
-div.note {
-    background-color: #eee;
-    border: 1px solid #ccc;
-}
-
-div.seealso {
-    background-color: #ffc;
-    border: 1px solid #ff6;
-}
-
-div.topic {
-    background-color: #eee;
-}
-
-div.warning {
-    background-color: #ffe4e4;
-    border: 1px solid #f66;
-}
-
-p.admonition-title {
-    display: inline;
-}
-
-p.admonition-title:after {
-    content: ":";
-}
-
-pre {
-    padding: 5px;
-    background-color: #eeffcc;
-    color: #333333;
-    line-height: 120%;
-    border: 1px solid #ac9;
-    border-left: none;
-    border-right: none;
-}
-
-tt {
-    background-color: #ecf0f3;
-    padding: 0 1px 0 1px;
-    font-size: 0.95em;
-}
-
-th {
-    background-color: #ede;
-}
-
-.warning tt {
-    background: #efc2c2;
-}
-
-.note tt {
-    background: #d6d6d6;
-}
-
-.viewcode-back {
-    font-family: sans-serif;
-}
-
-div.viewcode-block:target {
-    background-color: #f4debf;
-    border-top: 1px solid #ac9;
-    border-bottom: 1px solid #ac9;
-}

+ 0 - 247
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/doctools.js

@@ -1,247 +0,0 @@
-/*
- * doctools.js
- * ~~~~~~~~~~~
- *
- * Sphinx JavaScript utilities for all documentation.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/**
- * select a different prefix for underscore
- */
-$u = _.noConflict();
-
-/**
- * make the code below compatible with browsers without
- * an installed firebug like debugger
-if (!window.console || !console.firebug) {
-  var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
-    "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
-    "profile", "profileEnd"];
-  window.console = {};
-  for (var i = 0; i < names.length; ++i)
-    window.console[names[i]] = function() {};
-}
- */
-
-/**
- * small helper function to urldecode strings
- */
-jQuery.urldecode = function(x) {
-  return decodeURIComponent(x).replace(/\+/g, ' ');
-}
-
-/**
- * small helper function to urlencode strings
- */
-jQuery.urlencode = encodeURIComponent;
-
-/**
- * This function returns the parsed url parameters of the
- * current request. Multiple values per key are supported,
- * it will always return arrays of strings for the value parts.
- */
-jQuery.getQueryParameters = function(s) {
-  if (typeof s == 'undefined')
-    s = document.location.search;
-  var parts = s.substr(s.indexOf('?') + 1).split('&');
-  var result = {};
-  for (var i = 0; i < parts.length; i++) {
-    var tmp = parts[i].split('=', 2);
-    var key = jQuery.urldecode(tmp[0]);
-    var value = jQuery.urldecode(tmp[1]);
-    if (key in result)
-      result[key].push(value);
-    else
-      result[key] = [value];
-  }
-  return result;
-};
-
-/**
- * small function to check if an array contains
- * a given item.
- */
-jQuery.contains = function(arr, item) {
-  for (var i = 0; i < arr.length; i++) {
-    if (arr[i] == item)
-      return true;
-  }
-  return false;
-};
-
-/**
- * highlight a given string on a jquery object by wrapping it in
- * span elements with the given class name.
- */
-jQuery.fn.highlightText = function(text, className) {
-  function highlight(node) {
-    if (node.nodeType == 3) {
-      var val = node.nodeValue;
-      var pos = val.toLowerCase().indexOf(text);
-      if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
-        var span = document.createElement("span");
-        span.className = className;
-        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
-        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
-          document.createTextNode(val.substr(pos + text.length)),
-          node.nextSibling));
-        node.nodeValue = val.substr(0, pos);
-      }
-    }
-    else if (!jQuery(node).is("button, select, textarea")) {
-      jQuery.each(node.childNodes, function() {
-        highlight(this);
-      });
-    }
-  }
-  return this.each(function() {
-    highlight(this);
-  });
-};
-
-/**
- * Small JavaScript module for the documentation.
- */
-var Documentation = {
-
-  init : function() {
-    this.fixFirefoxAnchorBug();
-    this.highlightSearchWords();
-    this.initIndexTable();
-  },
-
-  /**
-   * i18n support
-   */
-  TRANSLATIONS : {},
-  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
-  LOCALE : 'unknown',
-
-  // gettext and ngettext don't access this so that the functions
-  // can safely bound to a different name (_ = Documentation.gettext)
-  gettext : function(string) {
-    var translated = Documentation.TRANSLATIONS[string];
-    if (typeof translated == 'undefined')
-      return string;
-    return (typeof translated == 'string') ? translated : translated[0];
-  },
-
-  ngettext : function(singular, plural, n) {
-    var translated = Documentation.TRANSLATIONS[singular];
-    if (typeof translated == 'undefined')
-      return (n == 1) ? singular : plural;
-    return translated[Documentation.PLURALEXPR(n)];
-  },
-
-  addTranslations : function(catalog) {
-    for (var key in catalog.messages)
-      this.TRANSLATIONS[key] = catalog.messages[key];
-    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
-    this.LOCALE = catalog.locale;
-  },
-
-  /**
-   * add context elements like header anchor links
-   */
-  addContextElements : function() {
-    $('div[id] > :header:first').each(function() {
-      $('<a class="headerlink">\u00B6</a>').
-      attr('href', '#' + this.id).
-      attr('title', _('Permalink to this headline')).
-      appendTo(this);
-    });
-    $('dt[id]').each(function() {
-      $('<a class="headerlink">\u00B6</a>').
-      attr('href', '#' + this.id).
-      attr('title', _('Permalink to this definition')).
-      appendTo(this);
-    });
-  },
-
-  /**
-   * workaround a firefox stupidity
-   */
-  fixFirefoxAnchorBug : function() {
-    if (document.location.hash && $.browser.mozilla)
-      window.setTimeout(function() {
-        document.location.href += '';
-      }, 10);
-  },
-
-  /**
-   * highlight the search words provided in the url in the text
-   */
-  highlightSearchWords : function() {
-    var params = $.getQueryParameters();
-    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
-    if (terms.length) {
-      var body = $('div.body');
-      window.setTimeout(function() {
-        $.each(terms, function() {
-          body.highlightText(this.toLowerCase(), 'highlighted');
-        });
-      }, 10);
-      $('<p class="highlight-link"><a href="javascript:Documentation.' +
-        'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
-          .appendTo($('#searchbox'));
-    }
-  },
-
-  /**
-   * init the domain index toggle buttons
-   */
-  initIndexTable : function() {
-    var togglers = $('img.toggler').click(function() {
-      var src = $(this).attr('src');
-      var idnum = $(this).attr('id').substr(7);
-      $('tr.cg-' + idnum).toggle();
-      if (src.substr(-9) == 'minus.png')
-        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
-      else
-        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
-    }).css('display', '');
-    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
-        togglers.click();
-    }
-  },
-
-  /**
-   * helper function to hide the search marks again
-   */
-  hideSearchWords : function() {
-    $('#searchbox .highlight-link').fadeOut(300);
-    $('span.highlighted').removeClass('highlighted');
-  },
-
-  /**
-   * make the url absolute
-   */
-  makeURL : function(relativeURL) {
-    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
-  },
-
-  /**
-   * get the current relative url
-   */
-  getCurrentURL : function() {
-    var path = document.location.pathname;
-    var parts = path.split(/\//);
-    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
-      if (this == '..')
-        parts.pop();
-    });
-    var url = parts.join('/');
-    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
-  }
-};
-
-// quick alias for translations
-_ = Documentation.gettext;
-
-$(document).ready(function() {
-  Documentation.init();
-});

BIN
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/down-pressed.png


BIN
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/down.png


BIN
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/file.png


+ 0 - 154
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/jquery.js

@@ -1,154 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
- */
-(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
-e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
-j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
-"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
-true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
-Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
-(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
-a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
-"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
-function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
-c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
-L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
-"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
-a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
-d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
-a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
-!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
-true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
-parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
-false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
-s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
-applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
-else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
-a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
-w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
-cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
-i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
-" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
-this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
-e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
-function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
-k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
-C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
-null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
-e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
-f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
-if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
-"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
-a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
-isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
-{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
-if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
-e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
-"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
-d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
-!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
-toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
-u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
-function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
-if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
-e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
-t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
-g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
-for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
-1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
-CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
-relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
-l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
-h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
-CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
-g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
-text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
-setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
-h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
-m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
-"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
-h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
-!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
-h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
-q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
-if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
-(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
-function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
-gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
-c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
-{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
-"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
-d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
-a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
-1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
-a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
-""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
-this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
-u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
-1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
-return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
-""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
-c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
-c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
-function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
-Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
-"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
-a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
-a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
-"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
-serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
-function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
-global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
-e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
-"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
-false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
-false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
-c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
-d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
-g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
-1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
-"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
-if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
-this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
-"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
-animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
-j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
-this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
-"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
-c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
-this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
-this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
-e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
-c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
-function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
-this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
-k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
-f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
-c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
-d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
-"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
-e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);

BIN
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/minus.png


BIN
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/plus.png


+ 0 - 62
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/pygments.css

@@ -1,62 +0,0 @@
-.highlight .hll { background-color: #ffffcc }
-.highlight  { background: #eeffcc; }
-.highlight .c { color: #408090; font-style: italic } /* Comment */
-.highlight .err { border: 1px solid #FF0000 } /* Error */
-.highlight .k { color: #007020; font-weight: bold } /* Keyword */
-.highlight .o { color: #666666 } /* Operator */
-.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #007020 } /* Comment.Preproc */
-.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #303030 } /* Generic.Output */
-.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0040D0 } /* Generic.Traceback */
-.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #007020 } /* Keyword.Pseudo */
-.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #902000 } /* Keyword.Type */
-.highlight .m { color: #208050 } /* Literal.Number */
-.highlight .s { color: #4070a0 } /* Literal.String */
-.highlight .na { color: #4070a0 } /* Name.Attribute */
-.highlight .nb { color: #007020 } /* Name.Builtin */
-.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
-.highlight .no { color: #60add5 } /* Name.Constant */
-.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
-.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #007020 } /* Name.Exception */
-.highlight .nf { color: #06287e } /* Name.Function */
-.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
-.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #bb60d5 } /* Name.Variable */
-.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mf { color: #208050 } /* Literal.Number.Float */
-.highlight .mh { color: #208050 } /* Literal.Number.Hex */
-.highlight .mi { color: #208050 } /* Literal.Number.Integer */
-.highlight .mo { color: #208050 } /* Literal.Number.Oct */
-.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
-.highlight .sc { color: #4070a0 } /* Literal.String.Char */
-.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
-.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
-.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
-.highlight .sx { color: #c65d09 } /* Literal.String.Other */
-.highlight .sr { color: #235388 } /* Literal.String.Regex */
-.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
-.highlight .ss { color: #517918 } /* Literal.String.Symbol */
-.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
-.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
-.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
-.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */

+ 0 - 560
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/searchtools.js

@@ -1,560 +0,0 @@
-/*
- * searchtools.js_t
- * ~~~~~~~~~~~~~~~~
- *
- * Sphinx JavaScript utilties for the full-text search.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/**
- * helper function to return a node containing the
- * search summary for a given text. keywords is a list
- * of stemmed words, hlwords is the list of normal, unstemmed
- * words. the first one is used to find the occurance, the
- * latter for highlighting it.
- */
-
-jQuery.makeSearchSummary = function(text, keywords, hlwords) {
-  var textLower = text.toLowerCase();
-  var start = 0;
-  $.each(keywords, function() {
-    var i = textLower.indexOf(this.toLowerCase());
-    if (i > -1)
-      start = i;
-  });
-  start = Math.max(start - 120, 0);
-  var excerpt = ((start > 0) ? '...' : '') +
-  $.trim(text.substr(start, 240)) +
-  ((start + 240 - text.length) ? '...' : '');
-  var rv = $('<div class="context"></div>').text(excerpt);
-  $.each(hlwords, function() {
-    rv = rv.highlightText(this, 'highlighted');
-  });
-  return rv;
-}
-
-
-/**
- * Porter Stemmer
- */
-var Stemmer = function() {
-
-  var step2list = {
-    ational: 'ate',
-    tional: 'tion',
-    enci: 'ence',
-    anci: 'ance',
-    izer: 'ize',
-    bli: 'ble',
-    alli: 'al',
-    entli: 'ent',
-    eli: 'e',
-    ousli: 'ous',
-    ization: 'ize',
-    ation: 'ate',
-    ator: 'ate',
-    alism: 'al',
-    iveness: 'ive',
-    fulness: 'ful',
-    ousness: 'ous',
-    aliti: 'al',
-    iviti: 'ive',
-    biliti: 'ble',
-    logi: 'log'
-  };
-
-  var step3list = {
-    icate: 'ic',
-    ative: '',
-    alize: 'al',
-    iciti: 'ic',
-    ical: 'ic',
-    ful: '',
-    ness: ''
-  };
-
-  var c = "[^aeiou]";          // consonant
-  var v = "[aeiouy]";          // vowel
-  var C = c + "[^aeiouy]*";    // consonant sequence
-  var V = v + "[aeiou]*";      // vowel sequence
-
-  var mgr0 = "^(" + C + ")?" + V + C;                      // [C]VC... is m>0
-  var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$";    // [C]VC[V] is m=1
-  var mgr1 = "^(" + C + ")?" + V + C + V + C;              // [C]VCVC... is m>1
-  var s_v   = "^(" + C + ")?" + v;                         // vowel in stem
-
-  this.stemWord = function (w) {
-    var stem;
-    var suffix;
-    var firstch;
-    var origword = w;
-
-    if (w.length < 3)
-      return w;
-
-    var re;
-    var re2;
-    var re3;
-    var re4;
-
-    firstch = w.substr(0,1);
-    if (firstch == "y")
-      w = firstch.toUpperCase() + w.substr(1);
-
-    // Step 1a
-    re = /^(.+?)(ss|i)es$/;
-    re2 = /^(.+?)([^s])s$/;
-
-    if (re.test(w))
-      w = w.replace(re,"$1$2");
-    else if (re2.test(w))
-      w = w.replace(re2,"$1$2");
-
-    // Step 1b
-    re = /^(.+?)eed$/;
-    re2 = /^(.+?)(ed|ing)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      re = new RegExp(mgr0);
-      if (re.test(fp[1])) {
-        re = /.$/;
-        w = w.replace(re,"");
-      }
-    }
-    else if (re2.test(w)) {
-      var fp = re2.exec(w);
-      stem = fp[1];
-      re2 = new RegExp(s_v);
-      if (re2.test(stem)) {
-        w = stem;
-        re2 = /(at|bl|iz)$/;
-        re3 = new RegExp("([^aeiouylsz])\\1$");
-        re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
-        if (re2.test(w))
-          w = w + "e";
-        else if (re3.test(w)) {
-          re = /.$/;
-          w = w.replace(re,"");
-        }
-        else if (re4.test(w))
-          w = w + "e";
-      }
-    }
-
-    // Step 1c
-    re = /^(.+?)y$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      re = new RegExp(s_v);
-      if (re.test(stem))
-        w = stem + "i";
-    }
-
-    // Step 2
-    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      suffix = fp[2];
-      re = new RegExp(mgr0);
-      if (re.test(stem))
-        w = stem + step2list[suffix];
-    }
-
-    // Step 3
-    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      suffix = fp[2];
-      re = new RegExp(mgr0);
-      if (re.test(stem))
-        w = stem + step3list[suffix];
-    }
-
-    // Step 4
-    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
-    re2 = /^(.+?)(s|t)(ion)$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      re = new RegExp(mgr1);
-      if (re.test(stem))
-        w = stem;
-    }
-    else if (re2.test(w)) {
-      var fp = re2.exec(w);
-      stem = fp[1] + fp[2];
-      re2 = new RegExp(mgr1);
-      if (re2.test(stem))
-        w = stem;
-    }
-
-    // Step 5
-    re = /^(.+?)e$/;
-    if (re.test(w)) {
-      var fp = re.exec(w);
-      stem = fp[1];
-      re = new RegExp(mgr1);
-      re2 = new RegExp(meq1);
-      re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
-      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
-        w = stem;
-    }
-    re = /ll$/;
-    re2 = new RegExp(mgr1);
-    if (re.test(w) && re2.test(w)) {
-      re = /.$/;
-      w = w.replace(re,"");
-    }
-
-    // and turn initial Y back to y
-    if (firstch == "y")
-      w = firstch.toLowerCase() + w.substr(1);
-    return w;
-  }
-}
-
-
-/**
- * Search Module
- */
-var Search = {
-
-  _index : null,
-  _queued_query : null,
-  _pulse_status : -1,
-
-  init : function() {
-      var params = $.getQueryParameters();
-      if (params.q) {
-          var query = params.q[0];
-          $('input[name="q"]')[0].value = query;
-          this.performSearch(query);
-      }
-  },
-
-  loadIndex : function(url) {
-    $.ajax({type: "GET", url: url, data: null, success: null,
-            dataType: "script", cache: true});
-  },
-
-  setIndex : function(index) {
-    var q;
-    this._index = index;
-    if ((q = this._queued_query) !== null) {
-      this._queued_query = null;
-      Search.query(q);
-    }
-  },
-
-  hasIndex : function() {
-      return this._index !== null;
-  },
-
-  deferQuery : function(query) {
-      this._queued_query = query;
-  },
-
-  stopPulse : function() {
-      this._pulse_status = 0;
-  },
-
-  startPulse : function() {
-    if (this._pulse_status >= 0)
-        return;
-    function pulse() {
-      Search._pulse_status = (Search._pulse_status + 1) % 4;
-      var dotString = '';
-      for (var i = 0; i < Search._pulse_status; i++)
-        dotString += '.';
-      Search.dots.text(dotString);
-      if (Search._pulse_status > -1)
-        window.setTimeout(pulse, 500);
-    };
-    pulse();
-  },
-
-  /**
-   * perform a search for something
-   */
-  performSearch : function(query) {
-    // create the required interface elements
-    this.out = $('#search-results');
-    this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
-    this.dots = $('<span></span>').appendTo(this.title);
-    this.status = $('<p style="display: none"></p>').appendTo(this.out);
-    this.output = $('<ul class="search"/>').appendTo(this.out);
-
-    $('#search-progress').text(_('Preparing search...'));
-    this.startPulse();
-
-    // index already loaded, the browser was quick!
-    if (this.hasIndex())
-      this.query(query);
-    else
-      this.deferQuery(query);
-  },
-
-  query : function(query) {
-    var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
-
-    // Stem the searchterms and add them to the correct list
-    var stemmer = new Stemmer();
-    var searchterms = [];
-    var excluded = [];
-    var hlterms = [];
-    var tmp = query.split(/\s+/);
-    var objectterms = [];
-    for (var i = 0; i < tmp.length; i++) {
-      if (tmp[i] != "") {
-          objectterms.push(tmp[i].toLowerCase());
-      }
-
-      if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
-          tmp[i] == "") {
-        // skip this "word"
-        continue;
-      }
-      // stem the word
-      var word = stemmer.stemWord(tmp[i]).toLowerCase();
-      // select the correct list
-      if (word[0] == '-') {
-        var toAppend = excluded;
-        word = word.substr(1);
-      }
-      else {
-        var toAppend = searchterms;
-        hlterms.push(tmp[i].toLowerCase());
-      }
-      // only add if not already in the list
-      if (!$.contains(toAppend, word))
-        toAppend.push(word);
-    };
-    var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
-
-    // console.debug('SEARCH: searching for:');
-    // console.info('required: ', searchterms);
-    // console.info('excluded: ', excluded);
-
-    // prepare search
-    var filenames = this._index.filenames;
-    var titles = this._index.titles;
-    var terms = this._index.terms;
-    var fileMap = {};
-    var files = null;
-    // different result priorities
-    var importantResults = [];
-    var objectResults = [];
-    var regularResults = [];
-    var unimportantResults = [];
-    $('#search-progress').empty();
-
-    // lookup as object
-    for (var i = 0; i < objectterms.length; i++) {
-      var others = [].concat(objectterms.slice(0,i),
-                             objectterms.slice(i+1, objectterms.length))
-      var results = this.performObjectSearch(objectterms[i], others);
-      // Assume first word is most likely to be the object,
-      // other words more likely to be in description.
-      // Therefore put matches for earlier words first.
-      // (Results are eventually used in reverse order).
-      objectResults = results[0].concat(objectResults);
-      importantResults = results[1].concat(importantResults);
-      unimportantResults = results[2].concat(unimportantResults);
-    }
-
-    // perform the search on the required terms
-    for (var i = 0; i < searchterms.length; i++) {
-      var word = searchterms[i];
-      // no match but word was a required one
-      if ((files = terms[word]) == null)
-        break;
-      if (files.length == undefined) {
-        files = [files];
-      }
-      // create the mapping
-      for (var j = 0; j < files.length; j++) {
-        var file = files[j];
-        if (file in fileMap)
-          fileMap[file].push(word);
-        else
-          fileMap[file] = [word];
-      }
-    }
-
-    // now check if the files don't contain excluded terms
-    for (var file in fileMap) {
-      var valid = true;
-
-      // check if all requirements are matched
-      if (fileMap[file].length != searchterms.length)
-        continue;
-
-      // ensure that none of the excluded terms is in the
-      // search result.
-      for (var i = 0; i < excluded.length; i++) {
-        if (terms[excluded[i]] == file ||
-            $.contains(terms[excluded[i]] || [], file)) {
-          valid = false;
-          break;
-        }
-      }
-
-      // if we have still a valid result we can add it
-      // to the result list
-      if (valid)
-        regularResults.push([filenames[file], titles[file], '', null]);
-    }
-
-    // delete unused variables in order to not waste
-    // memory until list is retrieved completely
-    delete filenames, titles, terms;
-
-    // now sort the regular results descending by title
-    regularResults.sort(function(a, b) {
-      var left = a[1].toLowerCase();
-      var right = b[1].toLowerCase();
-      return (left > right) ? -1 : ((left < right) ? 1 : 0);
-    });
-
-    // combine all results
-    var results = unimportantResults.concat(regularResults)
-      .concat(objectResults).concat(importantResults);
-
-    // print the results
-    var resultCount = results.length;
-    function displayNextItem() {
-      // results left, load the summary and display it
-      if (results.length) {
-        var item = results.pop();
-        var listItem = $('<li style="display:none"></li>');
-        if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
-          // dirhtml builder
-          var dirname = item[0] + '/';
-          if (dirname.match(/\/index\/$/)) {
-            dirname = dirname.substring(0, dirname.length-6);
-          } else if (dirname == 'index/') {
-            dirname = '';
-          }
-          listItem.append($('<a/>').attr('href',
-            DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
-            highlightstring + item[2]).html(item[1]));
-        } else {
-          // normal html builders
-          listItem.append($('<a/>').attr('href',
-            item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
-            highlightstring + item[2]).html(item[1]));
-        }
-        if (item[3]) {
-          listItem.append($('<span> (' + item[3] + ')</span>'));
-          Search.output.append(listItem);
-          listItem.slideDown(5, function() {
-            displayNextItem();
-          });
-        } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
-          $.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
-                item[0] + '.txt', function(data) {
-            if (data != '') {
-              listItem.append($.makeSearchSummary(data, searchterms, hlterms));
-              Search.output.append(listItem);
-            }
-            listItem.slideDown(5, function() {
-              displayNextItem();
-            });
-          }, "text");
-        } else {
-          // no source available, just display title
-          Search.output.append(listItem);
-          listItem.slideDown(5, function() {
-            displayNextItem();
-          });
-        }
-      }
-      // search finished, update title and status message
-      else {
-        Search.stopPulse();
-        Search.title.text(_('Search Results'));
-        if (!resultCount)
-          Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
-        else
-            Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
-        Search.status.fadeIn(500);
-      }
-    }
-    displayNextItem();
-  },
-
-  performObjectSearch : function(object, otherterms) {
-    var filenames = this._index.filenames;
-    var objects = this._index.objects;
-    var objnames = this._index.objnames;
-    var titles = this._index.titles;
-
-    var importantResults = [];
-    var objectResults = [];
-    var unimportantResults = [];
-
-    for (var prefix in objects) {
-      for (var name in objects[prefix]) {
-        var fullname = (prefix ? prefix + '.' : '') + name;
-        if (fullname.toLowerCase().indexOf(object) > -1) {
-          var match = objects[prefix][name];
-          var objname = objnames[match[1]][2];
-          var title = titles[match[0]];
-          // If more than one term searched for, we require other words to be
-          // found in the name/title/description
-          if (otherterms.length > 0) {
-            var haystack = (prefix + ' ' + name + ' ' +
-                            objname + ' ' + title).toLowerCase();
-            var allfound = true;
-            for (var i = 0; i < otherterms.length; i++) {
-              if (haystack.indexOf(otherterms[i]) == -1) {
-                allfound = false;
-                break;
-              }
-            }
-            if (!allfound) {
-              continue;
-            }
-          }
-          var descr = objname + _(', in ') + title;
-          anchor = match[3];
-          if (anchor == '')
-            anchor = fullname;
-          else if (anchor == '-')
-            anchor = objnames[match[1]][1] + '-' + fullname;
-          result = [filenames[match[0]], fullname, '#'+anchor, descr];
-          switch (match[2]) {
-          case 1: objectResults.push(result); break;
-          case 0: importantResults.push(result); break;
-          case 2: unimportantResults.push(result); break;
-          }
-        }
-      }
-    }
-
-    // sort results descending
-    objectResults.sort(function(a, b) {
-      return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
-    });
-
-    importantResults.sort(function(a, b) {
-      return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
-    });
-
-    unimportantResults.sort(function(a, b) {
-      return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
-    });
-
-    return [importantResults, objectResults, unimportantResults]
-  }
-}
-
-$(document).ready(function() {
-  Search.init();
-});

+ 0 - 151
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/sidebar.js

@@ -1,151 +0,0 @@
-/*
- * sidebar.js
- * ~~~~~~~~~~
- *
- * This script makes the Sphinx sidebar collapsible.
- *
- * .sphinxsidebar contains .sphinxsidebarwrapper.  This script adds
- * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
- * used to collapse and expand the sidebar.
- *
- * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
- * and the width of the sidebar and the margin-left of the document
- * are decreased. When the sidebar is expanded the opposite happens.
- * This script saves a per-browser/per-session cookie used to
- * remember the position of the sidebar among the pages.
- * Once the browser is closed the cookie is deleted and the position
- * reset to the default (expanded).
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-$(function() {
-  // global elements used by the functions.
-  // the 'sidebarbutton' element is defined as global after its
-  // creation, in the add_sidebar_button function
-  var bodywrapper = $('.bodywrapper');
-  var sidebar = $('.sphinxsidebar');
-  var sidebarwrapper = $('.sphinxsidebarwrapper');
-
-  // for some reason, the document has no sidebar; do not run into errors
-  if (!sidebar.length) return;
-
-  // original margin-left of the bodywrapper and width of the sidebar
-  // with the sidebar expanded
-  var bw_margin_expanded = bodywrapper.css('margin-left');
-  var ssb_width_expanded = sidebar.width();
-
-  // margin-left of the bodywrapper and width of the sidebar
-  // with the sidebar collapsed
-  var bw_margin_collapsed = '.8em';
-  var ssb_width_collapsed = '.8em';
-
-  // colors used by the current theme
-  var dark_color = $('.related').css('background-color');
-  var light_color = $('.document').css('background-color');
-
-  function sidebar_is_collapsed() {
-    return sidebarwrapper.is(':not(:visible)');
-  }
-
-  function toggle_sidebar() {
-    if (sidebar_is_collapsed())
-      expand_sidebar();
-    else
-      collapse_sidebar();
-  }
-
-  function collapse_sidebar() {
-    sidebarwrapper.hide();
-    sidebar.css('width', ssb_width_collapsed);
-    bodywrapper.css('margin-left', bw_margin_collapsed);
-    sidebarbutton.css({
-        'margin-left': '0',
-        'height': bodywrapper.height()
-    });
-    sidebarbutton.find('span').text('»');
-    sidebarbutton.attr('title', _('Expand sidebar'));
-    document.cookie = 'sidebar=collapsed';
-  }
-
-  function expand_sidebar() {
-    bodywrapper.css('margin-left', bw_margin_expanded);
-    sidebar.css('width', ssb_width_expanded);
-    sidebarwrapper.show();
-    sidebarbutton.css({
-        'margin-left': ssb_width_expanded-12,
-        'height': bodywrapper.height()
-    });
-    sidebarbutton.find('span').text('«');
-    sidebarbutton.attr('title', _('Collapse sidebar'));
-    document.cookie = 'sidebar=expanded';
-  }
-
-  function add_sidebar_button() {
-    sidebarwrapper.css({
-        'float': 'left',
-        'margin-right': '0',
-        'width': ssb_width_expanded - 28
-    });
-    // create the button
-    sidebar.append(
-        '<div id="sidebarbutton"><span>&laquo;</span></div>'
-    );
-    var sidebarbutton = $('#sidebarbutton');
-    light_color = sidebarbutton.css('background-color');
-    // find the height of the viewport to center the '<<' in the page
-    var viewport_height;
-    if (window.innerHeight)
- 	  viewport_height = window.innerHeight;
-    else
-	  viewport_height = $(window).height();
-    sidebarbutton.find('span').css({
-        'display': 'block',
-        'margin-top': (viewport_height - sidebar.position().top - 20) / 2
-    });
-
-    sidebarbutton.click(toggle_sidebar);
-    sidebarbutton.attr('title', _('Collapse sidebar'));
-    sidebarbutton.css({
-        'color': '#FFFFFF',
-        'border-left': '1px solid ' + dark_color,
-        'font-size': '1.2em',
-        'cursor': 'pointer',
-        'height': bodywrapper.height(),
-        'padding-top': '1px',
-        'margin-left': ssb_width_expanded - 12
-    });
-
-    sidebarbutton.hover(
-      function () {
-          $(this).css('background-color', dark_color);
-      },
-      function () {
-          $(this).css('background-color', light_color);
-      }
-    );
-  }
-
-  function set_position_from_cookie() {
-    if (!document.cookie)
-      return;
-    var items = document.cookie.split(';');
-    for(var k=0; k<items.length; k++) {
-      var key_val = items[k].split('=');
-      var key = key_val[0];
-      if (key == 'sidebar') {
-        var value = key_val[1];
-        if ((value == 'collapsed') && (!sidebar_is_collapsed()))
-          collapse_sidebar();
-        else if ((value == 'expanded') && (sidebar_is_collapsed()))
-          expand_sidebar();
-      }
-    }
-  }
-
-  add_sidebar_button();
-  var sidebarbutton = $('#sidebarbutton');
-  set_position_from_cookie();
-});

+ 0 - 23
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/underscore.js

@@ -1,23 +0,0 @@
-// Underscore.js 0.5.5
-// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the terms of the MIT license.
-// Portions of Underscore are inspired by or borrowed from Prototype.js,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore/
-(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
-a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
-var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
-d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
-function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
-function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
-0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
-e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
-a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
-return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
-var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
-if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
-0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
-a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
-" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
-o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();

BIN
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/up-pressed.png


BIN
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/up.png


+ 0 - 808
desktop/core/ext-py/cx_Oracle-5.1.2/html/_static/websupport.js

@@ -1,808 +0,0 @@
-/*
- * websupport.js
- * ~~~~~~~~~~~~~
- *
- * sphinx.websupport utilties for all documentation.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-(function($) {
-  $.fn.autogrow = function() {
-    return this.each(function() {
-    var textarea = this;
-
-    $.fn.autogrow.resize(textarea);
-
-    $(textarea)
-      .focus(function() {
-        textarea.interval = setInterval(function() {
-          $.fn.autogrow.resize(textarea);
-        }, 500);
-      })
-      .blur(function() {
-        clearInterval(textarea.interval);
-      });
-    });
-  };
-
-  $.fn.autogrow.resize = function(textarea) {
-    var lineHeight = parseInt($(textarea).css('line-height'), 10);
-    var lines = textarea.value.split('\n');
-    var columns = textarea.cols;
-    var lineCount = 0;
-    $.each(lines, function() {
-      lineCount += Math.ceil(this.length / columns) || 1;
-    });
-    var height = lineHeight * (lineCount + 1);
-    $(textarea).css('height', height);
-  };
-})(jQuery);
-
-(function($) {
-  var comp, by;
-
-  function init() {
-    initEvents();
-    initComparator();
-  }
-
-  function initEvents() {
-    $('a.comment-close').live("click", function(event) {
-      event.preventDefault();
-      hide($(this).attr('id').substring(2));
-    });
-    $('a.vote').live("click", function(event) {
-      event.preventDefault();
-      handleVote($(this));
-    });
-    $('a.reply').live("click", function(event) {
-      event.preventDefault();
-      openReply($(this).attr('id').substring(2));
-    });
-    $('a.close-reply').live("click", function(event) {
-      event.preventDefault();
-      closeReply($(this).attr('id').substring(2));
-    });
-    $('a.sort-option').live("click", function(event) {
-      event.preventDefault();
-      handleReSort($(this));
-    });
-    $('a.show-proposal').live("click", function(event) {
-      event.preventDefault();
-      showProposal($(this).attr('id').substring(2));
-    });
-    $('a.hide-proposal').live("click", function(event) {
-      event.preventDefault();
-      hideProposal($(this).attr('id').substring(2));
-    });
-    $('a.show-propose-change').live("click", function(event) {
-      event.preventDefault();
-      showProposeChange($(this).attr('id').substring(2));
-    });
-    $('a.hide-propose-change').live("click", function(event) {
-      event.preventDefault();
-      hideProposeChange($(this).attr('id').substring(2));
-    });
-    $('a.accept-comment').live("click", function(event) {
-      event.preventDefault();
-      acceptComment($(this).attr('id').substring(2));
-    });
-    $('a.delete-comment').live("click", function(event) {
-      event.preventDefault();
-      deleteComment($(this).attr('id').substring(2));
-    });
-    $('a.comment-markup').live("click", function(event) {
-      event.preventDefault();
-      toggleCommentMarkupBox($(this).attr('id').substring(2));
-    });
-  }
-
-  /**
-   * Set comp, which is a comparator function used for sorting and
-   * inserting comments into the list.
-   */
-  function setComparator() {
-    // If the first three letters are "asc", sort in ascending order
-    // and remove the prefix.
-    if (by.substring(0,3) == 'asc') {
-      var i = by.substring(3);
-      comp = function(a, b) { return a[i] - b[i]; };
-    } else {
-      // Otherwise sort in descending order.
-      comp = function(a, b) { return b[by] - a[by]; };
-    }
-
-    // Reset link styles and format the selected sort option.
-    $('a.sel').attr('href', '#').removeClass('sel');
-    $('a.by' + by).removeAttr('href').addClass('sel');
-  }
-
-  /**
-   * Create a comp function. If the user has preferences stored in
-   * the sortBy cookie, use those, otherwise use the default.
-   */
-  function initComparator() {
-    by = 'rating'; // Default to sort by rating.
-    // If the sortBy cookie is set, use that instead.
-    if (document.cookie.length > 0) {
-      var start = document.cookie.indexOf('sortBy=');
-      if (start != -1) {
-        start = start + 7;
-        var end = document.cookie.indexOf(";", start);
-        if (end == -1) {
-          end = document.cookie.length;
-          by = unescape(document.cookie.substring(start, end));
-        }
-      }
-    }
-    setComparator();
-  }
-
-  /**
-   * Show a comment div.
-   */
-  function show(id) {
-    $('#ao' + id).hide();
-    $('#ah' + id).show();
-    var context = $.extend({id: id}, opts);
-    var popup = $(renderTemplate(popupTemplate, context)).hide();
-    popup.find('textarea[name="proposal"]').hide();
-    popup.find('a.by' + by).addClass('sel');
-    var form = popup.find('#cf' + id);
-    form.submit(function(event) {
-      event.preventDefault();
-      addComment(form);
-    });
-    $('#s' + id).after(popup);
-    popup.slideDown('fast', function() {
-      getComments(id);
-    });
-  }
-
-  /**
-   * Hide a comment div.
-   */
-  function hide(id) {
-    $('#ah' + id).hide();
-    $('#ao' + id).show();
-    var div = $('#sc' + id);
-    div.slideUp('fast', function() {
-      div.remove();
-    });
-  }
-
-  /**
-   * Perform an ajax request to get comments for a node
-   * and insert the comments into the comments tree.
-   */
-  function getComments(id) {
-    $.ajax({
-     type: 'GET',
-     url: opts.getCommentsURL,
-     data: {node: id},
-     success: function(data, textStatus, request) {
-       var ul = $('#cl' + id);
-       var speed = 100;
-       $('#cf' + id)
-         .find('textarea[name="proposal"]')
-         .data('source', data.source);
-
-       if (data.comments.length === 0) {
-         ul.html('<li>No comments yet.</li>');
-         ul.data('empty', true);
-       } else {
-         // If there are comments, sort them and put them in the list.
-         var comments = sortComments(data.comments);
-         speed = data.comments.length * 100;
-         appendComments(comments, ul);
-         ul.data('empty', false);
-       }
-       $('#cn' + id).slideUp(speed + 200);
-       ul.slideDown(speed);
-     },
-     error: function(request, textStatus, error) {
-       showError('Oops, there was a problem retrieving the comments.');
-     },
-     dataType: 'json'
-    });
-  }
-
-  /**
-   * Add a comment via ajax and insert the comment into the comment tree.
-   */
-  function addComment(form) {
-    var node_id = form.find('input[name="node"]').val();
-    var parent_id = form.find('input[name="parent"]').val();
-    var text = form.find('textarea[name="comment"]').val();
-    var proposal = form.find('textarea[name="proposal"]').val();
-
-    if (text == '') {
-      showError('Please enter a comment.');
-      return;
-    }
-
-    // Disable the form that is being submitted.
-    form.find('textarea,input').attr('disabled', 'disabled');
-
-    // Send the comment to the server.
-    $.ajax({
-      type: "POST",
-      url: opts.addCommentURL,
-      dataType: 'json',
-      data: {
-        node: node_id,
-        parent: parent_id,
-        text: text,
-        proposal: proposal
-      },
-      success: function(data, textStatus, error) {
-        // Reset the form.
-        if (node_id) {
-          hideProposeChange(node_id);
-        }
-        form.find('textarea')
-          .val('')
-          .add(form.find('input'))
-          .removeAttr('disabled');
-	var ul = $('#cl' + (node_id || parent_id));
-        if (ul.data('empty')) {
-          $(ul).empty();
-          ul.data('empty', false);
-        }
-        insertComment(data.comment);
-        var ao = $('#ao' + node_id);
-        ao.find('img').attr({'src': opts.commentBrightImage});
-        if (node_id) {
-          // if this was a "root" comment, remove the commenting box
-          // (the user can get it back by reopening the comment popup)
-          $('#ca' + node_id).slideUp();
-        }
-      },
-      error: function(request, textStatus, error) {
-        form.find('textarea,input').removeAttr('disabled');
-        showError('Oops, there was a problem adding the comment.');
-      }
-    });
-  }
-
-  /**
-   * Recursively append comments to the main comment list and children
-   * lists, creating the comment tree.
-   */
-  function appendComments(comments, ul) {
-    $.each(comments, function() {
-      var div = createCommentDiv(this);
-      ul.append($(document.createElement('li')).html(div));
-      appendComments(this.children, div.find('ul.comment-children'));
-      // To avoid stagnating data, don't store the comments children in data.
-      this.children = null;
-      div.data('comment', this);
-    });
-  }
-
-  /**
-   * After adding a new comment, it must be inserted in the correct
-   * location in the comment tree.
-   */
-  function insertComment(comment) {
-    var div = createCommentDiv(comment);
-
-    // To avoid stagnating data, don't store the comments children in data.
-    comment.children = null;
-    div.data('comment', comment);
-
-    var ul = $('#cl' + (comment.node || comment.parent));
-    var siblings = getChildren(ul);
-
-    var li = $(document.createElement('li'));
-    li.hide();
-
-    // Determine where in the parents children list to insert this comment.
-    for(i=0; i < siblings.length; i++) {
-      if (comp(comment, siblings[i]) <= 0) {
-        $('#cd' + siblings[i].id)
-          .parent()
-          .before(li.html(div));
-        li.slideDown('fast');
-        return;
-      }
-    }
-
-    // If we get here, this comment rates lower than all the others,
-    // or it is the only comment in the list.
-    ul.append(li.html(div));
-    li.slideDown('fast');
-  }
-
-  function acceptComment(id) {
-    $.ajax({
-      type: 'POST',
-      url: opts.acceptCommentURL,
-      data: {id: id},
-      success: function(data, textStatus, request) {
-        $('#cm' + id).fadeOut('fast');
-        $('#cd' + id).removeClass('moderate');
-      },
-      error: function(request, textStatus, error) {
-        showError('Oops, there was a problem accepting the comment.');
-      }
-    });
-  }
-
-  function deleteComment(id) {
-    $.ajax({
-      type: 'POST',
-      url: opts.deleteCommentURL,
-      data: {id: id},
-      success: function(data, textStatus, request) {
-        var div = $('#cd' + id);
-        if (data == 'delete') {
-          // Moderator mode: remove the comment and all children immediately
-          div.slideUp('fast', function() {
-            div.remove();
-          });
-          return;
-        }
-        // User mode: only mark the comment as deleted
-        div
-          .find('span.user-id:first')
-          .text('[deleted]').end()
-          .find('div.comment-text:first')
-          .text('[deleted]').end()
-          .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
-                ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
-          .remove();
-        var comment = div.data('comment');
-        comment.username = '[deleted]';
-        comment.text = '[deleted]';
-        div.data('comment', comment);
-      },
-      error: function(request, textStatus, error) {
-        showError('Oops, there was a problem deleting the comment.');
-      }
-    });
-  }
-
-  function showProposal(id) {
-    $('#sp' + id).hide();
-    $('#hp' + id).show();
-    $('#pr' + id).slideDown('fast');
-  }
-
-  function hideProposal(id) {
-    $('#hp' + id).hide();
-    $('#sp' + id).show();
-    $('#pr' + id).slideUp('fast');
-  }
-
-  function showProposeChange(id) {
-    $('#pc' + id).hide();
-    $('#hc' + id).show();
-    var textarea = $('#pt' + id);
-    textarea.val(textarea.data('source'));
-    $.fn.autogrow.resize(textarea[0]);
-    textarea.slideDown('fast');
-  }
-
-  function hideProposeChange(id) {
-    $('#hc' + id).hide();
-    $('#pc' + id).show();
-    var textarea = $('#pt' + id);
-    textarea.val('').removeAttr('disabled');
-    textarea.slideUp('fast');
-  }
-
-  function toggleCommentMarkupBox(id) {
-    $('#mb' + id).toggle();
-  }
-
-  /** Handle when the user clicks on a sort by link. */
-  function handleReSort(link) {
-    var classes = link.attr('class').split(/\s+/);
-    for (var i=0; i<classes.length; i++) {
-      if (classes[i] != 'sort-option') {
-	by = classes[i].substring(2);
-      }
-    }
-    setComparator();
-    // Save/update the sortBy cookie.
-    var expiration = new Date();
-    expiration.setDate(expiration.getDate() + 365);
-    document.cookie= 'sortBy=' + escape(by) +
-                     ';expires=' + expiration.toUTCString();
-    $('ul.comment-ul').each(function(index, ul) {
-      var comments = getChildren($(ul), true);
-      comments = sortComments(comments);
-      appendComments(comments, $(ul).empty());
-    });
-  }
-
-  /**
-   * Function to process a vote when a user clicks an arrow.
-   */
-  function handleVote(link) {
-    if (!opts.voting) {
-      showError("You'll need to login to vote.");
-      return;
-    }
-
-    var id = link.attr('id');
-    if (!id) {
-      // Didn't click on one of the voting arrows.
-      return;
-    }
-    // If it is an unvote, the new vote value is 0,
-    // Otherwise it's 1 for an upvote, or -1 for a downvote.
-    var value = 0;
-    if (id.charAt(1) != 'u') {
-      value = id.charAt(0) == 'u' ? 1 : -1;
-    }
-    // The data to be sent to the server.
-    var d = {
-      comment_id: id.substring(2),
-      value: value
-    };
-
-    // Swap the vote and unvote links.
-    link.hide();
-    $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
-      .show();
-
-    // The div the comment is displayed in.
-    var div = $('div#cd' + d.comment_id);
-    var data = div.data('comment');
-
-    // If this is not an unvote, and the other vote arrow has
-    // already been pressed, unpress it.
-    if ((d.value !== 0) && (data.vote === d.value * -1)) {
-      $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
-      $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
-    }
-
-    // Update the comments rating in the local data.
-    data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
-    data.vote = d.value;
-    div.data('comment', data);
-
-    // Change the rating text.
-    div.find('.rating:first')
-      .text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
-
-    // Send the vote information to the server.
-    $.ajax({
-      type: "POST",
-      url: opts.processVoteURL,
-      data: d,
-      error: function(request, textStatus, error) {
-        showError('Oops, there was a problem casting that vote.');
-      }
-    });
-  }
-
-  /**
-   * Open a reply form used to reply to an existing comment.
-   */
-  function openReply(id) {
-    // Swap out the reply link for the hide link
-    $('#rl' + id).hide();
-    $('#cr' + id).show();
-
-    // Add the reply li to the children ul.
-    var div = $(renderTemplate(replyTemplate, {id: id})).hide();
-    $('#cl' + id)
-      .prepend(div)
-      // Setup the submit handler for the reply form.
-      .find('#rf' + id)
-      .submit(function(event) {
-        event.preventDefault();
-        addComment($('#rf' + id));
-        closeReply(id);
-      })
-      .find('input[type=button]')
-      .click(function() {
-        closeReply(id);
-      });
-    div.slideDown('fast', function() {
-      $('#rf' + id).find('textarea').focus();
-    });
-  }
-
-  /**
-   * Close the reply form opened with openReply.
-   */
-  function closeReply(id) {
-    // Remove the reply div from the DOM.
-    $('#rd' + id).slideUp('fast', function() {
-      $(this).remove();
-    });
-
-    // Swap out the hide link for the reply link
-    $('#cr' + id).hide();
-    $('#rl' + id).show();
-  }
-
-  /**
-   * Recursively sort a tree of comments using the comp comparator.
-   */
-  function sortComments(comments) {
-    comments.sort(comp);
-    $.each(comments, function() {
-      this.children = sortComments(this.children);
-    });
-    return comments;
-  }
-
-  /**
-   * Get the children comments from a ul. If recursive is true,
-   * recursively include childrens' children.
-   */
-  function getChildren(ul, recursive) {
-    var children = [];
-    ul.children().children("[id^='cd']")
-      .each(function() {
-        var comment = $(this).data('comment');
-        if (recursive)
-          comment.children = getChildren($(this).find('#cl' + comment.id), true);
-        children.push(comment);
-      });
-    return children;
-  }
-
-  /** Create a div to display a comment in. */
-  function createCommentDiv(comment) {
-    if (!comment.displayed && !opts.moderator) {
-      return $('<div class="moderate">Thank you!  Your comment will show up '
-               + 'once it is has been approved by a moderator.</div>');
-    }
-    // Prettify the comment rating.
-    comment.pretty_rating = comment.rating + ' point' +
-      (comment.rating == 1 ? '' : 's');
-    // Make a class (for displaying not yet moderated comments differently)
-    comment.css_class = comment.displayed ? '' : ' moderate';
-    // Create a div for this comment.
-    var context = $.extend({}, opts, comment);
-    var div = $(renderTemplate(commentTemplate, context));
-
-    // If the user has voted on this comment, highlight the correct arrow.
-    if (comment.vote) {
-      var direction = (comment.vote == 1) ? 'u' : 'd';
-      div.find('#' + direction + 'v' + comment.id).hide();
-      div.find('#' + direction + 'u' + comment.id).show();
-    }
-
-    if (opts.moderator || comment.text != '[deleted]') {
-      div.find('a.reply').show();
-      if (comment.proposal_diff)
-        div.find('#sp' + comment.id).show();
-      if (opts.moderator && !comment.displayed)
-        div.find('#cm' + comment.id).show();
-      if (opts.moderator || (opts.username == comment.username))
-        div.find('#dc' + comment.id).show();
-    }
-    return div;
-  }
-
-  /**
-   * A simple template renderer. Placeholders such as <%id%> are replaced
-   * by context['id'] with items being escaped. Placeholders such as <#id#>
-   * are not escaped.
-   */
-  function renderTemplate(template, context) {
-    var esc = $(document.createElement('div'));
-
-    function handle(ph, escape) {
-      var cur = context;
-      $.each(ph.split('.'), function() {
-        cur = cur[this];
-      });
-      return escape ? esc.text(cur || "").html() : cur;
-    }
-
-    return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
-      return handle(arguments[2], arguments[1] == '%' ? true : false);
-    });
-  }
-
-  /** Flash an error message briefly. */
-  function showError(message) {
-    $(document.createElement('div')).attr({'class': 'popup-error'})
-      .append($(document.createElement('div'))
-               .attr({'class': 'error-message'}).text(message))
-      .appendTo('body')
-      .fadeIn("slow")
-      .delay(2000)
-      .fadeOut("slow");
-  }
-
-  /** Add a link the user uses to open the comments popup. */
-  $.fn.comment = function() {
-    return this.each(function() {
-      var id = $(this).attr('id').substring(1);
-      var count = COMMENT_METADATA[id];
-      var title = count + ' comment' + (count == 1 ? '' : 's');
-      var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
-      var addcls = count == 0 ? ' nocomment' : '';
-      $(this)
-        .append(
-          $(document.createElement('a')).attr({
-            href: '#',
-            'class': 'sphinx-comment-open' + addcls,
-            id: 'ao' + id
-          })
-            .append($(document.createElement('img')).attr({
-              src: image,
-              alt: 'comment',
-              title: title
-            }))
-            .click(function(event) {
-              event.preventDefault();
-              show($(this).attr('id').substring(2));
-            })
-        )
-        .append(
-          $(document.createElement('a')).attr({
-            href: '#',
-            'class': 'sphinx-comment-close hidden',
-            id: 'ah' + id
-          })
-            .append($(document.createElement('img')).attr({
-              src: opts.closeCommentImage,
-              alt: 'close',
-              title: 'close'
-            }))
-            .click(function(event) {
-              event.preventDefault();
-              hide($(this).attr('id').substring(2));
-            })
-        );
-    });
-  };
-
-  var opts = {
-    processVoteURL: '/_process_vote',
-    addCommentURL: '/_add_comment',
-    getCommentsURL: '/_get_comments',
-    acceptCommentURL: '/_accept_comment',
-    deleteCommentURL: '/_delete_comment',
-    commentImage: '/static/_static/comment.png',
-    closeCommentImage: '/static/_static/comment-close.png',
-    loadingImage: '/static/_static/ajax-loader.gif',
-    commentBrightImage: '/static/_static/comment-bright.png',
-    upArrow: '/static/_static/up.png',
-    downArrow: '/static/_static/down.png',
-    upArrowPressed: '/static/_static/up-pressed.png',
-    downArrowPressed: '/static/_static/down-pressed.png',
-    voting: false,
-    moderator: false
-  };
-
-  if (typeof COMMENT_OPTIONS != "undefined") {
-    opts = jQuery.extend(opts, COMMENT_OPTIONS);
-  }
-
-  var popupTemplate = '\
-    <div class="sphinx-comments" id="sc<%id%>">\
-      <p class="sort-options">\
-        Sort by:\
-        <a href="#" class="sort-option byrating">best rated</a>\
-        <a href="#" class="sort-option byascage">newest</a>\
-        <a href="#" class="sort-option byage">oldest</a>\
-      </p>\
-      <div class="comment-header">Comments</div>\
-      <div class="comment-loading" id="cn<%id%>">\
-        loading comments... <img src="<%loadingImage%>" alt="" /></div>\
-      <ul id="cl<%id%>" class="comment-ul"></ul>\
-      <div id="ca<%id%>">\
-      <p class="add-a-comment">Add a comment\
-        (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
-      <div class="comment-markup-box" id="mb<%id%>">\
-        reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
-        <tt>``code``</tt>, \
-        code blocks: <tt>::</tt> and an indented block after blank line</div>\
-      <form method="post" id="cf<%id%>" class="comment-form" action="">\
-        <textarea name="comment" cols="80"></textarea>\
-        <p class="propose-button">\
-          <a href="#" id="pc<%id%>" class="show-propose-change">\
-            Propose a change &#9657;\
-          </a>\
-          <a href="#" id="hc<%id%>" class="hide-propose-change">\
-            Propose a change &#9663;\
-          </a>\
-        </p>\
-        <textarea name="proposal" id="pt<%id%>" cols="80"\
-                  spellcheck="false"></textarea>\
-        <input type="submit" value="Add comment" />\
-        <input type="hidden" name="node" value="<%id%>" />\
-        <input type="hidden" name="parent" value="" />\
-      </form>\
-      </div>\
-    </div>';
-
-  var commentTemplate = '\
-    <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
-      <div class="vote">\
-        <div class="arrow">\
-          <a href="#" id="uv<%id%>" class="vote" title="vote up">\
-            <img src="<%upArrow%>" />\
-          </a>\
-          <a href="#" id="uu<%id%>" class="un vote" title="vote up">\
-            <img src="<%upArrowPressed%>" />\
-          </a>\
-        </div>\
-        <div class="arrow">\
-          <a href="#" id="dv<%id%>" class="vote" title="vote down">\
-            <img src="<%downArrow%>" id="da<%id%>" />\
-          </a>\
-          <a href="#" id="du<%id%>" class="un vote" title="vote down">\
-            <img src="<%downArrowPressed%>" />\
-          </a>\
-        </div>\
-      </div>\
-      <div class="comment-content">\
-        <p class="tagline comment">\
-          <span class="user-id"><%username%></span>\
-          <span class="rating"><%pretty_rating%></span>\
-          <span class="delta"><%time.delta%></span>\
-        </p>\
-        <div class="comment-text comment"><#text#></div>\
-        <p class="comment-opts comment">\
-          <a href="#" class="reply hidden" id="rl<%id%>">reply &#9657;</a>\
-          <a href="#" class="close-reply" id="cr<%id%>">reply &#9663;</a>\
-          <a href="#" id="sp<%id%>" class="show-proposal">proposal &#9657;</a>\
-          <a href="#" id="hp<%id%>" class="hide-proposal">proposal &#9663;</a>\
-          <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
-          <span id="cm<%id%>" class="moderation hidden">\
-            <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
-          </span>\
-        </p>\
-        <pre class="proposal" id="pr<%id%>">\
-<#proposal_diff#>\
-        </pre>\
-          <ul class="comment-children" id="cl<%id%>"></ul>\
-        </div>\
-        <div class="clearleft"></div>\
-      </div>\
-    </div>';
-
-  var replyTemplate = '\
-    <li>\
-      <div class="reply-div" id="rd<%id%>">\
-        <form id="rf<%id%>">\
-          <textarea name="comment" cols="80"></textarea>\
-          <input type="submit" value="Add reply" />\
-          <input type="button" value="Cancel" />\
-          <input type="hidden" name="parent" value="<%id%>" />\
-          <input type="hidden" name="node" value="" />\
-        </form>\
-      </div>\
-    </li>';
-
-  $(document).ready(function() {
-    init();
-  });
-})(jQuery);
-
-$(document).ready(function() {
-  // add comment anchors for all paragraphs that are commentable
-  $('.sphinx-has-comment').comment();
-
-  // highlight search words in search results
-  $("div.context").each(function() {
-    var params = $.getQueryParameters();
-    var terms = (params.q) ? params.q[0].split(/\s+/) : [];
-    var result = $(this);
-    $.each(terms, function() {
-      result.highlightText(this.toLowerCase(), 'highlighted');
-    });
-  });
-
-  // directly open comment window if requested
-  var anchor = document.location.hash;
-  if (anchor.substring(0, 9) == '#comment-') {
-    $('#ao' + anchor.substring(9)).click();
-    document.location.hash = '#s' + anchor.substring(9);
-  }
-});

+ 0 - 516
desktop/core/ext-py/cx_Oracle-5.1.2/html/connection.html

@@ -1,516 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Connection Object &mdash; cx_Oracle 5.1.2 documentation</title>
-    
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '',
-        VERSION:     '5.1.2',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  false
-      };
-    </script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
-    <link rel="next" title="Cursor Object" href="cursor.html" />
-    <link rel="prev" title="Module Interface" href="module.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="cursor.html" title="Cursor Object"
-             accesskey="N">next</a> |</li>
-        <li class="right" >
-          <a href="module.html" title="Module Interface"
-             accesskey="P">previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <div class="section" id="connection-object">
-<span id="connobj"></span><h1>Connection Object<a class="headerlink" href="#connection-object" title="Permalink to this headline">¶</a></h1>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">Any outstanding changes will be rolled back when the connection object
-is destroyed or closed.</p>
-</div>
-<dl class="method">
-<dt id="Connection.__enter__">
-<tt class="descclassname">Connection.</tt><tt class="descname">__enter__</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.__enter__" title="Permalink to this definition">¶</a></dt>
-<dd><p>The entry point for the connection as a context manager, a feature available
-in Python 2.5 and higher. It returns itself.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.__exit__">
-<tt class="descclassname">Connection.</tt><tt class="descname">__exit__</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.__exit__" title="Permalink to this definition">¶</a></dt>
-<dd><p>The exit point for the connection as a context manager, a feature available
-in Python 2.5 and higher. In the event of an exception, the transaction is
-rolled back; otherwise, the transaction is committed.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.action">
-<tt class="descclassname">Connection.</tt><tt class="descname">action</tt><a class="headerlink" href="#Connection.action" title="Permalink to this definition">¶</a></dt>
-<dd><p>This write-only attribute sets the action column in the v$session table and
-is only available in Oracle 10g.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.autocommit">
-<tt class="descclassname">Connection.</tt><tt class="descname">autocommit</tt><a class="headerlink" href="#Connection.autocommit" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute determines whether autocommit mode is on or off.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.begin">
-<tt class="descclassname">Connection.</tt><tt class="descname">begin</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.begin" title="Permalink to this definition">¶</a></dt>
-<dt>
-<tt class="descclassname">Connection.</tt><tt class="descname">begin</tt><big>(</big><span class="optional">[</span><em>formatId</em>, <em>transactionId</em>, <em>branchId</em><span class="optional">]</span><big>)</big></dt>
-<dd><p>Explicitly begin a new transaction. Without parameters, this explicitly
-begins a local transaction; otherwise, this explicitly begins a distributed
-(global) transaction with the given parameters. See the Oracle documentation
-for more details.</p>
-<p>Note that in order to make use of global (distributed) transactions, the
-twophase argument to the Connection constructor must be a true value. See
-the comments on the Connection constructor for more information
-(<a class="reference internal" href="module.html#module"><em>Module Interface</em></a>).</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.cancel">
-<tt class="descclassname">Connection.</tt><tt class="descname">cancel</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.cancel" title="Permalink to this definition">¶</a></dt>
-<dd><p>Cancel a long-running transaction.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.changepassword">
-<tt class="descclassname">Connection.</tt><tt class="descname">changepassword</tt><big>(</big><em>oldpassword</em>, <em>newpassword</em><big>)</big><a class="headerlink" href="#Connection.changepassword" title="Permalink to this definition">¶</a></dt>
-<dd><p>Change the password of the logon. This method also modifies the attribute
-<a class="reference internal" href="#Connection.password" title="Connection.password"><tt class="xref py py-data docutils literal"><span class="pre">Connection.password</span></tt></a> upon successful completion.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.client_identifier">
-<tt class="descclassname">Connection.</tt><tt class="descname">client_identifier</tt><a class="headerlink" href="#Connection.client_identifier" title="Permalink to this definition">¶</a></dt>
-<dd><p>This write-only attribute sets the client_identifier column in the
-v$session table.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.clientinfo">
-<tt class="descclassname">Connection.</tt><tt class="descname">clientinfo</tt><a class="headerlink" href="#Connection.clientinfo" title="Permalink to this definition">¶</a></dt>
-<dd><p>This write-only attribute sets the client_info column in the v$session table
-and is only available in Oracle 10g.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.close">
-<tt class="descclassname">Connection.</tt><tt class="descname">close</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.close" title="Permalink to this definition">¶</a></dt>
-<dd><p>Close the connection now, rather than whenever __del__ is called. The
-connection will be unusable from this point forward; an Error exception will
-be raised if any operation is attempted with the connection. The same
-applies to any cursor objects trying to use the connection.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.commit">
-<tt class="descclassname">Connection.</tt><tt class="descname">commit</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.commit" title="Permalink to this definition">¶</a></dt>
-<dd><p>Commit any pending transactions to the database.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.current_schema">
-<tt class="descclassname">Connection.</tt><tt class="descname">current_schema</tt><a class="headerlink" href="#Connection.current_schema" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute sets the current schema attribute for the session.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.cursor">
-<tt class="descclassname">Connection.</tt><tt class="descname">cursor</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.cursor" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return a new Cursor object (<a class="reference internal" href="cursor.html#cursorobj"><em>Cursor Object</em></a>) using the connection.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.dsn">
-<tt class="descclassname">Connection.</tt><tt class="descname">dsn</tt><a class="headerlink" href="#Connection.dsn" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the TNS entry of the database to which a
-connection has been established.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.encoding">
-<tt class="descclassname">Connection.</tt><tt class="descname">encoding</tt><a class="headerlink" href="#Connection.encoding" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the IANA character set name of the
-character set in use by the Oracle client.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition and is only
-available in Python 2.x when not built in unicode mode.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.inputtypehandler">
-<tt class="descclassname">Connection.</tt><tt class="descname">inputtypehandler</tt><a class="headerlink" href="#Connection.inputtypehandler" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute specifies a method called for each value that is
-bound to a statement executed on any cursor associated with this connection.
-The method signature is handler(cursor, value, arraysize) and the return
-value is expected to be a variable object or None in which case a default
-variable object will be created. If this attribute is None, the default
-behavior will take place for all values bound to statements.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.maxBytesPerCharacter">
-<tt class="descclassname">Connection.</tt><tt class="descname">maxBytesPerCharacter</tt><a class="headerlink" href="#Connection.maxBytesPerCharacter" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the maximum number of bytes each character
-can use for the client character set.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.module">
-<tt class="descclassname">Connection.</tt><tt class="descname">module</tt><a class="headerlink" href="#Connection.module" title="Permalink to this definition">¶</a></dt>
-<dd><p>This write-only attribute sets the module column in the v$session table and
-is only available in Oracle 10g. The maximum length for this string is 48
-and if you exceed this length you will get ORA-24960.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.nencoding">
-<tt class="descclassname">Connection.</tt><tt class="descname">nencoding</tt><a class="headerlink" href="#Connection.nencoding" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the IANA character set name of the national
-character set in use by the Oracle client.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition and is only
-available in Python 2.x when not built in unicode mode.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.outputtypehandler">
-<tt class="descclassname">Connection.</tt><tt class="descname">outputtypehandler</tt><a class="headerlink" href="#Connection.outputtypehandler" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute specifies a method called for each value that is
-to be fetched from any cursor associated with this connection. The method
-signature is handler(cursor, name, defaultType, length, precision, scale)
-and the return value is expected to be a variable object or None in which
-case a default variable object will be created. If this attribute is None,
-the default behavior will take place for all values fetched from cursors.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.password">
-<tt class="descclassname">Connection.</tt><tt class="descname">password</tt><a class="headerlink" href="#Connection.password" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute initially contains the password of the user which
-established the connection to the database.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.ping">
-<tt class="descclassname">Connection.</tt><tt class="descname">ping</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.ping" title="Permalink to this definition">¶</a></dt>
-<dd><p>Ping the server which can be used to test if the connection is still active.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition and is only
-available in Oracle 10g R2 and higher.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.prepare">
-<tt class="descclassname">Connection.</tt><tt class="descname">prepare</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.prepare" title="Permalink to this definition">¶</a></dt>
-<dd><p>Prepare the distributed (global) transaction for commit. Return a boolean
-indicating if a transaction was actually prepared in order to avoid the
-error ORA-24756 (transaction does not exist).</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.register">
-<tt class="descclassname">Connection.</tt><tt class="descname">register</tt><big>(</big><em>code</em>, <em>when</em>, <em>function</em><big>)</big><a class="headerlink" href="#Connection.register" title="Permalink to this definition">¶</a></dt>
-<dd><p>Register the function as an OCI callback. The code is one of the function
-codes defined in the Oracle documentation of which the most common ones are
-defined as constants in this module. The when parameter is one of
-<tt class="xref py py-data docutils literal"><span class="pre">UCBTYPE_ENTRY</span></tt>, <tt class="xref py py-data docutils literal"><span class="pre">UCBTYPE_EXIT</span></tt> or <tt class="xref py py-data docutils literal"><span class="pre">UCBTYPE_REPLACE</span></tt>. The
-function is a Python function which will accept the parameters that the OCI
-function accepts, modified as needed to return Python objects that are of
-some use. Note that this is a highly experimental method and can cause
-cx_Oracle to crash if not used properly. In particular, the OCI does not
-provide sizing information to the callback so attempts to access a variable
-beyond the allocated size will crash cx_Oracle.  Use with caution.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.rollback">
-<tt class="descclassname">Connection.</tt><tt class="descname">rollback</tt><big>(</big><big>)</big><a class="headerlink" href="#Connection.rollback" title="Permalink to this definition">¶</a></dt>
-<dd><p>Rollback any pending transactions.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.shutdown">
-<tt class="descclassname">Connection.</tt><tt class="descname">shutdown</tt><big>(</big><span class="optional">[</span><em>mode</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Connection.shutdown" title="Permalink to this definition">¶</a></dt>
-<dd><p>Shutdown the database. In order to do this the connection must connected as
-<tt class="xref py py-data docutils literal"><span class="pre">SYSDBA</span></tt> or <tt class="xref py py-data docutils literal"><span class="pre">SYSOPER</span></tt>. First shutdown using one of the
-DBSHUTDOWN constants defined in the constants (<a class="reference internal" href="module.html#constants"><em>Constants</em></a>) section.
-Next issue the SQL statements required to close the database (&#8220;alter
-database close normal&#8221;) and dismount the database (&#8220;alter database
-dismount&#8221;) followed by a second call to this method with the
-<tt class="xref py py-data docutils literal"><span class="pre">DBSHUTDOWN_FINAL</span></tt> mode.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition and is only
-available in Oracle 10g R2 and higher.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.startup">
-<tt class="descclassname">Connection.</tt><tt class="descname">startup</tt><big>(</big><em>force=False</em>, <em>restrict=False</em><big>)</big><a class="headerlink" href="#Connection.startup" title="Permalink to this definition">¶</a></dt>
-<dd><p>Startup the database. This is equivalent to the SQL*Plus command &#8220;startup
-nomount&#8221;. The connection must be connected as <tt class="xref py py-data docutils literal"><span class="pre">SYSDBA</span></tt> or
-<tt class="xref py py-data docutils literal"><span class="pre">SYSOPER</span></tt> with the <tt class="xref py py-data docutils literal"><span class="pre">PRELIM_AUTH</span></tt> option specified for this to
-work. Once this method has completed, connect again without the
-<tt class="xref py py-data docutils literal"><span class="pre">PRELIM_AUTH</span></tt> option and issue the statements required to mount
-(&#8220;alter database mount&#8221;) and open (&#8220;alter database open&#8221;) the database.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition and is only
-available in Oracle 10g R2 and higher.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.stmtcachesize">
-<tt class="descclassname">Connection.</tt><tt class="descname">stmtcachesize</tt><a class="headerlink" href="#Connection.stmtcachesize" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute specifies the size of the statement cache. This
-value can make a significant difference in performance (up to 100x) if you
-have a small number of statements that you execute repeatedly.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.subscribe">
-<tt class="descclassname">Connection.</tt><tt class="descname">subscribe</tt><big>(</big><em>namespace=cx_Oracle.SUBSCR_NAMESPACE_DBCHANGE</em>, <em>protocol=cx_Oracle.SUBSCR_PROTO_OCI</em>, <em>callback=None</em>, <em>timeout=0</em>, <em>operations=OPCODE_ALLOPS</em>, <em>rowids=False</em>, <em>port=0</em><big>)</big><a class="headerlink" href="#Connection.subscribe" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return a new Subscription object (<a class="reference internal" href="subscription.html#subscrobj"><em>Subscription Object</em></a>) using the connection.
-Currently the namespace and protocol arguments cannot have any other
-meaningful values. The callback is expected to be a callable that accepts
-a single argument which is a message object. The timeout value specifies
-that the subscription expires after the given time in seconds. The default
-value of 0 indicates that the subscription does not expire. The operations
-argument enables filtering of the messages that are sent (insert, update,
-delete). The rowids flag specifies whether the rowids of affected rows
-should be included in the messages that are sent. The port specifies the
-listening port for callback notifications from the database server.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition and is only
-available in Oracle 10g R2 and higher.</p>
-</div>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">Do not close the connection before the subscription object is deleted or
-the subscription object will not be deregistered in the database. This is
-done automatically if connection.close() is never called.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.tnsentry">
-<tt class="descclassname">Connection.</tt><tt class="descname">tnsentry</tt><a class="headerlink" href="#Connection.tnsentry" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the TNS entry of the database to which a
-connection has been established.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Connection.unregister">
-<tt class="descclassname">Connection.</tt><tt class="descname">unregister</tt><big>(</big><em>code</em>, <em>when</em><big>)</big><a class="headerlink" href="#Connection.unregister" title="Permalink to this definition">¶</a></dt>
-<dd><p>Unregister the function as an OCI callback. The code is one of the function
-codes defined in the Oracle documentation of which the most common ones are
-defined as constants in this module. The when parameter is one of
-<tt class="xref py py-data docutils literal"><span class="pre">UCBTYPE_ENTRY</span></tt>, <tt class="xref py py-data docutils literal"><span class="pre">UCBTYPE_EXIT</span></tt> or <tt class="xref py py-data docutils literal"><span class="pre">UCBTYPE_REPLACE</span></tt>.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.username">
-<tt class="descclassname">Connection.</tt><tt class="descname">username</tt><a class="headerlink" href="#Connection.username" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the name of the user which established the
-connection to the database.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Connection.version">
-<tt class="descclassname">Connection.</tt><tt class="descname">version</tt><a class="headerlink" href="#Connection.version" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the version of the database to which a
-connection has been established.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-</div>
-
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-  <h4>Previous topic</h4>
-  <p class="topless"><a href="module.html"
-                        title="previous chapter">Module Interface</a></p>
-  <h4>Next topic</h4>
-  <p class="topless"><a href="cursor.html"
-                        title="next chapter">Cursor Object</a></p>
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="cursor.html" title="Cursor Object"
-             >next</a> |</li>
-        <li class="right" >
-          <a href="module.html" title="Module Interface"
-             >previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Anthony Tuininga.
-      Last updated on Jul 02, 2012.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

+ 0 - 533
desktop/core/ext-py/cx_Oracle-5.1.2/html/cursor.html

@@ -1,533 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Cursor Object &mdash; cx_Oracle 5.1.2 documentation</title>
-    
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '',
-        VERSION:     '5.1.2',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  false
-      };
-    </script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
-    <link rel="next" title="Variable Objects" href="variable.html" />
-    <link rel="prev" title="Connection Object" href="connection.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="variable.html" title="Variable Objects"
-             accesskey="N">next</a> |</li>
-        <li class="right" >
-          <a href="connection.html" title="Connection Object"
-             accesskey="P">previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <div class="section" id="cursor-object">
-<span id="cursorobj"></span><h1>Cursor Object<a class="headerlink" href="#cursor-object" title="Permalink to this headline">¶</a></h1>
-<dl class="attribute">
-<dt id="Cursor.arraysize">
-<tt class="descclassname">Cursor.</tt><tt class="descname">arraysize</tt><a class="headerlink" href="#Cursor.arraysize" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute specifies the number of rows to fetch at a time
-internally and is the default number of rows to fetch with the
-<a class="reference internal" href="#Cursor.fetchmany" title="Cursor.fetchmany"><tt class="xref py py-meth docutils literal"><span class="pre">fetchmany()</span></tt></a> call.  It defaults to 50 meaning to fetch 50
-rows at a time. Note that this attribute can drastically affect the
-performance of a query since it directly affects the number of network round
-trips that need to be performed. This is the reason for setting it to 50
-instead of the 1 that the DB API recommends.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Cursor.bindarraysize">
-<tt class="descclassname">Cursor.</tt><tt class="descname">bindarraysize</tt><a class="headerlink" href="#Cursor.bindarraysize" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute specifies the number of rows to bind at a time and
-is used when creating variables via setinputsizes() or var(). It defaults to
-1 meaning to bind a single row at a time.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this attribute.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.arrayvar">
-<tt class="descclassname">Cursor.</tt><tt class="descname">arrayvar</tt><big>(</big><em>dataType</em>, <em>value</em><span class="optional">[</span>, <em>size</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Cursor.arrayvar" title="Permalink to this definition">¶</a></dt>
-<dd><p>Create an array variable associated with the cursor of the given type and
-size and return a variable object (<a class="reference internal" href="variable.html#varobj"><em>Variable Objects</em></a>). The value is either an
-integer specifying the number of elements to allocate or it is a list and
-the number of elements allocated is drawn from the size of the list. If the
-value is a list, the variable is also set with the contents of the list. If
-the size is not specified and the type is a string or binary, 4000 bytes
-(maximum allowable by Oracle) is allocated. This is needed for passing
-arrays to PL/SQL (in cases where the list might be empty and the type cannot
-be determined automatically) or returning arrays from PL/SQL.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this method.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.bindnames">
-<tt class="descclassname">Cursor.</tt><tt class="descname">bindnames</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.bindnames" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the list of bind variable names bound to the statement. Note that the
-statement must have been prepared first.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this method.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Cursor.bindvars">
-<tt class="descclassname">Cursor.</tt><tt class="descname">bindvars</tt><a class="headerlink" href="#Cursor.bindvars" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute specifies the bind variables used for the last
-execute. The value will be either a list or a dictionary depending on
-whether binding was done by position or name. Care should be taken when
-referencing this attribute. In particular, elements should not be removed.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this attribute.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.callfunc">
-<tt class="descclassname">Cursor.</tt><tt class="descname">callfunc</tt><big>(</big><em>name</em>, <em>returnType</em>, <em>parameters=</em><span class="optional">[</span><span class="optional">]</span>, <em>keywordParameters = {}</em><big>)</big><a class="headerlink" href="#Cursor.callfunc" title="Permalink to this definition">¶</a></dt>
-<dd><p>Call a function with the given name. The return type is specified in the
-same notation as is required by setinputsizes(). The sequence of parameters
-must contain one entry for each argument that the function expects. Any
-keyword parameters will be included after the positional parameters. The
-result of the call is the return value of the function.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this method.</p>
-</div>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">If you intend to call setinputsizes() on the cursor prior to making this
-call, then note that the first item in the argument list refers to the
-return value of the function.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.callproc">
-<tt class="descclassname">Cursor.</tt><tt class="descname">callproc</tt><big>(</big><em>name</em>, <em>parameters=</em><span class="optional">[</span><span class="optional">]</span>, <em>keyewordParameters = {}</em><big>)</big><a class="headerlink" href="#Cursor.callproc" title="Permalink to this definition">¶</a></dt>
-<dd><p>Call a procedure with the given name. The sequence of parameters must
-contain one entry for each argument that the procedure expects. The result
-of the call is a modified copy of the input sequence. Input parameters are
-left untouched; output and input/output parameters are replaced with
-possibly new values. Keyword parameters will be included after the
-positional parameters and are not returned as part of the output sequence.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not allow for keyword parameters.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.close">
-<tt class="descclassname">Cursor.</tt><tt class="descname">close</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.close" title="Permalink to this definition">¶</a></dt>
-<dd><p>Close the cursor now, rather than whenever __del__ is called. The cursor
-will be unusable from this point forward; an Error exception will be raised
-if any operation is attempted with the cursor.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.connection">
-<tt class="descclassname">Cursor.</tt><tt class="descname">connection</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.connection" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns a reference to the connection object on
-which the cursor was created.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition but it is
-mentioned in PEP 249 as an optional extension.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="Cursor.description">
-<tt class="descclassname">Cursor.</tt><tt class="descname">description</tt><a class="headerlink" href="#Cursor.description" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute is a sequence of 7-item sequences. Each of these
-sequences contains information describing one result column: (name, type,
-display_size, internal_size, precision, scale, null_ok). This attribute will
-be None for operations that do not return rows or if the cursor has not had
-an operation invoked via the execute() method yet.</p>
-<p>The type will be one of the type objects defined at the module level.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.execute">
-<tt class="descclassname">Cursor.</tt><tt class="descname">execute</tt><big>(</big><em>statement</em><span class="optional">[</span>, <em>parameters</em><span class="optional">]</span>, <em>**keywordParameters</em><big>)</big><a class="headerlink" href="#Cursor.execute" title="Permalink to this definition">¶</a></dt>
-<dd><p>Execute a statement against the database. Parameters may be passed as a
-dictionary or sequence or as keyword arguments. If the arguments are a
-dictionary, the values will be bound by name and if the arguments are a
-sequence the values will be bound by position.</p>
-<p>A reference to the statement will be retained by the cursor. If None or the
-same string object is passed in again, the cursor will execute that
-statement again without performing a prepare or rebinding and redefining.
-This is most effective for algorithms where the same statement is used, but
-different parameters are bound to it (many times). Note that parameters that
-are not passed in during subsequent executions will retain the value passed
-in during the last execution that contained them.</p>
-<p>For maximum efficiency when reusing an statement, it is best to use the
-setinputsizes() method to specify the parameter types and sizes ahead of
-time; in particular, None is assumed to be a string of length 1 so any
-values that are later bound as numbers or dates will raise a TypeError
-exception.</p>
-<p>If the statement is a query, a list of variable objects (<a class="reference internal" href="variable.html#varobj"><em>Variable Objects</em></a>) will
-be returned corresponding to the list of variables into which data will be
-fetched with the <a class="reference internal" href="#Cursor.fetchone" title="Cursor.fetchone"><tt class="xref py py-meth docutils literal"><span class="pre">fetchone()</span></tt></a>, <a class="reference internal" href="#Cursor.fetchmany" title="Cursor.fetchmany"><tt class="xref py py-meth docutils literal"><span class="pre">fetchmany()</span></tt></a> and
-<a class="reference internal" href="#Cursor.fetchall" title="Cursor.fetchall"><tt class="xref py py-meth docutils literal"><span class="pre">fetchall()</span></tt></a> methods; otherwise, <tt class="docutils literal"><span class="pre">None</span></tt> will be returned.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.executemany">
-<tt class="descclassname">Cursor.</tt><tt class="descname">executemany</tt><big>(</big><em>statement</em>, <em>parameters</em><big>)</big><a class="headerlink" href="#Cursor.executemany" title="Permalink to this definition">¶</a></dt>
-<dd><p>Prepare a statement for execution against a database and then execute it
-against all parameter mappings or sequences found in the sequence
-parameters. The statement is managed in the same way as the execute()
-method manages it.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.executemanyprepared">
-<tt class="descclassname">Cursor.</tt><tt class="descname">executemanyprepared</tt><big>(</big><em>numIters</em><big>)</big><a class="headerlink" href="#Cursor.executemanyprepared" title="Permalink to this definition">¶</a></dt>
-<dd><p>Execute the previously prepared and bound statement the given number of
-times.  The variables that are bound must have already been set to their
-desired value before this call is made.  This method was designed for the
-case where optimal performance is required as it comes at the expense of
-compatibility with the DB API.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this method.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.fetchall">
-<tt class="descclassname">Cursor.</tt><tt class="descname">fetchall</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.fetchall" title="Permalink to this definition">¶</a></dt>
-<dd><p>Fetch all (remaining) rows of a query result, returning them as a list of
-tuples. An empty list is returned if no more rows are available. Note that
-the cursor&#8217;s arraysize attribute can affect the performance of this
-operation, as internally reads from the database are done in batches
-corresponding to the arraysize.</p>
-<p>An exception is raised if the previous call to execute() did not produce any
-result set or no call was issued yet.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.fetchmany">
-<tt class="descclassname">Cursor.</tt><tt class="descname">fetchmany</tt><big>(</big><span class="optional">[</span><em>numRows=cursor.arraysize</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Cursor.fetchmany" title="Permalink to this definition">¶</a></dt>
-<dd><p>Fetch the next set of rows of a query result, returning a list of tuples. An
-empty list is returned if no more rows are available. Note that the cursor&#8217;s
-arraysize attribute can affect the performance of this operation.</p>
-<p>The number of rows to fetch is specified by the parameter. If it is not
-given, the cursor&#8217;s arrysize attribute determines the number of rows to be
-fetched. If the number of rows available to be fetched is fewer than the
-amount requested, fewer rows will be returned.</p>
-<p>An exception is raised if the previous call to execute() did not produce any
-result set or no call was issued yet.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.fetchone">
-<tt class="descclassname">Cursor.</tt><tt class="descname">fetchone</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.fetchone" title="Permalink to this definition">¶</a></dt>
-<dd><p>Fetch the next row of a query result set, returning a single tuple or None
-when no more data is available.</p>
-<p>An exception is raised if the previous call to execute() did not produce any
-result set or no call was issued yet.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.fetchraw">
-<tt class="descclassname">Cursor.</tt><tt class="descname">fetchraw</tt><big>(</big><span class="optional">[</span><em>numRows=cursor.arraysize</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Cursor.fetchraw" title="Permalink to this definition">¶</a></dt>
-<dd><p>Fetch the next set of rows of a query result into the internal buffers of
-the defined variables for the cursor. The number of rows actually fetched is
-returned.  This method was designed for the case where optimal performance
-is required as it comes at the expense of compatibility with the DB API.</p>
-<p>An exception is raised if the previous call to execute() did not produce any
-result set or no call was issued yet.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this method.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Cursor.fetchvars">
-<tt class="descclassname">Cursor.</tt><tt class="descname">fetchvars</tt><a class="headerlink" href="#Cursor.fetchvars" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute specifies the list of variables created for the
-last query that was executed on the cursor.  Care should be taken when
-referencing this attribute. In particular, elements should not be removed.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this attribute.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Cursor.inputtypehandler">
-<tt class="descclassname">Cursor.</tt><tt class="descname">inputtypehandler</tt><a class="headerlink" href="#Cursor.inputtypehandler" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute specifies a method called for each value that is
-bound to a statement executed on the cursor and overrides the attribute with
-the same name on the connection if specified. The method signature is
-handler(cursor, value, arraysize) and the return value is expected to be a
-variable object or None in which case a default variable object will be
-created. If this attribute is None, the value of the attribute with the same
-name on the connection is used.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.__iter__">
-<tt class="descclassname">Cursor.</tt><tt class="descname">__iter__</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.__iter__" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns the cursor itself to be used as an iterator.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition but it is
-mentioned in PEP 249 as an optional extension.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.next">
-<tt class="descclassname">Cursor.</tt><tt class="descname">next</tt><big>(</big><big>)</big><a class="headerlink" href="#Cursor.next" title="Permalink to this definition">¶</a></dt>
-<dd><p>Fetch the next row of a query result set, using the same semantics as the
-method fetchone().</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition but it is
-mentioned in PEP 249 as an optional extension.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Cursor.numbersAsStrings">
-<tt class="descclassname">Cursor.</tt><tt class="descname">numbersAsStrings</tt><a class="headerlink" href="#Cursor.numbersAsStrings" title="Permalink to this definition">¶</a></dt>
-<dd><p>This integer attribute defines whether or not numbers should be returned as
-strings rather than integers or floating point numbers. This is useful to
-get around the fact that Oracle floating point numbers have considerably
-greater precision than C floating point numbers and not require a change to
-the SQL being executed.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this attribute.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Cursor.outputtypehandler">
-<tt class="descclassname">Cursor.</tt><tt class="descname">outputtypehandler</tt><a class="headerlink" href="#Cursor.outputtypehandler" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute specifies a method called for each value that is
-to be fetched from this cursor. The method signature is
-handler(cursor, name, defaultType, length, precision, scale) and the return
-value is expected to be a variable object or None in which case a default
-variable object will be created. If this attribute is None, the value of
-the attribute with the same name on the connection is used instead.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.parse">
-<tt class="descclassname">Cursor.</tt><tt class="descname">parse</tt><big>(</big><em>statement</em><big>)</big><a class="headerlink" href="#Cursor.parse" title="Permalink to this definition">¶</a></dt>
-<dd><p>This can be used to parse a statement without actually executing it (this
-step is done automatically by Oracle when a statement is executed).</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this method.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.prepare">
-<tt class="descclassname">Cursor.</tt><tt class="descname">prepare</tt><big>(</big><em>statement</em><span class="optional">[</span>, <em>tag</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Cursor.prepare" title="Permalink to this definition">¶</a></dt>
-<dd><p>This can be used before a call to execute() to define the statement that
-will be executed. When this is done, the prepare phase will not be performed
-when the call to execute() is made with None or the same string object as
-the statement.  If specified (Oracle 9i and higher) the statement will be
-returned to the statement cache with the given tag. See the Oracle
-documentation for more information about the statement cache.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this method.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Cursor.rowcount">
-<tt class="descclassname">Cursor.</tt><tt class="descname">rowcount</tt><a class="headerlink" href="#Cursor.rowcount" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute specifies the number of rows that have currently
-been fetched from the cursor (for select statements) or that have been
-affected by the operation (for insert, update and delete statements).</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Cursor.rowfactory">
-<tt class="descclassname">Cursor.</tt><tt class="descname">rowfactory</tt><a class="headerlink" href="#Cursor.rowfactory" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute specifies a method to call for each row that is
-retrieved from the database. Ordinarily a tuple is returned for each row but
-if this attribute is set, the method is called with the argument tuple that
-would normally be returned and the result of the method is returned instead.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this attribute.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.setinputsizes">
-<tt class="descclassname">Cursor.</tt><tt class="descname">setinputsizes</tt><big>(</big><em>*args</em>, <em>**keywordArgs</em><big>)</big><a class="headerlink" href="#Cursor.setinputsizes" title="Permalink to this definition">¶</a></dt>
-<dd><p>This can be used before a call to execute(), callfunc() or callproc() to
-predefine memory areas for the operation&#8217;s parameters. Each parameter should
-be a type object corresponding to the input that will be used or it should
-be an integer specifying the maximum length of a string parameter. Use
-keyword arguments when binding by name and positional arguments when binding
-by position. The singleton None can be used as a parameter when using
-positional arguments to indicate that no space should be reserved for that
-position.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">If you plan to use callfunc() then be aware that the first argument in
-the list refers to the return value of the function.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.setoutputsize">
-<tt class="descclassname">Cursor.</tt><tt class="descname">setoutputsize</tt><big>(</big><em>size</em><span class="optional">[</span>, <em>column</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Cursor.setoutputsize" title="Permalink to this definition">¶</a></dt>
-<dd><p>This can be used before a call to execute() to predefine memory areas for
-the long columns that will be fetched. The column is specified as an index
-into the result sequence. Not specifying the column will set the default
-size for all large columns in the cursor.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Cursor.statement">
-<tt class="descclassname">Cursor.</tt><tt class="descname">statement</tt><a class="headerlink" href="#Cursor.statement" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute provides the string object that was previously
-prepared with prepare() or executed with execute().</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this attribute.</p>
-</div>
-</dd></dl>
-
-<dl class="method">
-<dt id="Cursor.var">
-<tt class="descclassname">Cursor.</tt><tt class="descname">var</tt><big>(</big><em>dataType</em><span class="optional">[</span>, <em>size</em>, <em>arraysize</em>, <em>inconverter</em>, <em>outconverter</em>, <em>typename</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Cursor.var" title="Permalink to this definition">¶</a></dt>
-<dd><p>Create a variable associated with the cursor of the given type and
-characteristics and return a variable object (<a class="reference internal" href="variable.html#varobj"><em>Variable Objects</em></a>). If the size is
-not specified and the type is a string or binary, 4000 bytes (maximum
-allowable by Oracle) is allocated; if the size is not specified and the type
-is a long string or long binary, 128KB is allocated. If the arraysize is not
-specified, the bind array size (usually 1) is used. The inconverter and
-outconverter specify methods used for converting values to/from the
-database. More information can be found in the section on variable objects.</p>
-<p>To create an empty SQL object variable, specify the typename. Additional
-support for editing the attributes of this object is not yet available but
-will be forthcoming in a future release.</p>
-<p>This method was designed for use with PL/SQL in/out variables where the
-length or type cannot be determined automatically from the Python object
-passed in or for use in input and output type handlers defined on cursors
-or connections.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this method.</p>
-</div>
-</dd></dl>
-
-</div>
-
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-  <h4>Previous topic</h4>
-  <p class="topless"><a href="connection.html"
-                        title="previous chapter">Connection Object</a></p>
-  <h4>Next topic</h4>
-  <p class="topless"><a href="variable.html"
-                        title="next chapter">Variable Objects</a></p>
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="variable.html" title="Variable Objects"
-             >next</a> |</li>
-        <li class="right" >
-          <a href="connection.html" title="Connection Object"
-             >previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Anthony Tuininga.
-      Last updated on Jul 02, 2012.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

+ 0 - 1157
desktop/core/ext-py/cx_Oracle-5.1.2/html/genindex.html

@@ -1,1157 +0,0 @@
-
-
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Index &mdash; cx_Oracle 5.1.2 documentation</title>
-    
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '',
-        VERSION:     '5.1.2',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  false
-      };
-    </script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="#" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-
-<h1 id="index">Index</h1>
-
-<div class="genindex-jumpbox">
- <a href="#_"><strong>_</strong></a>
- | <a href="#A"><strong>A</strong></a>
- | <a href="#B"><strong>B</strong></a>
- | <a href="#C"><strong>C</strong></a>
- | <a href="#D"><strong>D</strong></a>
- | <a href="#E"><strong>E</strong></a>
- | <a href="#F"><strong>F</strong></a>
- | <a href="#G"><strong>G</strong></a>
- | <a href="#H"><strong>H</strong></a>
- | <a href="#I"><strong>I</strong></a>
- | <a href="#L"><strong>L</strong></a>
- | <a href="#M"><strong>M</strong></a>
- | <a href="#N"><strong>N</strong></a>
- | <a href="#O"><strong>O</strong></a>
- | <a href="#P"><strong>P</strong></a>
- | <a href="#R"><strong>R</strong></a>
- | <a href="#S"><strong>S</strong></a>
- | <a href="#T"><strong>T</strong></a>
- | <a href="#U"><strong>U</strong></a>
- | <a href="#V"><strong>V</strong></a>
- | <a href="#W"><strong>W</strong></a>
- 
-</div>
-<h2 id="_">_</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="connection.html#Connection.__enter__">__enter__() (Connection method)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.__exit__">__exit__() (Connection method)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="cursor.html#Cursor.__iter__">__iter__() (Cursor method)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="A">A</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="session_pool.html#SessionPool.acquire">acquire() (SessionPool method)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.action">action (Connection attribute)</a>
-  </dt>
-
-      
-  <dt><a href="variable.html#Variable.allocelems">allocelems (Variable attribute)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.apilevel">apilevel (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.arraysize">arraysize (Cursor attribute)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="cursor.html#Cursor.arrayvar">arrayvar() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.ATTR_PURITY_DEFAULT">ATTR_PURITY_DEFAULT (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.ATTR_PURITY_NEW">ATTR_PURITY_NEW (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.ATTR_PURITY_SELF">ATTR_PURITY_SELF (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.autocommit">autocommit (Connection attribute)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="B">B</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="connection.html#Connection.begin">begin() (Connection method)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.BFILE">BFILE (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.BINARY">BINARY (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.Binary">Binary() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.bindarraysize">bindarraysize (Cursor attribute)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.bindnames">bindnames() (Cursor method)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="cursor.html#Cursor.bindvars">bindvars (Cursor attribute)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.BLOB">BLOB (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="variable.html#Variable.bufferSize">bufferSize (Variable attribute)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.buildtime">buildtime (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="session_pool.html#SessionPool.busy">busy (SessionPool attribute)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="C">C</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="subscription.html#Subscription.callback">callback (Subscription attribute)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.callfunc">callfunc() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.callproc">callproc() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.cancel">cancel() (Connection method)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.changepassword">changepassword() (Connection method)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.client_identifier">client_identifier (Connection attribute)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.clientinfo">clientinfo (Connection attribute)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.clientversion">clientversion() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.CLOB">CLOB (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.close">close() (Connection method)</a>
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="cursor.html#Cursor.close">(Cursor method)</a>
-  </dt>
-
-        
-  <dt><a href="lob.html#LOB.close">(LOB method)</a>
-  </dt>
-
-      </dl></dd>
-      
-  <dt><a href="module.html#cx_Oracle._Error.code">code (cx_Oracle._Error attribute)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.commit">commit() (Connection method)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.connect">connect() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="subscription.html#Subscription.connection">connection (Subscription attribute)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.connection">connection() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.Connection">Connection() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle._Error.context">context (cx_Oracle._Error attribute)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.current_schema">current_schema (Connection attribute)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.CURSOR">CURSOR (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.cursor">cursor() (Connection method)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.Cursor">Cursor() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.description">Cursor.description (built-in variable)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#module-cx_Oracle">cx_Oracle (module)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="D">D</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.DatabaseError">DatabaseError</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.DataError">DataError</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.Date">Date() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.DateFromTicks">DateFromTicks() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.DATETIME">DATETIME (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="subscription.html#Message.dbname">dbname (Message attribute)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.DBSHUTDOWN_ABORT">DBSHUTDOWN_ABORT (in module cx_Oracle)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.DBSHUTDOWN_FINAL">DBSHUTDOWN_FINAL (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.DBSHUTDOWN_IMMEDIATE">DBSHUTDOWN_IMMEDIATE (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.DBSHUTDOWN_TRANSACTIONAL">DBSHUTDOWN_TRANSACTIONAL (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.DBSHUTDOWN_TRANSACTIONAL_LOCAL">DBSHUTDOWN_TRANSACTIONAL_LOCAL (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="session_pool.html#SessionPool.drop">drop() (SessionPool method)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.dsn">dsn (Connection attribute)</a>
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="session_pool.html#SessionPool.dsn">(SessionPool attribute)</a>
-  </dt>
-
-      </dl></dd>
-  </dl></td>
-</tr></table>
-
-<h2 id="E">E</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="connection.html#Connection.encoding">encoding (Connection attribute)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.Error">Error</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.EVENT_DEREG">EVENT_DEREG (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.EVENT_NONE">EVENT_NONE (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.EVENT_OBJCHANGE">EVENT_OBJCHANGE (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.EVENT_SHUTDOWN">EVENT_SHUTDOWN (in module cx_Oracle)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.EVENT_SHUTDOWN_ANY">EVENT_SHUTDOWN_ANY (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.EVENT_STARTUP">EVENT_STARTUP (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.execute">execute() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.executemany">executemany() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.executemanyprepared">executemanyprepared() (Cursor method)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="F">F</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="cursor.html#Cursor.fetchall">fetchall() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.fetchmany">fetchmany() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.fetchone">fetchone() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.fetchraw">fetchraw() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.fetchvars">fetchvars (Cursor attribute)</a>
-  </dt>
-
-      
-  <dt><a href="lob.html#LOB.fileexists">fileexists() (LOB method)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.FIXED_CHAR">FIXED_CHAR (in module cx_Oracle)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.FIXED_UNICODE">FIXED_UNICODE (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.FNCODE_BINDBYNAME">FNCODE_BINDBYNAME (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.FNCODE_BINDBYPOS">FNCODE_BINDBYPOS (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.FNCODE_DEFINEBYPOS">FNCODE_DEFINEBYPOS (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.FNCODE_STMTEXECUTE">FNCODE_STMTEXECUTE (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.FNCODE_STMTFETCH">FNCODE_STMTFETCH (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.FNCODE_STMTPREPARE">FNCODE_STMTPREPARE (in module cx_Oracle)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="G">G</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="lob.html#LOB.getchunksize">getchunksize() (LOB method)</a>
-  </dt>
-
-      
-  <dt><a href="lob.html#LOB.getfilename">getfilename() (LOB method)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="variable.html#Variable.getvalue">getvalue() (Variable method)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="H">H</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="session_pool.html#SessionPool.homogeneous">homogeneous (SessionPool attribute)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="I">I</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="variable.html#Variable.inconverter">inconverter (Variable attribute)</a>
-  </dt>
-
-      
-  <dt><a href="session_pool.html#SessionPool.increment">increment (SessionPool attribute)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.inputtypehandler">inputtypehandler (Connection attribute)</a>
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="cursor.html#Cursor.inputtypehandler">(Cursor attribute)</a>
-  </dt>
-
-      </dl></dd>
-      
-  <dt><a href="module.html#cx_Oracle.IntegrityError">IntegrityError</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.InterfaceError">InterfaceError</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.InternalError">InternalError</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.INTERVAL">INTERVAL (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="lob.html#LOB.isopen">isopen() (LOB method)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="L">L</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.LOB">LOB (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.LONG_BINARY">LONG_BINARY (in module cx_Oracle)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.LONG_STRING">LONG_STRING (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.LONG_UNICODE">LONG_UNICODE (in module cx_Oracle)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="M">M</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.makedsn">makedsn() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="session_pool.html#SessionPool.max">max (SessionPool attribute)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.maxBytesPerCharacter">maxBytesPerCharacter (Connection attribute)</a>
-  </dt>
-
-      
-  <dt><a href="variable.html#Variable.maxlength">maxlength (Variable attribute)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle._Error.message">message (cx_Oracle._Error attribute)</a>
-  </dt>
-
-      
-  <dt><a href="session_pool.html#SessionPool.min">min (SessionPool attribute)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.module">module (Connection attribute)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="N">N</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="subscription.html#MessageTable.name">name (MessageTable attribute)</a>
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="session_pool.html#SessionPool.name">(SessionPool attribute)</a>
-  </dt>
-
-      </dl></dd>
-      
-  <dt><a href="subscription.html#Subscription.namespace">namespace (Subscription attribute)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.NATIVE_FLOAT">NATIVE_FLOAT (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.NCLOB">NCLOB (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.nencoding">nencoding (Connection attribute)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="cursor.html#Cursor.next">next() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.NotSupportedError">NotSupportedError</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.NUMBER">NUMBER (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.numbersAsStrings">numbersAsStrings (Cursor attribute)</a>
-  </dt>
-
-      
-  <dt><a href="variable.html#Variable.numElements">numElements (Variable attribute)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="O">O</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.OBJECT">OBJECT (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle._Error.offset">offset (cx_Oracle._Error attribute)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.OPCODE_ALLOPS">OPCODE_ALLOPS (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.OPCODE_ALLROWS">OPCODE_ALLROWS (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.OPCODE_ALTER">OPCODE_ALTER (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.OPCODE_DELETE">OPCODE_DELETE (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.OPCODE_DROP">OPCODE_DROP (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.OPCODE_INSERT">OPCODE_INSERT (in module cx_Oracle)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.OPCODE_UPDATE">OPCODE_UPDATE (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="lob.html#LOB.open">open() (LOB method)</a>
-  </dt>
-
-      
-  <dt><a href="session_pool.html#SessionPool.opened">opened (SessionPool attribute)</a>
-  </dt>
-
-      
-  <dt><a href="subscription.html#MessageRow.operation">operation (MessageRow attribute)</a>
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="subscription.html#MessageTable.operation">(MessageTable attribute)</a>
-  </dt>
-
-      </dl></dd>
-      
-  <dt><a href="module.html#cx_Oracle.OperationalError">OperationalError</a>
-  </dt>
-
-      
-  <dt><a href="subscription.html#Subscription.operations">operations (Subscription attribute)</a>
-  </dt>
-
-      
-  <dt><a href="variable.html#Variable.outconverter">outconverter (Variable attribute)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.outputtypehandler">outputtypehandler (Connection attribute)</a>
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="cursor.html#Cursor.outputtypehandler">(Cursor attribute)</a>
-  </dt>
-
-      </dl></dd>
-  </dl></td>
-</tr></table>
-
-<h2 id="P">P</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.paramstyle">paramstyle (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.parse">parse() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.password">password (Connection attribute)</a>
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="session_pool.html#SessionPool.password">(SessionPool attribute)</a>
-  </dt>
-
-      </dl></dd>
-      
-  <dt><a href="connection.html#Connection.ping">ping() (Connection method)</a>
-  </dt>
-
-      
-  <dt><a href="subscription.html#Subscription.port">port (Subscription attribute)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.PRELIM_AUTH">PRELIM_AUTH (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.prepare">prepare() (Connection method)</a>
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="cursor.html#Cursor.prepare">(Cursor method)</a>
-  </dt>
-
-      </dl></dd>
-      
-  <dt><a href="module.html#cx_Oracle.ProgrammingError">ProgrammingError</a>
-  </dt>
-
-      
-  <dt><a href="subscription.html#Subscription.protocol">protocol (Subscription attribute)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="R">R</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="lob.html#LOB.read">read() (LOB method)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.register">register() (Connection method)</a>
-  </dt>
-
-      
-  <dt><a href="subscription.html#Subscription.registerquery">registerquery() (Subscription method)</a>
-  </dt>
-
-      
-  <dt><a href="session_pool.html#SessionPool.release">release() (SessionPool method)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.rollback">rollback() (Connection method)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.rowcount">rowcount (Cursor attribute)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="cursor.html#Cursor.rowfactory">rowfactory (Cursor attribute)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.ROWID">ROWID (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="subscription.html#MessageRow.rowid">rowid (MessageRow attribute)</a>
-  </dt>
-
-      
-  <dt><a href="subscription.html#Subscription.rowids">rowids (Subscription attribute)</a>
-  </dt>
-
-      
-  <dt><a href="subscription.html#MessageTable.rows">rows (MessageTable attribute)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="S">S</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.SessionPool">SessionPool() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="lob.html#LOB.setfilename">setfilename() (LOB method)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.setinputsizes">setinputsizes() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="cursor.html#Cursor.setoutputsize">setoutputsize() (Cursor method)</a>
-  </dt>
-
-      
-  <dt><a href="variable.html#Variable.setvalue">setvalue() (Variable method)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.shutdown">shutdown() (Connection method)</a>
-  </dt>
-
-      
-  <dt><a href="variable.html#Variable.size">size (Variable attribute)</a>
-  </dt>
-
-      
-  <dt><a href="lob.html#LOB.size">size() (LOB method)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.SPOOL_ATTRVAL_FORCEGET">SPOOL_ATTRVAL_FORCEGET (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.SPOOL_ATTRVAL_NOWAIT">SPOOL_ATTRVAL_NOWAIT (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.SPOOL_ATTRVAL_WAIT">SPOOL_ATTRVAL_WAIT (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.startup">startup() (Connection method)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="cursor.html#Cursor.statement">statement (Cursor attribute)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.stmtcachesize">stmtcachesize (Connection attribute)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.STRING">STRING (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.SUBSCR_NAMESPACE_DBCHANGE">SUBSCR_NAMESPACE_DBCHANGE (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.SUBSCR_PROTO_HTTP">SUBSCR_PROTO_HTTP (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.SUBSCR_PROTO_MAIL">SUBSCR_PROTO_MAIL (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.SUBSCR_PROTO_OCI">SUBSCR_PROTO_OCI (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.SUBSCR_PROTO_SERVER">SUBSCR_PROTO_SERVER (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.subscribe">subscribe() (Connection method)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.SYSDBA">SYSDBA (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.SYSOPER">SYSOPER (in module cx_Oracle)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="T">T</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="subscription.html#Message.tables">tables (Message attribute)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.threadsafety">threadsafety (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.Time">Time() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.TimeFromTicks">TimeFromTicks() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="session_pool.html#SessionPool.timeout">timeout (SessionPool attribute)</a>
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="subscription.html#Subscription.timeout">(Subscription attribute)</a>
-  </dt>
-
-      </dl></dd>
-      
-  <dt><a href="module.html#cx_Oracle.TIMESTAMP">TIMESTAMP (in module cx_Oracle)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.Timestamp">Timestamp() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.TimestampFromTicks">TimestampFromTicks() (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.tnsentry">tnsentry (Connection attribute)</a>
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="session_pool.html#SessionPool.tnsentry">(SessionPool attribute)</a>
-  </dt>
-
-      </dl></dd>
-      
-  <dt><a href="lob.html#LOB.trim">trim() (LOB method)</a>
-  </dt>
-
-      
-  <dt><a href="subscription.html#Message.type">type (Message attribute)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-<h2 id="U">U</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.UCBTYPE_ENTRY">UCBTYPE_ENTRY (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.UCBTYPE_EXIT">UCBTYPE_EXIT (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="module.html#cx_Oracle.UCBTYPE_REPLACE">UCBTYPE_REPLACE (in module cx_Oracle)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.UNICODE">UNICODE (in module cx_Oracle)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.unregister">unregister() (Connection method)</a>
-  </dt>
-
-      
-  <dt><a href="connection.html#Connection.username">username (Connection attribute)</a>
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="session_pool.html#SessionPool.username">(SessionPool attribute)</a>
-  </dt>
-
-      </dl></dd>
-  </dl></td>
-</tr></table>
-
-<h2 id="V">V</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="cursor.html#Cursor.var">var() (Cursor method)</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="connection.html#Connection.version">version (Connection attribute)</a>
-  </dt>
-
-      <dd><dl>
-        
-  <dt><a href="module.html#cx_Oracle.version">(in module cx_Oracle)</a>
-  </dt>
-
-      </dl></dd>
-  </dl></td>
-</tr></table>
-
-<h2 id="W">W</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="module.html#cx_Oracle.Warning">Warning</a>
-  </dt>
-
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
-      
-  <dt><a href="lob.html#LOB.write">write() (LOB method)</a>
-  </dt>
-
-  </dl></td>
-</tr></table>
-
-
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-
-   
-
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="#" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Anthony Tuininga.
-      Last updated on Jul 02, 2012.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

+ 0 - 162
desktop/core/ext-py/cx_Oracle-5.1.2/html/index.html

@@ -1,162 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>cx_Oracle &mdash; cx_Oracle 5.1.2 documentation</title>
-    
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '',
-        VERSION:     '5.1.2',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  false
-      };
-    </script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="cx_Oracle 5.1.2 documentation" href="#" />
-    <link rel="next" title="Module Interface" href="module.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="module.html" title="Module Interface"
-             accesskey="N">next</a> |</li>
-        <li><a href="#">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <div class="section" id="cx-oracle">
-<h1>cx_Oracle<a class="headerlink" href="#cx-oracle" title="Permalink to this headline">¶</a></h1>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Author:</th><td class="field-body">Anthony Tuininga</td>
-</tr>
-<tr class="field-even field"><th class="field-name">Date:</th><td class="field-body">July 02, 2012</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="front-matter">
-<span id="front"></span><h1>Front Matter<a class="headerlink" href="#front-matter" title="Permalink to this headline">¶</a></h1>
-<p>Copyright © 2007-2012 Anthony Tuininga. All rights reserved.</p>
-<p>Copyright © 2001-2007 Computronix. All rights reserved.</p>
-<p>See <a class="reference internal" href="license.html#license"><em>License</em></a> for complete license and permissions information.</p>
-<div class="topic">
-<p class="topic-title first">Abstract</p>
-<p>cx_Oracle is a Python extension module that allows access to Oracle and
-conforms to the Python database API 2.0 specifications with a few
-exceptions. See <a class="reference external" href="http://www.python.org/topics/database/DatabaseAPI-2.0.html">http://www.python.org/topics/database/DatabaseAPI-2.0.html</a>
-for more information on the Python database API specification.</p>
-</div>
-<p>Contents:</p>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="module.html">Module Interface</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="module.html#constants">Constants</a></li>
-<li class="toctree-l2"><a class="reference internal" href="module.html#types">Types</a></li>
-<li class="toctree-l2"><a class="reference internal" href="module.html#exceptions">Exceptions</a></li>
-<li class="toctree-l2"><a class="reference internal" href="module.html#exception-handling">Exception handling</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="connection.html">Connection Object</a></li>
-<li class="toctree-l1"><a class="reference internal" href="cursor.html">Cursor Object</a></li>
-<li class="toctree-l1"><a class="reference internal" href="variable.html">Variable Objects</a></li>
-<li class="toctree-l1"><a class="reference internal" href="session_pool.html">SessionPool Object</a></li>
-<li class="toctree-l1"><a class="reference internal" href="subscription.html">Subscription Object</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="subscription.html#message-objects">Message Objects</a></li>
-<li class="toctree-l2"><a class="reference internal" href="subscription.html#message-table-objects">Message Table Objects</a></li>
-<li class="toctree-l2"><a class="reference internal" href="subscription.html#message-row-objects">Message Row Objects</a></li>
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="lob.html">LOB Objects</a></li>
-<li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
-</ul>
-</div>
-<ul class="simple">
-<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
-</ul>
-</div>
-
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-  <h3><a href="#">Table Of Contents</a></h3>
-  <ul>
-<li><a class="reference internal" href="#">cx_Oracle</a></li>
-<li><a class="reference internal" href="#front-matter">Front Matter</a><ul>
-</ul>
-</li>
-</ul>
-
-  <h4>Next topic</h4>
-  <p class="topless"><a href="module.html"
-                        title="next chapter">Module Interface</a></p>
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="module.html" title="Module Interface"
-             >next</a> |</li>
-        <li><a href="#">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Anthony Tuininga.
-      Last updated on Jul 02, 2012.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

+ 0 - 131
desktop/core/ext-py/cx_Oracle-5.1.2/html/license.html

@@ -1,131 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>License &mdash; cx_Oracle 5.1.2 documentation</title>
-    
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '',
-        VERSION:     '5.1.2',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  false
-      };
-    </script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
-    <link rel="prev" title="LOB Objects" href="lob.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="lob.html" title="LOB Objects"
-             accesskey="P">previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <div class="section" id="license">
-<span id="id1"></span><h1>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h1>
-<p class="centered">
-<strong><strong>LICENSE AGREEMENT FOR CX_ORACLE</strong></strong></p><p>Copyright © 2007-2012, Anthony Tuininga. All rights reserved.</p>
-<p>Copyright © 2001-2007, Computronix (Canada) Ltd., Edmonton, Alberta,
-Canada. All rights reserved.</p>
-<p>Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:</p>
-<ol class="arabic simple">
-<li>Redistributions of source code must retain the above copyright notice, this
-list of conditions, and the disclaimer that follows.</li>
-<li>Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions, and the following disclaimer in the documentation
-and/or other materials provided with the distribution.</li>
-<li>Neither the names of the copyright holders nor the names of any contributors
-may be used to endorse or promote products derived from this software without
-specific prior written permission.</li>
-</ol>
-<p>DISCLAIMER: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-*AS IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
-<p>Computronix ® is a registered trademark of Computronix (Canada) Ltd.</p>
-</div>
-
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-  <h4>Previous topic</h4>
-  <p class="topless"><a href="lob.html"
-                        title="previous chapter">LOB Objects</a></p>
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="lob.html" title="LOB Objects"
-             >previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Anthony Tuininga.
-      Last updated on Jul 02, 2012.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

+ 0 - 202
desktop/core/ext-py/cx_Oracle-5.1.2/html/lob.html

@@ -1,202 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>LOB Objects &mdash; cx_Oracle 5.1.2 documentation</title>
-    
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '',
-        VERSION:     '5.1.2',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  false
-      };
-    </script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
-    <link rel="next" title="License" href="license.html" />
-    <link rel="prev" title="Subscription Object" href="subscription.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="license.html" title="License"
-             accesskey="N">next</a> |</li>
-        <li class="right" >
-          <a href="subscription.html" title="Subscription Object"
-             accesskey="P">previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <div class="section" id="lob-objects">
-<span id="lobobj"></span><h1>LOB Objects<a class="headerlink" href="#lob-objects" title="Permalink to this headline">¶</a></h1>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This object is an extension the DB API. It is returned whenever Oracle
-<tt class="xref py py-data docutils literal"><span class="pre">CLOB</span></tt>, <tt class="xref py py-data docutils literal"><span class="pre">BLOB</span></tt> and <tt class="xref py py-data docutils literal"><span class="pre">BFILE</span></tt> columns are fetched.</p>
-</div>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">Internally, Oracle uses LOB locators which are allocated based on the
-cursor array size. Thus, it is important that the data in the LOB object be
-manipulated before another internal fetch takes place. The safest way to do
-this is to use the cursor as an iterator. In particular, do not use the
-fetchall() method. The exception &#8220;LOB variable no longer valid after
-subsequent fetch&#8221; will be raised if an attempt to access a LOB variable
-after a subsequent fetch is detected.</p>
-</div>
-<dl class="method">
-<dt id="LOB.close">
-<tt class="descclassname">LOB.</tt><tt class="descname">close</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.close" title="Permalink to this definition">¶</a></dt>
-<dd><p>Close the <tt class="xref py py-data docutils literal"><span class="pre">LOB</span></tt>. Call this when writing is completed so that the
-indexes associated with the LOB can be updated.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="LOB.fileexists">
-<tt class="descclassname">LOB.</tt><tt class="descname">fileexists</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.fileexists" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return a boolean indicating if the file referenced by the <tt class="xref py py-data docutils literal"><span class="pre">BFILE</span></tt>
-type LOB exists.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="LOB.getchunksize">
-<tt class="descclassname">LOB.</tt><tt class="descname">getchunksize</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.getchunksize" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the chunk size for the internal LOB. Reading and writing to the LOB
-in chunks of multiples of this size will improve performance.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="LOB.getfilename">
-<tt class="descclassname">LOB.</tt><tt class="descname">getfilename</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.getfilename" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return a two-tuple consisting of the directory alias and file name for a
-<tt class="xref py py-data docutils literal"><span class="pre">BFILE</span></tt> type LOB.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="LOB.isopen">
-<tt class="descclassname">LOB.</tt><tt class="descname">isopen</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.isopen" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return a boolean indicating if the LOB is opened.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="LOB.open">
-<tt class="descclassname">LOB.</tt><tt class="descname">open</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.open" title="Permalink to this definition">¶</a></dt>
-<dd><p>Open the LOB for writing. This will improve performance when writing to a
-LOB in chunks and there are functional or extensible indexes associated with
-the LOB.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="LOB.read">
-<tt class="descclassname">LOB.</tt><tt class="descname">read</tt><big>(</big><span class="optional">[</span><em>offset=1</em><span class="optional">[</span>, <em>amount</em><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#LOB.read" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return a portion (or all) of the data in the LOB object.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="LOB.setfilename">
-<tt class="descclassname">LOB.</tt><tt class="descname">setfilename</tt><big>(</big><em>dirAlias</em>, <em>name</em><big>)</big><a class="headerlink" href="#LOB.setfilename" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set the directory alias and name of the <tt class="xref py py-data docutils literal"><span class="pre">BFILE</span></tt> type LOB.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="LOB.size">
-<tt class="descclassname">LOB.</tt><tt class="descname">size</tt><big>(</big><big>)</big><a class="headerlink" href="#LOB.size" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns the size of the data in the LOB object.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="LOB.trim">
-<tt class="descclassname">LOB.</tt><tt class="descname">trim</tt><big>(</big><span class="optional">[</span><em>newSize=0</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#LOB.trim" title="Permalink to this definition">¶</a></dt>
-<dd><p>Trim the LOB to the new size.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="LOB.write">
-<tt class="descclassname">LOB.</tt><tt class="descname">write</tt><big>(</big><em>data</em><span class="optional">[</span>, <em>offset=1</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#LOB.write" title="Permalink to this definition">¶</a></dt>
-<dd><p>Write the data to the LOB object at the given offset. Note that if you want
-to make the LOB value smaller, you must use the trim() function.</p>
-</dd></dl>
-
-</div>
-
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-  <h4>Previous topic</h4>
-  <p class="topless"><a href="subscription.html"
-                        title="previous chapter">Subscription Object</a></p>
-  <h4>Next topic</h4>
-  <p class="topless"><a href="license.html"
-                        title="next chapter">License</a></p>
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="license.html" title="License"
-             >next</a> |</li>
-        <li class="right" >
-          <a href="subscription.html" title="Subscription Object"
-             >previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Anthony Tuininga.
-      Last updated on Jul 02, 2012.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

+ 0 - 1044
desktop/core/ext-py/cx_Oracle-5.1.2/html/module.html

@@ -1,1044 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Module Interface &mdash; cx_Oracle 5.1.2 documentation</title>
-    
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '',
-        VERSION:     '5.1.2',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  false
-      };
-    </script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
-    <link rel="next" title="Connection Object" href="connection.html" />
-    <link rel="prev" title="cx_Oracle" href="index.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="connection.html" title="Connection Object"
-             accesskey="N">next</a> |</li>
-        <li class="right" >
-          <a href="index.html" title="cx_Oracle"
-             accesskey="P">previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <span class="target" id="module-cx_Oracle"></span><div class="section" id="module-interface">
-<span id="module"></span><h1>Module Interface<a class="headerlink" href="#module-interface" title="Permalink to this headline">¶</a></h1>
-<dl class="function">
-<dt id="cx_Oracle.Binary">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">Binary</tt><big>(</big><em>string</em><big>)</big><a class="headerlink" href="#cx_Oracle.Binary" title="Permalink to this definition">¶</a></dt>
-<dd><p>Construct an object holding a binary (long) string value.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="cx_Oracle.clientversion">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">clientversion</tt><big>(</big><big>)</big><a class="headerlink" href="#cx_Oracle.clientversion" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the version of the client library being used as a 5-tuple. The five
-values are the major version, minor version, update number, patch number and
-port update number.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition and is only
-available in Oracle 10g Release 2 and higher.</p>
-</div>
-</dd></dl>
-
-<dl class="function">
-<dt id="cx_Oracle.Connection">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">Connection</tt><big>(</big><span class="optional">[</span><em>user</em>, <em>password</em>, <em>dsn</em>, <em>mode</em>, <em>handle</em>, <em>pool</em>, <em>threaded</em>, <em>twophase</em>, <em>events</em>, <em>cclass</em>, <em>purity</em>, <em>newpassword</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#cx_Oracle.Connection" title="Permalink to this definition">¶</a></dt>
-<dt id="cx_Oracle.connect">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">connect</tt><big>(</big><span class="optional">[</span><em>user</em>, <em>password</em>, <em>dsn</em>, <em>mode</em>, <em>handle</em>, <em>pool</em>, <em>threaded</em>, <em>twophase</em>, <em>events</em>, <em>cclass</em>, <em>purity</em>, <em>newpassword</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#cx_Oracle.connect" title="Permalink to this definition">¶</a></dt>
-<dd><p>Constructor for creating a connection to the database. Return a Connection
-object (<a class="reference internal" href="connection.html#connobj"><em>Connection Object</em></a>). All arguments are optional and can be specified as
-keyword parameters.</p>
-<p>The dsn (data source name) is the TNS entry (from the Oracle names server or
-tnsnames.ora file) or is a string like the one returned from makedsn(). If
-only one parameter is passed, a connect string is assumed which is to be of
-the format <tt class="docutils literal"><span class="pre">user/password&#64;dsn</span></tt>, the same format accepted by Oracle
-applications such as SQL*Plus.</p>
-<p>If the mode is specified, it must be one of <a class="reference internal" href="#cx_Oracle.SYSDBA" title="cx_Oracle.SYSDBA"><tt class="xref py py-data docutils literal"><span class="pre">SYSDBA</span></tt></a> or
-<a class="reference internal" href="#cx_Oracle.SYSOPER" title="cx_Oracle.SYSOPER"><tt class="xref py py-data docutils literal"><span class="pre">SYSOPER</span></tt></a> which are defined at the module level; otherwise it defaults
-to the normal mode of connecting.</p>
-<p>If the handle is specified, it must be of type OCISvcCtx* and is only of
-use when embedding Python in an application (like PowerBuilder) which has
-already made the connection.</p>
-<p>The pool argument is expected to be a session pool object (<a class="reference internal" href="session_pool.html#sesspool"><em>SessionPool Object</em></a>)
-and the use of this argument is the equivalent of calling pool.acquire().</p>
-<p>The threaded argument is expected to be a boolean expression which
-indicates whether or not Oracle should use the mode OCI_THREADED to wrap
-accesses to connections with a mutex. Doing so in single threaded
-applications imposes a performance penalty of about 10-15% which is why the
-default is False.</p>
-<p>The twophase argument is expected to be a boolean expression which
-indicates whether or not the attributes should be set on the connection
-object to allow for two phase commit. The default for this value is also
-False because of bugs in Oracle prior to Oracle 10g.</p>
-<p>The events argument is expected to be a boolean expression which indicates
-whether or not to initialize Oracle in events mode (only available in Oracle
-11g and higher).</p>
-<p>The cclass argument is expected to be a string and defines the connection
-class for database resident connection pooling (DRCP) in Oracle 11g and
-higher.</p>
-<p>The purity argument is expected to be one of <a class="reference internal" href="#cx_Oracle.ATTR_PURITY_NEW" title="cx_Oracle.ATTR_PURITY_NEW"><tt class="xref py py-data docutils literal"><span class="pre">ATTR_PURITY_NEW</span></tt></a> (the
-session must be new without any prior session state),
-<a class="reference internal" href="#cx_Oracle.ATTR_PURITY_SELF" title="cx_Oracle.ATTR_PURITY_SELF"><tt class="xref py py-data docutils literal"><span class="pre">ATTR_PURITY_SELF</span></tt></a> (the session may have been used before) or
-<a class="reference internal" href="#cx_Oracle.ATTR_PURITY_DEFAULT" title="cx_Oracle.ATTR_PURITY_DEFAULT"><tt class="xref py py-data docutils literal"><span class="pre">ATTR_PURITY_DEFAULT</span></tt></a> (the default behavior which is defined by Oracle
-in its documentation). This argument is only relevant in Oracle 11g and
-higher.</p>
-<p>The newpassword argument is expected to be a string if specified and sets
-the password for the logon during the connection process.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="cx_Oracle.Cursor">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">Cursor</tt><big>(</big><em>connection</em><big>)</big><a class="headerlink" href="#cx_Oracle.Cursor" title="Permalink to this definition">¶</a></dt>
-<dd><p>Constructor for creating a cursor.  Return a new Cursor object
-(<a class="reference internal" href="cursor.html#cursorobj"><em>Cursor Object</em></a>) using the connection.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="function">
-<dt id="cx_Oracle.Date">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">Date</tt><big>(</big><em>year</em>, <em>month</em>, <em>day</em><big>)</big><a class="headerlink" href="#cx_Oracle.Date" title="Permalink to this definition">¶</a></dt>
-<dd><p>Construct an object holding a date value.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="cx_Oracle.DateFromTicks">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">DateFromTicks</tt><big>(</big><em>ticks</em><big>)</big><a class="headerlink" href="#cx_Oracle.DateFromTicks" title="Permalink to this definition">¶</a></dt>
-<dd><p>Construct an object holding a date value from the given ticks value (number
-of seconds since the epoch; see the documentation of the standard Python
-time module for details).</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="cx_Oracle.makedsn">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">makedsn</tt><big>(</big><em>host</em>, <em>port</em>, <em>sid</em><span class="optional">[</span>, <em>service_name</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#cx_Oracle.makedsn" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return a string suitable for use as the dsn for the connect() method. This
-string is identical to the strings that are defined by the Oracle names
-server or defined in the tnsnames.ora file. If you wish to use the service
-name instead of the sid, do not include a value for the parameter sid and
-use the keyword parameter service_name instead.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="function">
-<dt id="cx_Oracle.SessionPool">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">SessionPool</tt><big>(</big><em>user</em>, <em>password</em>, <em>database</em>, <em>min</em>, <em>max</em>, <em>increment</em><span class="optional">[</span>, <em>connectiontype</em>, <em>threaded</em>, <em>getmode=cx_Oracle.SPOOL_ATTRVAL_NOWAIT</em>, <em>homogeneous=True</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#cx_Oracle.SessionPool" title="Permalink to this definition">¶</a></dt>
-<dd><p>Create a session pool (see Oracle 9i documentation for more information) and
-return a session pool object (<a class="reference internal" href="session_pool.html#sesspool"><em>SessionPool Object</em></a>). This allows for very fast
-connections to the database and is of primary use in a server where the same
-connection is being made multiple times in rapid succession (a web server,
-for example). If the connection type is specified, all calls to acquire()
-will create connection objects of that type, rather than the base type
-defined at the module level. The threaded attribute is expected to be a
-boolean expression which indicates whether or not Oracle should use the mode
-OCI_THREADED to wrap accesses to connections with a mutex. Doing so in
-single threaded applications imposes a performance penalty of about 10-15%
-which is why the default is False.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This method is an extension to the DB API definition and is only
-available in Oracle 9i.</p>
-</div>
-</dd></dl>
-
-<dl class="function">
-<dt id="cx_Oracle.Time">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">Time</tt><big>(</big><em>hour</em>, <em>minute</em>, <em>second</em><big>)</big><a class="headerlink" href="#cx_Oracle.Time" title="Permalink to this definition">¶</a></dt>
-<dd><p>Construct an object holding a time value.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="cx_Oracle.TimeFromTicks">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">TimeFromTicks</tt><big>(</big><em>ticks</em><big>)</big><a class="headerlink" href="#cx_Oracle.TimeFromTicks" title="Permalink to this definition">¶</a></dt>
-<dd><p>Construct an object holding a time value from the given ticks value (number
-of seconds since the epoch; see the documentation of the standard Python
-time module for details).</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="cx_Oracle.Timestamp">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">Timestamp</tt><big>(</big><em>year</em>, <em>month</em>, <em>day</em>, <em>hour</em>, <em>minute</em>, <em>second</em><big>)</big><a class="headerlink" href="#cx_Oracle.Timestamp" title="Permalink to this definition">¶</a></dt>
-<dd><p>Construct an object holding a time stamp value.</p>
-</dd></dl>
-
-<dl class="function">
-<dt id="cx_Oracle.TimestampFromTicks">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">TimestampFromTicks</tt><big>(</big><em>ticks</em><big>)</big><a class="headerlink" href="#cx_Oracle.TimestampFromTicks" title="Permalink to this definition">¶</a></dt>
-<dd><p>Construct an object holding a time stamp value from the given ticks value
-(number of seconds since the epoch; see the documentation of the standard
-Python time module for details).</p>
-</dd></dl>
-
-<div class="section" id="constants">
-<span id="id1"></span><h2>Constants<a class="headerlink" href="#constants" title="Permalink to this headline">¶</a></h2>
-<div class="section" id="global">
-<h3>Global<a class="headerlink" href="#global" title="Permalink to this headline">¶</a></h3>
-<dl class="data">
-<dt id="cx_Oracle.apilevel">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">apilevel</tt><a class="headerlink" href="#cx_Oracle.apilevel" title="Permalink to this definition">¶</a></dt>
-<dd><p>String constant stating the supported DB API level. Currently &#8216;2.0&#8217;.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.buildtime">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">buildtime</tt><a class="headerlink" href="#cx_Oracle.buildtime" title="Permalink to this definition">¶</a></dt>
-<dd><p>String constant stating the time when the binary was built.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This constant is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.paramstyle">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">paramstyle</tt><a class="headerlink" href="#cx_Oracle.paramstyle" title="Permalink to this definition">¶</a></dt>
-<dd><p>String constant stating the type of parameter marker formatting expected by
-the interface. Currently &#8216;named&#8217; as in &#8216;where name = :name&#8217;.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.SYSDBA">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">SYSDBA</tt><a class="headerlink" href="#cx_Oracle.SYSDBA" title="Permalink to this definition">¶</a></dt>
-<dd><p>Value to be passed to the connect() method which indicates that SYSDBA
-access is to be acquired. See the Oracle documentation for more details.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This constant is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.SYSOPER">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">SYSOPER</tt><a class="headerlink" href="#cx_Oracle.SYSOPER" title="Permalink to this definition">¶</a></dt>
-<dd><p>Value to be passed to the connect() method which indicates that SYSOPER
-access is to be acquired. See the Oracle documentation for more details.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This constant is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.threadsafety">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">threadsafety</tt><a class="headerlink" href="#cx_Oracle.threadsafety" title="Permalink to this definition">¶</a></dt>
-<dd><p>Integer constant stating the level of thread safety that the interface
-supports.  Currently 2, which means that threads may share the module and
-connections, but not cursors. Sharing means that a thread may use a
-resource without wrapping it using a mutex semaphore to implement resource
-locking.</p>
-<p>Note that in order to make use of multiple threads in a program which
-intends to connect and disconnect in different threads, the threaded
-argument to the Connection constructor must be a true value. See the
-comments on the Connection constructor for more information (<a class="reference internal" href="#module"><em>Module Interface</em></a>).</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.version">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">version</tt><a class="headerlink" href="#cx_Oracle.version" title="Permalink to this definition">¶</a></dt>
-<dd><p>String constant stating the version of the module. Currently &#8216;5.1.2&#8216;.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-</div>
-<div class="section" id="database-callbacks">
-<h3>Database Callbacks<a class="headerlink" href="#database-callbacks" title="Permalink to this headline">¶</a></h3>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">These constants are extensions to the DB API definition.</p>
-</div>
-<dl class="data">
-<dt id="cx_Oracle.FNCODE_BINDBYNAME">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">FNCODE_BINDBYNAME</tt><a class="headerlink" href="#cx_Oracle.FNCODE_BINDBYNAME" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to register callbacks on the OCIBindByName() function
-of the OCI.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.FNCODE_BINDBYPOS">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">FNCODE_BINDBYPOS</tt><a class="headerlink" href="#cx_Oracle.FNCODE_BINDBYPOS" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to register callbacks on the OCIBindByPos() function
-of the OCI.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.FNCODE_DEFINEBYPOS">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">FNCODE_DEFINEBYPOS</tt><a class="headerlink" href="#cx_Oracle.FNCODE_DEFINEBYPOS" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to register callbacks on the OCIDefineByPos() function
-of the OCI.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.FNCODE_STMTEXECUTE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">FNCODE_STMTEXECUTE</tt><a class="headerlink" href="#cx_Oracle.FNCODE_STMTEXECUTE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to register callbacks on the OCIStmtExecute() function
-of the OCI.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.FNCODE_STMTFETCH">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">FNCODE_STMTFETCH</tt><a class="headerlink" href="#cx_Oracle.FNCODE_STMTFETCH" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to register callbacks on the OCIStmtFetch() function
-of the OCI.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.FNCODE_STMTPREPARE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">FNCODE_STMTPREPARE</tt><a class="headerlink" href="#cx_Oracle.FNCODE_STMTPREPARE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to register callbacks on the OCIStmtPrepare() function
-of the OCI.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.UCBTYPE_ENTRY">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">UCBTYPE_ENTRY</tt><a class="headerlink" href="#cx_Oracle.UCBTYPE_ENTRY" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to register callbacks on entry to the function of the
-OCI.  In other words, the callback will be called prior to the execution of
-the OCI function.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.UCBTYPE_EXIT">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">UCBTYPE_EXIT</tt><a class="headerlink" href="#cx_Oracle.UCBTYPE_EXIT" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to register callbacks on exit from the function of the
-OCI. In other words, the callback will be called after the execution of the
-OCI function.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.UCBTYPE_REPLACE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">UCBTYPE_REPLACE</tt><a class="headerlink" href="#cx_Oracle.UCBTYPE_REPLACE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to register callbacks that completely replace the call
-to the OCI function.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="database-change-notification">
-<h3>Database Change Notification<a class="headerlink" href="#database-change-notification" title="Permalink to this headline">¶</a></h3>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">These constants are extensions to the DB API definition.</p>
-</div>
-<dl class="data">
-<dt id="cx_Oracle.EVENT_DEREG">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">EVENT_DEREG</tt><a class="headerlink" href="#cx_Oracle.EVENT_DEREG" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is a possible value for the type of a message and indicates
-that the subscription object has been deregistered.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.EVENT_NONE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">EVENT_NONE</tt><a class="headerlink" href="#cx_Oracle.EVENT_NONE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is a possible value for the type of a message and provides no
-additional information about the event.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.EVENT_OBJCHANGE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">EVENT_OBJCHANGE</tt><a class="headerlink" href="#cx_Oracle.EVENT_OBJCHANGE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is a possible value for the type of a message and indicates
-that an object change of some sort has taken place.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.EVENT_SHUTDOWN">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">EVENT_SHUTDOWN</tt><a class="headerlink" href="#cx_Oracle.EVENT_SHUTDOWN" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is a possible value for the type of a message and indicates
-that the instance is in the process of being shut down.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.EVENT_SHUTDOWN_ANY">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">EVENT_SHUTDOWN_ANY</tt><a class="headerlink" href="#cx_Oracle.EVENT_SHUTDOWN_ANY" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is a possible value for the type of a message and indicates
-that any instance (when running RAC) is in the process of being shut down.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.EVENT_STARTUP">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">EVENT_STARTUP</tt><a class="headerlink" href="#cx_Oracle.EVENT_STARTUP" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is a possible value for the type of a message and indicates
-that the instance is in the process of being started up.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.OPCODE_ALLOPS">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">OPCODE_ALLOPS</tt><a class="headerlink" href="#cx_Oracle.OPCODE_ALLOPS" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is the default value when creating a subscription and
-specifies that messages are to be sent for all operations.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.OPCODE_ALLROWS">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">OPCODE_ALLROWS</tt><a class="headerlink" href="#cx_Oracle.OPCODE_ALLROWS" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is a possible value for the operation attribute of one of the
-table objects that are part of a message. It specifies that the table has
-been completely invalidated.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.OPCODE_ALTER">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">OPCODE_ALTER</tt><a class="headerlink" href="#cx_Oracle.OPCODE_ALTER" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is a possible value for the operation attribute of one of the
-table objects that are part of a message. It specifies that the table has
-been altered in some fashion using DDL.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.OPCODE_DELETE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">OPCODE_DELETE</tt><a class="headerlink" href="#cx_Oracle.OPCODE_DELETE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant can be used when creating a subscription and specifies that
-messages are to be sent only when data is deleted. It is also a possible
-value for the operation attribute of one of the table objects that are part
-of a message.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.OPCODE_DROP">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">OPCODE_DROP</tt><a class="headerlink" href="#cx_Oracle.OPCODE_DROP" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is a possible value for the operation attribute of one of the
-table objects that are part of a message. It specifies that the table has
-been dropped.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.OPCODE_INSERT">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">OPCODE_INSERT</tt><a class="headerlink" href="#cx_Oracle.OPCODE_INSERT" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant can be used when creating a subscription and specifies that
-messages are to be sent only when data is inserted. It is also a possible
-value for the operation attribute of one of the table objects that are part
-of a message.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.OPCODE_UPDATE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">OPCODE_UPDATE</tt><a class="headerlink" href="#cx_Oracle.OPCODE_UPDATE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant can be used when creating a subscription and specifies that
-messages are to be sent only when data is updated. It is also a possible
-value for the operation attribute of one of the table objects that are part
-of a message.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.SUBSCR_NAMESPACE_DBCHANGE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">SUBSCR_NAMESPACE_DBCHANGE</tt><a class="headerlink" href="#cx_Oracle.SUBSCR_NAMESPACE_DBCHANGE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is the default (and currently only) value for the namespace
-argument when creating a subscription.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.SUBSCR_PROTO_HTTP">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">SUBSCR_PROTO_HTTP</tt><a class="headerlink" href="#cx_Oracle.SUBSCR_PROTO_HTTP" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is a future possible value for the protocol argument when
-creating a subscription. It specifies that notification will be sent to the
-HTTP URL when a message is generated.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.SUBSCR_PROTO_MAIL">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">SUBSCR_PROTO_MAIL</tt><a class="headerlink" href="#cx_Oracle.SUBSCR_PROTO_MAIL" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is a future possible value for the protocol argument when
-creating a subscription. It specifies that an e-mail message should be sent
-to the target when a message is generated.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.SUBSCR_PROTO_OCI">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">SUBSCR_PROTO_OCI</tt><a class="headerlink" href="#cx_Oracle.SUBSCR_PROTO_OCI" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is the default (and currently only valid) value for the
-protocol argument when creating a subscription.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.SUBSCR_PROTO_SERVER">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">SUBSCR_PROTO_SERVER</tt><a class="headerlink" href="#cx_Oracle.SUBSCR_PROTO_SERVER" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is a future possible value for the protocol argument when
-creating a subscription. It specifies that the database procedure will be
-invoked when a message is generated.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="database-resident-connection-pooling">
-<h3>Database Resident Connection Pooling<a class="headerlink" href="#database-resident-connection-pooling" title="Permalink to this headline">¶</a></h3>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">These constants are extensions to the DB API definition.</p>
-</div>
-<dl class="data">
-<dt id="cx_Oracle.ATTR_PURITY_DEFAULT">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">ATTR_PURITY_DEFAULT</tt><a class="headerlink" href="#cx_Oracle.ATTR_PURITY_DEFAULT" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used when using database resident connection pooling (DRCP)
-and specifies that the purity of the session is the default value used by
-Oracle (see Oracle&#8217;s documentation for more information).</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.ATTR_PURITY_NEW">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">ATTR_PURITY_NEW</tt><a class="headerlink" href="#cx_Oracle.ATTR_PURITY_NEW" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used when using database resident connection pooling (DRCP)
-and specifies that the session acquired from the pool should be new and not
-have any prior session state.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.ATTR_PURITY_SELF">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">ATTR_PURITY_SELF</tt><a class="headerlink" href="#cx_Oracle.ATTR_PURITY_SELF" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used when using database resident connection pooling (DRCP)
-and specifies that the session acquired from the pool need not be new and
-may have prior session state.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="database-startup-shutdown">
-<h3>Database Startup/Shutdown<a class="headerlink" href="#database-startup-shutdown" title="Permalink to this headline">¶</a></h3>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">These constants are extensions to the DB API definition.</p>
-</div>
-<dl class="data">
-<dt id="cx_Oracle.PRELIM_AUTH">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">PRELIM_AUTH</tt><a class="headerlink" href="#cx_Oracle.PRELIM_AUTH" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to define the preliminary authentication mode required
-for performing database startup and shutdown.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.DBSHUTDOWN_ABORT">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">DBSHUTDOWN_ABORT</tt><a class="headerlink" href="#cx_Oracle.DBSHUTDOWN_ABORT" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used in database shutdown to indicate that the program
-should not wait for current calls to complete or for users to disconnect
-from the database. Use only in unusual circumstances since database recovery
-may be necessary upon next startup.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.DBSHUTDOWN_FINAL">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">DBSHUTDOWN_FINAL</tt><a class="headerlink" href="#cx_Oracle.DBSHUTDOWN_FINAL" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used in database shutdown to indicate that the instance can
-be truly halted. This should only be done after the database has been shut
-down in one of the other modes (except abort) and the database has been
-closed and dismounted using the appropriate SQL commands. See the method
-<a class="reference internal" href="connection.html#Connection.shutdown" title="Connection.shutdown"><tt class="xref py py-meth docutils literal"><span class="pre">shutdown()</span></tt></a> in the section on connections
-(<a class="reference internal" href="connection.html#connobj"><em>Connection Object</em></a>).</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.DBSHUTDOWN_IMMEDIATE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">DBSHUTDOWN_IMMEDIATE</tt><a class="headerlink" href="#cx_Oracle.DBSHUTDOWN_IMMEDIATE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used in database shutdown to indicate that all uncommitted
-transactions should be rolled back and any connected users should be
-disconnected.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.DBSHUTDOWN_TRANSACTIONAL">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">DBSHUTDOWN_TRANSACTIONAL</tt><a class="headerlink" href="#cx_Oracle.DBSHUTDOWN_TRANSACTIONAL" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used in database shutdown to indicate that further
-connections should be prohibited and no new transactions should be allowed.
-It then waits for active transactions to complete.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.DBSHUTDOWN_TRANSACTIONAL_LOCAL">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">DBSHUTDOWN_TRANSACTIONAL_LOCAL</tt><a class="headerlink" href="#cx_Oracle.DBSHUTDOWN_TRANSACTIONAL_LOCAL" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used in database shutdown to indicate that further
-connections should be prohibited and no new transactions should be allowed.
-It then waits for only local active transactions to complete.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="session-pooling">
-<h3>Session Pooling<a class="headerlink" href="#session-pooling" title="Permalink to this headline">¶</a></h3>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">These constants are extensions to the DB API definition.</p>
-</div>
-<dl class="data">
-<dt id="cx_Oracle.SPOOL_ATTRVAL_FORCEGET">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">SPOOL_ATTRVAL_FORCEGET</tt><a class="headerlink" href="#cx_Oracle.SPOOL_ATTRVAL_FORCEGET" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to define the &#8220;get&#8221; mode on session pools and
-indicates that a new connection will be returned if there are no free
-sessions available in the pool.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.SPOOL_ATTRVAL_NOWAIT">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">SPOOL_ATTRVAL_NOWAIT</tt><a class="headerlink" href="#cx_Oracle.SPOOL_ATTRVAL_NOWAIT" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to define the &#8220;get&#8221; mode on session pools and
-indicates that an exception is raised if there are no free sessions
-available in the pool.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.SPOOL_ATTRVAL_WAIT">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">SPOOL_ATTRVAL_WAIT</tt><a class="headerlink" href="#cx_Oracle.SPOOL_ATTRVAL_WAIT" title="Permalink to this definition">¶</a></dt>
-<dd><p>This constant is used to define the &#8220;get&#8221; mode on session pools and
-indicates that the acquisition of a connection waits until a session is
-freed if there are no free sessions available in the pool.</p>
-</dd></dl>
-
-</div>
-</div>
-<div class="section" id="types">
-<h2>Types<a class="headerlink" href="#types" title="Permalink to this headline">¶</a></h2>
-<dl class="data">
-<dt id="cx_Oracle.BINARY">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">BINARY</tt><a class="headerlink" href="#cx_Oracle.BINARY" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are binary
-(in Oracle this is RAW columns).</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.BFILE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">BFILE</tt><a class="headerlink" href="#cx_Oracle.BFILE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are BFILEs.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.BLOB">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">BLOB</tt><a class="headerlink" href="#cx_Oracle.BLOB" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are BLOBs.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.CLOB">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">CLOB</tt><a class="headerlink" href="#cx_Oracle.CLOB" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are CLOBs.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.CURSOR">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">CURSOR</tt><a class="headerlink" href="#cx_Oracle.CURSOR" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are cursors
-(in PL/SQL these are known as ref cursors).</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.DATETIME">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">DATETIME</tt><a class="headerlink" href="#cx_Oracle.DATETIME" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are dates.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.FIXED_CHAR">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">FIXED_CHAR</tt><a class="headerlink" href="#cx_Oracle.FIXED_CHAR" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are fixed
-length strings (in Oracle this is CHAR columns); these behave differently in
-Oracle than varchar2 so they are differentiated here even though the DB API
-does not differentiate them.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.FIXED_UNICODE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">FIXED_UNICODE</tt><a class="headerlink" href="#cx_Oracle.FIXED_UNICODE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are fixed
-length unicode strings (in Oracle this is NCHAR columns); these behave
-differently in Oracle than nvarchar2 so they are differentiated here even
-though the DB API does not differentiate them.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition and is only available
-in Python 2.x. In Python 3.x these types of columns are returned as
-FIXED_CHAR.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.INTERVAL">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">INTERVAL</tt><a class="headerlink" href="#cx_Oracle.INTERVAL" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are of type
-interval day to second.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.LOB">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">LOB</tt><a class="headerlink" href="#cx_Oracle.LOB" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is the Python type of <a class="reference internal" href="#cx_Oracle.BLOB" title="cx_Oracle.BLOB"><tt class="xref py py-data docutils literal"><span class="pre">BLOB</span></tt></a> and <a class="reference internal" href="#cx_Oracle.CLOB" title="cx_Oracle.CLOB"><tt class="xref py py-data docutils literal"><span class="pre">CLOB</span></tt></a> data
-that is returned from cursors.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.LONG_BINARY">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">LONG_BINARY</tt><a class="headerlink" href="#cx_Oracle.LONG_BINARY" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are long
-binary (in Oracle these are LONG RAW columns).</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.LONG_STRING">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">LONG_STRING</tt><a class="headerlink" href="#cx_Oracle.LONG_STRING" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are long
-strings (in Oracle these are LONG columns).</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.LONG_UNICODE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">LONG_UNICODE</tt><a class="headerlink" href="#cx_Oracle.LONG_UNICODE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are long
-strings (in Oracle these are LONG columns). There is no direct support for
-this in Oracle but long unicode strings are bound this way in order to
-avoid the &#8220;unimplemented or unreasonable conversion requested&#8221; error.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.NATIVE_FLOAT">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">NATIVE_FLOAT</tt><a class="headerlink" href="#cx_Oracle.NATIVE_FLOAT" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are of type
-binary_double or binary_float and is only available in Oracle 10g.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.NCLOB">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">NCLOB</tt><a class="headerlink" href="#cx_Oracle.NCLOB" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are NCLOBs.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.NUMBER">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">NUMBER</tt><a class="headerlink" href="#cx_Oracle.NUMBER" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are numbers.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.OBJECT">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">OBJECT</tt><a class="headerlink" href="#cx_Oracle.OBJECT" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are objects.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.ROWID">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">ROWID</tt><a class="headerlink" href="#cx_Oracle.ROWID" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe the pseudo column &#8220;rowid&#8221;.</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.STRING">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">STRING</tt><a class="headerlink" href="#cx_Oracle.STRING" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are strings
-(in Oracle this is VARCHAR2 columns).</p>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.TIMESTAMP">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">TIMESTAMP</tt><a class="headerlink" href="#cx_Oracle.TIMESTAMP" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are
-timestamps.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is an extension to the DB API definition and is only
-available in Oracle 9i.</p>
-</div>
-</dd></dl>
-
-<dl class="data">
-<dt id="cx_Oracle.UNICODE">
-<tt class="descclassname">cx_Oracle.</tt><tt class="descname">UNICODE</tt><a class="headerlink" href="#cx_Oracle.UNICODE" title="Permalink to this definition">¶</a></dt>
-<dd><p>This type object is used to describe columns in a database that are unicode
-(in Oracle this is NVARCHAR2 columns).</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This type is an extension to the DB API definition and is only available
-in Python 2.x. In Python 3.x these types of columns are returned as
-STRING.</p>
-</div>
-</dd></dl>
-
-</div>
-<div class="section" id="exceptions">
-<span id="id2"></span><h2>Exceptions<a class="headerlink" href="#exceptions" title="Permalink to this headline">¶</a></h2>
-<dl class="exception">
-<dt id="cx_Oracle.Warning">
-<em class="property">exception </em><tt class="descclassname">cx_Oracle.</tt><tt class="descname">Warning</tt><a class="headerlink" href="#cx_Oracle.Warning" title="Permalink to this definition">¶</a></dt>
-<dd><p>Exception raised for important warnings and defined by the DB API but not
-actually used by cx_Oracle.</p>
-</dd></dl>
-
-<dl class="exception">
-<dt id="cx_Oracle.Error">
-<em class="property">exception </em><tt class="descclassname">cx_Oracle.</tt><tt class="descname">Error</tt><a class="headerlink" href="#cx_Oracle.Error" title="Permalink to this definition">¶</a></dt>
-<dd><p>Exception that is the base class of all other exceptions defined by
-cx_Oracle and is a subclass of the Python StandardError exception (defined
-in the module exceptions).</p>
-</dd></dl>
-
-<dl class="exception">
-<dt id="cx_Oracle.InterfaceError">
-<em class="property">exception </em><tt class="descclassname">cx_Oracle.</tt><tt class="descname">InterfaceError</tt><a class="headerlink" href="#cx_Oracle.InterfaceError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Exception raised for errors that are related to the database interface
-rather than the database itself. It is a subclass of Error.</p>
-</dd></dl>
-
-<dl class="exception">
-<dt id="cx_Oracle.DatabaseError">
-<em class="property">exception </em><tt class="descclassname">cx_Oracle.</tt><tt class="descname">DatabaseError</tt><a class="headerlink" href="#cx_Oracle.DatabaseError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Exception raised for errors that are related to the database. It is a
-subclass of Error.</p>
-</dd></dl>
-
-<dl class="exception">
-<dt id="cx_Oracle.DataError">
-<em class="property">exception </em><tt class="descclassname">cx_Oracle.</tt><tt class="descname">DataError</tt><a class="headerlink" href="#cx_Oracle.DataError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Exception raised for errors that are due to problems with the processed
-data. It is a subclass of DatabaseError.</p>
-</dd></dl>
-
-<dl class="exception">
-<dt id="cx_Oracle.OperationalError">
-<em class="property">exception </em><tt class="descclassname">cx_Oracle.</tt><tt class="descname">OperationalError</tt><a class="headerlink" href="#cx_Oracle.OperationalError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Exception raised for errors that are related to the operation of the
-database but are not necessarily under the control of the progammer. It is a
-subclass of DatabaseError.</p>
-</dd></dl>
-
-<dl class="exception">
-<dt id="cx_Oracle.IntegrityError">
-<em class="property">exception </em><tt class="descclassname">cx_Oracle.</tt><tt class="descname">IntegrityError</tt><a class="headerlink" href="#cx_Oracle.IntegrityError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Exception raised when the relational integrity of the database is affected.
-It is a subclass of DatabaseError.</p>
-</dd></dl>
-
-<dl class="exception">
-<dt id="cx_Oracle.InternalError">
-<em class="property">exception </em><tt class="descclassname">cx_Oracle.</tt><tt class="descname">InternalError</tt><a class="headerlink" href="#cx_Oracle.InternalError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Exception raised when the database encounters an internal error. It is a
-subclass of DatabaseError.</p>
-</dd></dl>
-
-<dl class="exception">
-<dt id="cx_Oracle.ProgrammingError">
-<em class="property">exception </em><tt class="descclassname">cx_Oracle.</tt><tt class="descname">ProgrammingError</tt><a class="headerlink" href="#cx_Oracle.ProgrammingError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Exception raised for programming errors. It is a subclass of DatabaseError.</p>
-</dd></dl>
-
-<dl class="exception">
-<dt id="cx_Oracle.NotSupportedError">
-<em class="property">exception </em><tt class="descclassname">cx_Oracle.</tt><tt class="descname">NotSupportedError</tt><a class="headerlink" href="#cx_Oracle.NotSupportedError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Exception raised when a method or database API was used which is not
-supported by the database. It is a subclass of DatabaseError.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="exception-handling">
-<h2>Exception handling<a class="headerlink" href="#exception-handling" title="Permalink to this headline">¶</a></h2>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p>PEP 249 (Python Database API Specification v2.0) says the following about
-exception values:</p>
-<blockquote>
-<div>[...] The values of these exceptions are not defined. They should
-give the user a fairly good idea of what went wrong, though. [...]</div></blockquote>
-<p class="last">With cx_Oracle every exception object has exactly one argument in the
-<tt class="docutils literal"><span class="pre">args</span></tt> tuple. This argument is a <tt class="docutils literal"><span class="pre">cx_Oracle._Error</span></tt> object which has
-the following three read-only attributes.</p>
-</div>
-<dl class="attribute">
-<dt id="cx_Oracle._Error.code">
-<tt class="descclassname">_Error.</tt><tt class="descname">code</tt><a class="headerlink" href="#cx_Oracle._Error.code" title="Permalink to this definition">¶</a></dt>
-<dd><p>Integer attribute representing the Oracle error number (ORA-XXXXX).</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="cx_Oracle._Error.offset">
-<tt class="descclassname">_Error.</tt><tt class="descname">offset</tt><a class="headerlink" href="#cx_Oracle._Error.offset" title="Permalink to this definition">¶</a></dt>
-<dd><p>Integer attribute representing the error offset when applicable.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="cx_Oracle._Error.message">
-<tt class="descclassname">_Error.</tt><tt class="descname">message</tt><a class="headerlink" href="#cx_Oracle._Error.message" title="Permalink to this definition">¶</a></dt>
-<dd><p>String attribute representing the Oracle message of the error. This
-message is localized by the environment of the Oracle connection.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="cx_Oracle._Error.context">
-<tt class="descclassname">_Error.</tt><tt class="descname">context</tt><a class="headerlink" href="#cx_Oracle._Error.context" title="Permalink to this definition">¶</a></dt>
-<dd><p>String attribute representing the context in which the exception was
-raised..</p>
-</dd></dl>
-
-<p>This allows you to use the exceptions for example in the following way:</p>
-<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">sys</span>
-<span class="kn">import</span> <span class="nn">cx_Oracle</span>
-
-<span class="n">connection</span> <span class="o">=</span> <span class="n">cx_Oracle</span><span class="o">.</span><span class="n">Connection</span><span class="p">(</span><span class="s">&quot;user/pw@tns&quot;</span><span class="p">)</span>
-<span class="n">cursor</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">cursor</span><span class="p">()</span>
-
-<span class="k">try</span><span class="p">:</span>
-    <span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s">&quot;select 1 / 0 from dual&quot;</span><span class="p">)</span>
-<span class="k">except</span> <span class="n">cx_Oracle</span><span class="o">.</span><span class="n">DatabaseError</span><span class="p">,</span> <span class="n">exc</span><span class="p">:</span>
-    <span class="n">error</span><span class="p">,</span> <span class="o">=</span> <span class="n">exc</span><span class="o">.</span><span class="n">args</span>
-    <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Oracle-Error-Code:&quot;</span><span class="p">,</span> <span class="n">error</span><span class="o">.</span><span class="n">code</span>
-    <span class="k">print</span> <span class="o">&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Oracle-Error-Message:&quot;</span><span class="p">,</span> <span class="n">error</span><span class="o">.</span><span class="n">message</span>
-</pre></div>
-</div>
-</div>
-</div>
-
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-  <h3><a href="index.html">Table Of Contents</a></h3>
-  <ul>
-<li><a class="reference internal" href="#">Module Interface</a><ul>
-<li><a class="reference internal" href="#constants">Constants</a><ul>
-<li><a class="reference internal" href="#global">Global</a></li>
-<li><a class="reference internal" href="#database-callbacks">Database Callbacks</a></li>
-<li><a class="reference internal" href="#database-change-notification">Database Change Notification</a></li>
-<li><a class="reference internal" href="#database-resident-connection-pooling">Database Resident Connection Pooling</a></li>
-<li><a class="reference internal" href="#database-startup-shutdown">Database Startup/Shutdown</a></li>
-<li><a class="reference internal" href="#session-pooling">Session Pooling</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#types">Types</a></li>
-<li><a class="reference internal" href="#exceptions">Exceptions</a></li>
-<li><a class="reference internal" href="#exception-handling">Exception handling</a></li>
-</ul>
-</li>
-</ul>
-
-  <h4>Previous topic</h4>
-  <p class="topless"><a href="index.html"
-                        title="previous chapter">cx_Oracle</a></p>
-  <h4>Next topic</h4>
-  <p class="topless"><a href="connection.html"
-                        title="next chapter">Connection Object</a></p>
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="connection.html" title="Connection Object"
-             >next</a> |</li>
-        <li class="right" >
-          <a href="index.html" title="cx_Oracle"
-             >previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Anthony Tuininga.
-      Last updated on Jul 02, 2012.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

BIN
desktop/core/ext-py/cx_Oracle-5.1.2/html/objects.inv


+ 0 - 115
desktop/core/ext-py/cx_Oracle-5.1.2/html/py-modindex.html

@@ -1,115 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Python Module Index &mdash; cx_Oracle 5.1.2 documentation</title>
-    
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '',
-        VERSION:     '5.1.2',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  false
-      };
-    </script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
- 
-
-    <script type="text/javascript">
-      DOCUMENTATION_OPTIONS.COLLAPSE_INDEX = true;
-    </script>
-
-
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="#" title="Python Module Index"
-             >modules</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-
-   <h1>Python Module Index</h1>
-
-   <div class="modindex-jumpbox">
-   <a href="#cap-c"><strong>c</strong></a>
-   </div>
-
-   <table class="indextable modindextable" cellspacing="0" cellpadding="2">
-     <tr class="pcap"><td></td><td>&nbsp;</td><td></td></tr>
-     <tr class="cap" id="cap-c"><td></td><td>
-       <strong>c</strong></td><td></td></tr>
-     <tr>
-       <td></td>
-       <td>
-       <a href="module.html#module-cx_Oracle"><tt class="xref">cx_Oracle</tt></a></td><td>
-       <em></em></td></tr>
-   </table>
-
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="#" title="Python Module Index"
-             >modules</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Anthony Tuininga.
-      Last updated on Jul 02, 2012.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

+ 0 - 106
desktop/core/ext-py/cx_Oracle-5.1.2/html/search.html

@@ -1,106 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Search &mdash; cx_Oracle 5.1.2 documentation</title>
-    
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '',
-        VERSION:     '5.1.2',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  false
-      };
-    </script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <script type="text/javascript" src="_static/searchtools.js"></script>
-    <link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
-  <script type="text/javascript">
-    jQuery(function() { Search.loadIndex("searchindex.js"); });
-  </script>
-   
-
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <h1 id="search-documentation">Search</h1>
-  <div id="fallback" class="admonition warning">
-  <script type="text/javascript">$('#fallback').hide();</script>
-  <p>
-    Please activate JavaScript to enable the search
-    functionality.
-  </p>
-  </div>
-  <p>
-    From here you can search these documents. Enter your search
-    words into the box below and click "search". Note that the search
-    function will automatically search for all of the words. Pages
-    containing fewer words won't appear in the result list.
-  </p>
-  <form action="" method="get">
-    <input type="text" name="q" value="" />
-    <input type="submit" value="search" />
-    <span id="search-progress" style="padding-left: 10px"></span>
-  </form>
-  
-  <div id="search-results">
-  
-  </div>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Anthony Tuininga.
-      Last updated on Jul 02, 2012.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/html/searchindex.js


+ 0 - 225
desktop/core/ext-py/cx_Oracle-5.1.2/html/session_pool.html

@@ -1,225 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>SessionPool Object &mdash; cx_Oracle 5.1.2 documentation</title>
-    
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '',
-        VERSION:     '5.1.2',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  false
-      };
-    </script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
-    <link rel="next" title="Subscription Object" href="subscription.html" />
-    <link rel="prev" title="Variable Objects" href="variable.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="subscription.html" title="Subscription Object"
-             accesskey="N">next</a> |</li>
-        <li class="right" >
-          <a href="variable.html" title="Variable Objects"
-             accesskey="P">previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <div class="section" id="sessionpool-object">
-<span id="sesspool"></span><h1>SessionPool Object<a class="headerlink" href="#sessionpool-object" title="Permalink to this headline">¶</a></h1>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This object is an extension the DB API and is only available in Oracle 9i.</p>
-</div>
-<dl class="method">
-<dt id="SessionPool.acquire">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">acquire</tt><big>(</big><big>)</big><a class="headerlink" href="#SessionPool.acquire" title="Permalink to this definition">¶</a></dt>
-<dd><p>Acquire a connection from the session pool and return a connection object
-(<a class="reference internal" href="connection.html#connobj"><em>Connection Object</em></a>).</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="SessionPool.busy">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">busy</tt><a class="headerlink" href="#SessionPool.busy" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the number of sessions currently acquired.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="SessionPool.drop">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">drop</tt><big>(</big><em>connection</em><big>)</big><a class="headerlink" href="#SessionPool.drop" title="Permalink to this definition">¶</a></dt>
-<dd><p>Drop the connection from the pool which is useful if the connection is no
-longer usable (such as when the session is killed).</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="SessionPool.dsn">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">dsn</tt><a class="headerlink" href="#SessionPool.dsn" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the TNS entry of the database to which a
-connection has been established.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="SessionPool.homogeneous">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">homogeneous</tt><a class="headerlink" href="#SessionPool.homogeneous" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write boolean attribute indicates whether the pool is considered
-homogeneous or not. If the pool is not homogeneous different authentication
-can be used for each connection acquired from the pool.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="SessionPool.increment">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">increment</tt><a class="headerlink" href="#SessionPool.increment" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the number of sessions that will be
-established when additional sessions need to be created.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="SessionPool.max">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">max</tt><a class="headerlink" href="#SessionPool.max" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the maximum number of sessions that the
-session pool can control.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="SessionPool.min">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">min</tt><a class="headerlink" href="#SessionPool.min" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the number of sessions with which the
-session pool was created and the minimum number of sessions that will be
-controlled by the session pool.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="SessionPool.name">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">name</tt><a class="headerlink" href="#SessionPool.name" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the name assigned to the session pool by
-Oracle.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="SessionPool.opened">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">opened</tt><a class="headerlink" href="#SessionPool.opened" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the number of sessions currently opened by
-the session pool.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="SessionPool.password">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">password</tt><a class="headerlink" href="#SessionPool.password" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the password of the user which established
-the connection to the database.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="SessionPool.release">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">release</tt><big>(</big><em>connection</em><big>)</big><a class="headerlink" href="#SessionPool.release" title="Permalink to this definition">¶</a></dt>
-<dd><p>Release the connection back to the pool. This will be done automatically as
-well if the connection object is garbage collected.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="SessionPool.timeout">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">timeout</tt><a class="headerlink" href="#SessionPool.timeout" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute indicates the time (in seconds) after which idle
-sessions will be terminated in order to maintain an optimum number of open
-sessions.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="SessionPool.tnsentry">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">tnsentry</tt><a class="headerlink" href="#SessionPool.tnsentry" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the TNS entry of the database to which a
-connection has been established.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="SessionPool.username">
-<tt class="descclassname">SessionPool.</tt><tt class="descname">username</tt><a class="headerlink" href="#SessionPool.username" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the name of the user which established the
-connection to the database.</p>
-</dd></dl>
-
-</div>
-
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-  <h4>Previous topic</h4>
-  <p class="topless"><a href="variable.html"
-                        title="previous chapter">Variable Objects</a></p>
-  <h4>Next topic</h4>
-  <p class="topless"><a href="subscription.html"
-                        title="next chapter">Subscription Object</a></p>
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="subscription.html" title="Subscription Object"
-             >next</a> |</li>
-        <li class="right" >
-          <a href="variable.html" title="Variable Objects"
-             >previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Anthony Tuininga.
-      Last updated on Jul 02, 2012.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

+ 0 - 276
desktop/core/ext-py/cx_Oracle-5.1.2/html/subscription.html

@@ -1,276 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Subscription Object &mdash; cx_Oracle 5.1.2 documentation</title>
-    
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '',
-        VERSION:     '5.1.2',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  false
-      };
-    </script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
-    <link rel="next" title="LOB Objects" href="lob.html" />
-    <link rel="prev" title="SessionPool Object" href="session_pool.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="lob.html" title="LOB Objects"
-             accesskey="N">next</a> |</li>
-        <li class="right" >
-          <a href="session_pool.html" title="SessionPool Object"
-             accesskey="P">previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <div class="section" id="subscription-object">
-<span id="subscrobj"></span><h1>Subscription Object<a class="headerlink" href="#subscription-object" title="Permalink to this headline">¶</a></h1>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This object is an extension the DB API and is only available in Oracle 10g
-Release 2 and higher.</p>
-</div>
-<dl class="attribute">
-<dt id="Subscription.callback">
-<tt class="descclassname">Subscription.</tt><tt class="descname">callback</tt><a class="headerlink" href="#Subscription.callback" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the callback that was registered when the
-subscription was created.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Subscription.connection">
-<tt class="descclassname">Subscription.</tt><tt class="descname">connection</tt><a class="headerlink" href="#Subscription.connection" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the connection that was used to register
-the subscription when it was created.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Subscription.namespace">
-<tt class="descclassname">Subscription.</tt><tt class="descname">namespace</tt><a class="headerlink" href="#Subscription.namespace" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the namespace used to register the
-subscription when it was created.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Subscription.operations">
-<tt class="descclassname">Subscription.</tt><tt class="descname">operations</tt><a class="headerlink" href="#Subscription.operations" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the operations that will send notifications
-for each table that is registered using this subscription.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Subscription.port">
-<tt class="descclassname">Subscription.</tt><tt class="descname">port</tt><a class="headerlink" href="#Subscription.port" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the port used for callback notifications
-from the database server. If not set during construction, this value is
-zero.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Subscription.protocol">
-<tt class="descclassname">Subscription.</tt><tt class="descname">protocol</tt><a class="headerlink" href="#Subscription.protocol" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the protocol used to register the
-subscription when it was created.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="Subscription.registerquery">
-<tt class="descclassname">Subscription.</tt><tt class="descname">registerquery</tt><big>(</big><em>statement</em><span class="optional">[</span>, <em>args</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Subscription.registerquery" title="Permalink to this definition">¶</a></dt>
-<dd><p>Register the query for subsequent notification when tables referenced by the
-query are changed. This behaves similarly to cursor.execute() but only
-queries are permitted and the arguments must be a sequence or dictionary.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Subscription.rowids">
-<tt class="descclassname">Subscription.</tt><tt class="descname">rowids</tt><a class="headerlink" href="#Subscription.rowids" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns True or False specifying if rowids will be
-included in notifications sent using this subscription.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Subscription.timeout">
-<tt class="descclassname">Subscription.</tt><tt class="descname">timeout</tt><a class="headerlink" href="#Subscription.timeout" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the timeout (in seconds) used to register
-the subscription when it was created. A timeout value of 0 indicates that
-there is no timeout.</p>
-</dd></dl>
-
-<div class="section" id="message-objects">
-<h2>Message Objects<a class="headerlink" href="#message-objects" title="Permalink to this headline">¶</a></h2>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This object is created internally when notification is received and passed
-to the callback procedure specified when a subscription is created.</p>
-</div>
-<dl class="attribute">
-<dt id="Message.dbname">
-<tt class="descclassname">Message.</tt><tt class="descname">dbname</tt><a class="headerlink" href="#Message.dbname" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the name of the database that generated the
-notification.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Message.tables">
-<tt class="descclassname">Message.</tt><tt class="descname">tables</tt><a class="headerlink" href="#Message.tables" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns a list of message table objects that give
-information about the tables changed for this notification.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Message.type">
-<tt class="descclassname">Message.</tt><tt class="descname">type</tt><a class="headerlink" href="#Message.type" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the type of message that has been sent.
-See the constants section on database change notification for additional
-information.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="message-table-objects">
-<h2>Message Table Objects<a class="headerlink" href="#message-table-objects" title="Permalink to this headline">¶</a></h2>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This object is created internally for each table changed when notification
-is received and is found in the tables attribute of message objects.</p>
-</div>
-<dl class="attribute">
-<dt id="MessageTable.name">
-<tt class="descclassname">MessageTable.</tt><tt class="descname">name</tt><a class="headerlink" href="#MessageTable.name" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the name of the table that was changed.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="MessageTable.operation">
-<tt class="descclassname">MessageTable.</tt><tt class="descname">operation</tt><a class="headerlink" href="#MessageTable.operation" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the operation that took place on the table
-that was changed.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="MessageTable.rows">
-<tt class="descclassname">MessageTable.</tt><tt class="descname">rows</tt><a class="headerlink" href="#MessageTable.rows" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns a list of message row objects that give
-information about the rows changed on the table. This value is only filled
-in if the rowids argument to the Connection.subscribe() method is True.</p>
-</dd></dl>
-
-</div>
-<div class="section" id="message-row-objects">
-<h2>Message Row Objects<a class="headerlink" href="#message-row-objects" title="Permalink to this headline">¶</a></h2>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This object is created internally for each row changed on a table when
-notification is received and is found in the rows attribute of message table
-objects.</p>
-</div>
-<dl class="attribute">
-<dt id="MessageRow.operation">
-<tt class="descclassname">MessageRow.</tt><tt class="descname">operation</tt><a class="headerlink" href="#MessageRow.operation" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the operation that took place on the row
-that was changed.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="MessageRow.rowid">
-<tt class="descclassname">MessageRow.</tt><tt class="descname">rowid</tt><a class="headerlink" href="#MessageRow.rowid" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the rowid of the row that was changed.</p>
-</dd></dl>
-
-</div>
-</div>
-
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-  <h3><a href="index.html">Table Of Contents</a></h3>
-  <ul>
-<li><a class="reference internal" href="#">Subscription Object</a><ul>
-<li><a class="reference internal" href="#message-objects">Message Objects</a></li>
-<li><a class="reference internal" href="#message-table-objects">Message Table Objects</a></li>
-<li><a class="reference internal" href="#message-row-objects">Message Row Objects</a></li>
-</ul>
-</li>
-</ul>
-
-  <h4>Previous topic</h4>
-  <p class="topless"><a href="session_pool.html"
-                        title="previous chapter">SessionPool Object</a></p>
-  <h4>Next topic</h4>
-  <p class="topless"><a href="lob.html"
-                        title="next chapter">LOB Objects</a></p>
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="lob.html" title="LOB Objects"
-             >next</a> |</li>
-        <li class="right" >
-          <a href="session_pool.html" title="SessionPool Object"
-             >previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Anthony Tuininga.
-      Last updated on Jul 02, 2012.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

+ 0 - 192
desktop/core/ext-py/cx_Oracle-5.1.2/html/variable.html

@@ -1,192 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Variable Objects &mdash; cx_Oracle 5.1.2 documentation</title>
-    
-    <link rel="stylesheet" href="_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '',
-        VERSION:     '5.1.2',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  false
-      };
-    </script>
-    <script type="text/javascript" src="_static/jquery.js"></script>
-    <script type="text/javascript" src="_static/underscore.js"></script>
-    <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="cx_Oracle 5.1.2 documentation" href="index.html" />
-    <link rel="next" title="SessionPool Object" href="session_pool.html" />
-    <link rel="prev" title="Cursor Object" href="cursor.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="session_pool.html" title="SessionPool Object"
-             accesskey="N">next</a> |</li>
-        <li class="right" >
-          <a href="cursor.html" title="Cursor Object"
-             accesskey="P">previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <div class="section" id="variable-objects">
-<span id="varobj"></span><h1>Variable Objects<a class="headerlink" href="#variable-objects" title="Permalink to this headline">¶</a></h1>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">The DB API definition does not define this object.</p>
-</div>
-<dl class="attribute">
-<dt id="Variable.allocelems">
-<tt class="descclassname">Variable.</tt><tt class="descname">allocelems</tt><a class="headerlink" href="#Variable.allocelems" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the number of elements allocated in an
-array, or the number of scalar items that can be fetched into the variable.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is deprecated. Use attribute numElements instead.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Variable.bufferSize">
-<tt class="descclassname">Variable.</tt><tt class="descname">bufferSize</tt><a class="headerlink" href="#Variable.bufferSize" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the size of the buffer allocated for each
-element in bytes.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="Variable.getvalue">
-<tt class="descclassname">Variable.</tt><tt class="descname">getvalue</tt><big>(</big><span class="optional">[</span><em>pos=0</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#Variable.getvalue" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the value at the given position in the variable.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Variable.inconverter">
-<tt class="descclassname">Variable.</tt><tt class="descname">inconverter</tt><a class="headerlink" href="#Variable.inconverter" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute specifies the method used to convert data from
-Python to the Oracle database. The method signature is converter(value)
-and the expected return value is the value to bind to the database. If this
-attribute is None, the value is bound directly without any conversion.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Variable.numElements">
-<tt class="descclassname">Variable.</tt><tt class="descname">numElements</tt><a class="headerlink" href="#Variable.numElements" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the number of elements allocated in an
-array, or the number of scalar items that can be fetched into the variable
-or bound to the variable.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Variable.maxlength">
-<tt class="descclassname">Variable.</tt><tt class="descname">maxlength</tt><a class="headerlink" href="#Variable.maxlength" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the maximum length of the variable.</p>
-<div class="admonition note">
-<p class="first admonition-title">Note</p>
-<p class="last">This attribute is deprecated. Use attribute bufferSize instead.</p>
-</div>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Variable.outconverter">
-<tt class="descclassname">Variable.</tt><tt class="descname">outconverter</tt><a class="headerlink" href="#Variable.outconverter" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-write attribute specifies the method used to convert data from
-from the Oracle to Python. The method signature is converter(value)
-and the expected return value is the value to return to Python. If this
-attribute is None, the value is returned directly without any conversion.</p>
-</dd></dl>
-
-<dl class="method">
-<dt id="Variable.setvalue">
-<tt class="descclassname">Variable.</tt><tt class="descname">setvalue</tt><big>(</big><em>pos</em>, <em>value</em><big>)</big><a class="headerlink" href="#Variable.setvalue" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set the value at the given position in the variable.</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="Variable.size">
-<tt class="descclassname">Variable.</tt><tt class="descname">size</tt><a class="headerlink" href="#Variable.size" title="Permalink to this definition">¶</a></dt>
-<dd><p>This read-only attribute returns the size of the variable. For strings this
-value is the size in characters. For all others, this is same value as the
-attribute bufferSize.</p>
-</dd></dl>
-
-</div>
-
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-  <h4>Previous topic</h4>
-  <p class="topless"><a href="cursor.html"
-                        title="previous chapter">Cursor Object</a></p>
-  <h4>Next topic</h4>
-  <p class="topless"><a href="session_pool.html"
-                        title="next chapter">SessionPool Object</a></p>
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="session_pool.html" title="SessionPool Object"
-             >next</a> |</li>
-        <li class="right" >
-          <a href="cursor.html" title="Cursor Object"
-             >previous</a> |</li>
-        <li><a href="index.html">cx_Oracle 5.1.2 documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Anthony Tuininga.
-      Last updated on Jul 02, 2012.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

+ 5 - 3
desktop/core/ext-py/cx_Oracle-5.1.2/BUILD.txt → desktop/core/ext-py/cx_Oracle-5.2.1/BUILD.txt

@@ -3,7 +3,9 @@ Linux Build Hints
 (Tested on RedHat 4.x, Gentoo 2008.0, Ubuntu 8.x, and Debian 4.x)
 These hints are based on using Oracle's instantclient_11_1.  It is necessary
 to download both 'instantclient-linux-basic' and 'instantclient-sdk-linux' from
-oracle.com in order to successfully compile.  
+oracle.com in order to successfully compile. Note, however, that if using RPMs
+you do not need to do anything as cx_Oracle will compile out of the box without
+any changes to the configuration of the machine.
 
 http://www.oracle.com/technology/software/tech/oci/instantclient/index.html
 
@@ -89,8 +91,8 @@ the distutils module. Note that on Windows, I have used mingw32
 modification. The commands required to build and install the module are as 
 follows:
 
-	python setup.py build
-	python setup.py install
+    python setup.py build
+    python setup.py install
 
 
 Testing (Post Installation Quick Test)

+ 105 - 0
desktop/core/ext-py/cx_Oracle-5.2.1/BooleanVar.c

@@ -0,0 +1,105 @@
+//-----------------------------------------------------------------------------
+// BooleanVar.c
+//   Defines the routines for handling boolean variables (only available after
+// Oracle 12.1).
+//-----------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+// Data types
+//-----------------------------------------------------------------------------
+typedef struct {
+    Variable_HEAD
+    int *data;
+} udt_BooleanVar;
+
+
+//-----------------------------------------------------------------------------
+// Declaration of variable functions.
+//-----------------------------------------------------------------------------
+static int BooleanVar_SetValue(udt_BooleanVar*, unsigned, PyObject*);
+static PyObject *BooleanVar_GetValue(udt_BooleanVar*, unsigned);
+
+
+//-----------------------------------------------------------------------------
+// Python type declaration
+//-----------------------------------------------------------------------------
+static PyTypeObject g_BooleanVarType = {
+    PyVarObject_HEAD_INIT(NULL, 0)
+    "cx_Oracle.BOOLEAN",                // tp_name
+    sizeof(udt_BooleanVar),             // tp_basicsize
+    0,                                  // tp_itemsize
+    0,                                  // tp_dealloc
+    0,                                  // tp_print
+    0,                                  // tp_getattr
+    0,                                  // tp_setattr
+    0,                                  // tp_compare
+    0,                                  // tp_repr
+    0,                                  // tp_as_number
+    0,                                  // tp_as_sequence
+    0,                                  // tp_as_mapping
+    0,                                  // tp_hash
+    0,                                  // tp_call
+    0,                                  // tp_str
+    0,                                  // tp_getattro
+    0,                                  // tp_setattro
+    0,                                  // tp_as_buffer
+    Py_TPFLAGS_DEFAULT,                 // tp_flags
+    0                                   // tp_doc
+};
+
+
+//-----------------------------------------------------------------------------
+// variable type declarations
+//-----------------------------------------------------------------------------
+static udt_VariableType vt_Boolean = {
+    (InitializeProc) NULL,
+    (FinalizeProc) NULL,
+    (PreDefineProc) NULL,
+    (PostDefineProc) NULL,
+    (PreFetchProc) NULL,
+    (IsNullProc) NULL,
+    (SetValueProc) BooleanVar_SetValue,
+    (GetValueProc) BooleanVar_GetValue,
+    (GetBufferSizeProc) NULL,
+    &g_BooleanVarType,                  // Python type
+    SQLT_BOL,                           // Oracle type
+    SQLCS_IMPLICIT,                     // charset form
+    sizeof(int),                        // element length
+    0,                                  // is character data
+    0,                                  // is variable length
+    1,                                  // can be copied
+    0                                   // can be in array
+};
+
+
+//-----------------------------------------------------------------------------
+// BooleanVar_GetValue()
+//   Returns the value stored at the given array position.
+//-----------------------------------------------------------------------------
+static PyObject *BooleanVar_GetValue(
+    udt_BooleanVar *var,                // variable to determine value for
+    unsigned pos)                       // array position
+{
+    int integerValue;
+    PyObject *value;
+
+    integerValue = var->data[pos];
+    value = (integerValue) ? Py_True : Py_False;
+    Py_INCREF(value);
+    return value;
+}
+
+
+//-----------------------------------------------------------------------------
+// BooleanVar_SetValue()
+//   Set the value of the variable at the given array position.
+//-----------------------------------------------------------------------------
+static int BooleanVar_SetValue(
+    udt_BooleanVar *var,                // variable to set value for
+    unsigned pos,                       // array position to set
+    PyObject *value)                    // value to set
+{
+    var->data[pos] = (value == Py_True);
+    return 0;
+}
+

+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/Buffer.c → desktop/core/ext-py/cx_Oracle-5.2.1/Buffer.c


+ 15 - 21
desktop/core/ext-py/cx_Oracle-5.1.2/Callback.c → desktop/core/ext-py/cx_Oracle-5.2.1/Callback.c

@@ -14,7 +14,7 @@ static udt_Variable *Callback_NewVariable(
     void *data,                         // data pointer
     void *indicator,                    // indicator pointer
     ub2 *returnCode,                    // return code pointer
-    ub2 *actualLength)                  // actual length pointer
+    ACTUAL_LENGTH_TYPE *actualLength)   // actual length pointer
 {
     udt_VariableType *type;
     udt_Variable *var;
@@ -67,10 +67,9 @@ static PyObject *Callback_BindByNameArgs(
     va_list args)                       // arguments to OCI function
 {
     ub4 nameLength, allocatedElements, *actualElements;
-    ub2 dataType, *actualLength, *returnCode;
+    ACTUAL_LENGTH_TYPE *actualLength;
+    ub2 dataType, *returnCode;
     dvoid *indicator, *value;
-    OCIBind **bindHandlePtr;
-    OCIError *errorHandle;
     udt_Variable *var;
     PyObject *result;
     sb4 valueLength;
@@ -78,15 +77,15 @@ static PyObject *Callback_BindByNameArgs(
     text *name;
 
     handle = va_arg(args, OCIStmt*);
-    bindHandlePtr = va_arg(args, OCIBind**);
-    errorHandle = va_arg(args, OCIError*);
+    va_arg(args, OCIBind**);
+    va_arg(args, OCIError*);
     name = va_arg(args, text*);
     nameLength = va_arg(args, ub4);
     value = va_arg(args, dvoid*);
     valueLength = va_arg(args, sb4);
     dataType = va_arg(args, int);
     indicator = va_arg(args, dvoid*);
-    actualLength = va_arg(args, ub2*);
+    actualLength = va_arg(args, ACTUAL_LENGTH_TYPE*);
     returnCode = va_arg(args, ub2*);
     allocatedElements = va_arg(args, ub4);
     actualElements = va_arg(args, ub4*);
@@ -114,10 +113,9 @@ static PyObject *Callback_DefineByPosArgs(
     udt_Connection *connection,         // connection to use
     va_list args)                       // arguments to OCI function
 {
-    ub2 dataType, *actualLength, *returnCode;
-    OCIDefine **defineHandle;
+    ACTUAL_LENGTH_TYPE *actualLength;
+    ub2 dataType, *returnCode;
     dvoid *indicator, *value;
-    OCIError *errorHandle;
     udt_Variable *var;
     PyObject *result;
     OCIStmt *handle;
@@ -125,14 +123,14 @@ static PyObject *Callback_DefineByPosArgs(
     ub4 position;
 
     handle = va_arg(args, OCIStmt*);
-    defineHandle = va_arg(args, OCIDefine**);
-    errorHandle = va_arg(args, OCIError*);
+    va_arg(args, OCIDefine**);
+    va_arg(args, OCIError*);
     position = va_arg(args, ub4);
     value = va_arg(args, dvoid*);
     valueLength = va_arg(args, sb4);
     dataType = va_arg(args, int);
     indicator = va_arg(args, dvoid*);
-    actualLength = va_arg(args, ub2*);
+    actualLength = va_arg(args, ACTUAL_LENGTH_TYPE*);
     returnCode = va_arg(args, ub2*);
 
     // create a variable
@@ -154,14 +152,12 @@ static PyObject *Callback_DefineByPosArgs(
 static PyObject *Callback_ExecuteArgs(
     va_list args)                       // arguments to OCI function
 {
-    OCISvcCtx* serviceContextHandle;
-    OCIError *errorHandle;
     ub4 iters, rowoff;
     OCIStmt *handle;
 
-    serviceContextHandle = va_arg(args, OCISvcCtx*);
+    va_arg(args, OCISvcCtx*);
     handle = va_arg(args, OCIStmt*);
-    errorHandle = va_arg(args, OCIError*);
+    va_arg(args, OCIError*);
     iters = va_arg(args, ub4);
     rowoff = va_arg(args, ub4);
 
@@ -178,12 +174,11 @@ static PyObject *Callback_FetchArgs(
     va_list args)                       // arguments to OCI function
 {
     ub4 numRows, rowCount;
-    OCIError *errorHandle;
     OCIStmt *handle;
     sword status;
 
     handle = va_arg(args, OCIStmt*);
-    errorHandle = va_arg(args, OCIError*);
+    va_arg(args, OCIError*);
     numRows = va_arg(args, ub4);
 
     status = OCIAttrGet(handle, OCI_HTYPE_STMT, &rowCount, 0,
@@ -203,13 +198,12 @@ static PyObject *Callback_FetchArgs(
 static PyObject *Callback_PrepareArgs(
     va_list args)                       // arguments to OCI function
 {
-    OCIError *errorHandle;
     ub4 statementLength;
     OCIStmt *handle;
     text *statement;
 
     handle = va_arg(args, OCIStmt*);
-    errorHandle = va_arg(args, OCIError*);
+    va_arg(args, OCIError*);
     statement = va_arg(args, text *);
     statementLength = va_arg(args, ub4);
 

+ 76 - 75
desktop/core/ext-py/cx_Oracle-5.1.2/Connection.c → desktop/core/ext-py/cx_Oracle-5.2.1/Connection.c

@@ -16,7 +16,6 @@ typedef struct {
     PyObject *inputTypeHandler;
     PyObject *outputTypeHandler;
     PyObject *username;
-    PyObject *password;
     PyObject *dsn;
     PyObject *version;
     ub4 commitMode;
@@ -30,13 +29,11 @@ typedef struct {
 // constants for the OCI attributes
 //-----------------------------------------------------------------------------
 static ub4 gc_ClientIdentifierAttribute = OCI_ATTR_CLIENT_IDENTIFIER;
-#ifdef ORACLE_10G
 static ub4 gc_ModuleAttribute = OCI_ATTR_MODULE;
 static ub4 gc_ActionAttribute = OCI_ATTR_ACTION;
 static ub4 gc_ClientInfoAttribute = OCI_ATTR_CLIENT_INFO;
-#endif
 
-#ifdef ORACLE_10GR2
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(10, 2)
 static ub4 gc_CurrentSchemaAttribute = OCI_ATTR_CURRENT_SCHEMA;
 #endif
 
@@ -66,12 +63,12 @@ static PyObject *Connection_ContextManagerExit(udt_Connection*, PyObject*);
 static PyObject *Connection_ChangePasswordExternal(udt_Connection*, PyObject*);
 static PyObject *Connection_GetStmtCacheSize(udt_Connection*, void*);
 static int Connection_SetStmtCacheSize(udt_Connection*, PyObject*, void*);
-#ifdef ORACLE_10G
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(10, 2)
 static PyObject *Connection_GetOCIAttr(udt_Connection*, ub4*);
 #endif
 static int Connection_SetOCIAttr(udt_Connection*, PyObject*, ub4*);
-#ifdef ORACLE_10GR2
-#if !defined(AIX5) || defined(ORACLE_11g)
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(10, 2)
+#if !defined(AIX5) || ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
 static PyObject *Connection_Ping(udt_Connection*, PyObject*);
 #endif
 static PyObject *Connection_Shutdown(udt_Connection*, PyObject*, PyObject*);
@@ -95,8 +92,8 @@ static PyMethodDef g_ConnectionMethods[] = {
     { "unregister", (PyCFunction) Connection_UnregisterCallback, METH_VARARGS },
     { "__enter__", (PyCFunction) Connection_ContextManagerEnter, METH_NOARGS },
     { "__exit__", (PyCFunction) Connection_ContextManagerExit, METH_VARARGS },
-#ifdef ORACLE_10GR2
-#if !defined(AIX5) || defined(ORACLE_11g)
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(10, 2)
+#if !defined(AIX5) || ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
     { "ping", (PyCFunction) Connection_Ping, METH_NOARGS },
 #endif
     { "shutdown", (PyCFunction) Connection_Shutdown,
@@ -117,7 +114,6 @@ static PyMethodDef g_ConnectionMethods[] = {
 //-----------------------------------------------------------------------------
 static PyMemberDef g_ConnectionMembers[] = {
     { "username", T_OBJECT, offsetof(udt_Connection, username), READONLY },
-    { "password", T_OBJECT, offsetof(udt_Connection, password), 0 },
     { "dsn", T_OBJECT, offsetof(udt_Connection, dsn), READONLY },
     { "tnsentry", T_OBJECT, offsetof(udt_Connection, dsn), READONLY },
     { "autocommit", T_INT, offsetof(udt_Connection, autocommit), 0 },
@@ -140,15 +136,13 @@ static PyGetSetDef g_ConnectionCalcMembers[] = {
             0, 0, 0 },
     { "stmtcachesize", (getter) Connection_GetStmtCacheSize,
             (setter) Connection_SetStmtCacheSize, 0, 0 },
-#ifdef ORACLE_10G
     { "module", 0, (setter) Connection_SetOCIAttr, 0, &gc_ModuleAttribute },
     { "action", 0, (setter) Connection_SetOCIAttr, 0, &gc_ActionAttribute },
     { "clientinfo", 0, (setter) Connection_SetOCIAttr, 0,
             &gc_ClientInfoAttribute },
-#endif
     { "client_identifier", 0, (setter) Connection_SetOCIAttr, 0,
             &gc_ClientIdentifierAttribute },
-#ifdef ORACLE_10GR2
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(10, 2)
     { "current_schema", (getter) Connection_GetOCIAttr,
             (setter) Connection_SetOCIAttr, 0, &gc_CurrentSchemaAttribute },
 #endif
@@ -229,11 +223,12 @@ static int Connection_IsConnected(
 static int Connection_GetConnection(
     udt_Connection *self,               // connection
     udt_SessionPool *pool,              // pool to acquire connection from
+    PyObject *passwordObj,              // password
     PyObject *cclassObj,                // connection class (DRCP)
     ub4 purity)                         // purity (DRCP)
 {
-    int externalCredentials, proxyCredentials;
     udt_Environment *environment;
+    int externalAuth, proxyAuth;
     udt_Buffer buffer;
     OCIAuthInfo *authInfo;
     PyObject *dbNameObj;
@@ -243,15 +238,16 @@ static int Connection_GetConnection(
 
     // set things up for the call to acquire a session
     authInfo = NULL;
-    proxyCredentials = 0;
+    externalAuth = proxyAuth = 0;
     if (pool) {
         environment = pool->environment;
         dbNameObj = pool->name;
         mode = OCI_SESSGET_SPOOL;
+        externalAuth = pool->externalAuth;
         if (!pool->homogeneous && pool->username && self->username) {
-            proxyCredentials = PyObject_RichCompareBool(self->username,
+            proxyAuth = PyObject_RichCompareBool(self->username,
                     pool->username, Py_NE);
-            if (proxyCredentials < 0)
+            if (proxyAuth < 0)
                 return -1;
             mode = mode | OCI_SESSGET_CREDPROXY;
         }
@@ -262,7 +258,7 @@ static int Connection_GetConnection(
     }
 
     // set up authorization handle, if needed
-    if (!pool || cclassObj || proxyCredentials) {
+    if (!pool || cclassObj || proxyAuth) {
 
         // create authorization handle
         status = OCIHandleAlloc(environment->handle, (dvoid*) &authInfo,
@@ -272,12 +268,12 @@ static int Connection_GetConnection(
             return -1;
 
         // set the user name, if applicable
-        externalCredentials = 1;
+        externalAuth = 1;
         if (cxBuffer_FromObject(&buffer, self->username,
                 self->environment->encoding) < 0)
             return -1;
         if (buffer.size > 0) {
-            externalCredentials = 0;
+            externalAuth = 0;
             status = OCIAttrSet(authInfo, OCI_HTYPE_AUTHINFO,
                     (text*) buffer.ptr, buffer.size, OCI_ATTR_USERNAME,
                     environment->errorHandle);
@@ -290,11 +286,11 @@ static int Connection_GetConnection(
         cxBuffer_Clear(&buffer);
 
         // set the password, if applicable
-        if (cxBuffer_FromObject(&buffer, self->password,
+        if (cxBuffer_FromObject(&buffer, passwordObj,
                 self->environment->encoding) < 0)
             return -1;
         if (buffer.size > 0) {
-            externalCredentials = 0;
+            externalAuth = 0;
             status = OCIAttrSet(authInfo, OCI_HTYPE_AUTHINFO,
                     (text*) buffer.ptr, buffer.size, OCI_ATTR_PASSWORD,
                     environment->errorHandle);
@@ -306,11 +302,7 @@ static int Connection_GetConnection(
         }
         cxBuffer_Clear(&buffer);
 
-        // if no user name or password are set, using external credentials
-        if (!pool && externalCredentials)
-            mode |= OCI_SESSGET_CREDEXT;
-
-#ifdef ORACLE_11G
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
         // set the connection class, if applicable
         if (cxBuffer_FromObject(&buffer, cclassObj,
                 self->environment->encoding) < 0)
@@ -339,6 +331,10 @@ static int Connection_GetConnection(
 #endif
     }
 
+    // external auth requested (no username/password or specified via pool)
+    if (externalAuth)
+        mode |= OCI_SESSGET_CREDEXT;
+
     // acquire the new session
     if (cxBuffer_FromObject(&buffer, dbNameObj,
             self->environment->encoding) < 0)
@@ -359,11 +355,9 @@ static int Connection_GetConnection(
 
     // copy members in the case where a pool is being used
     if (pool) {
-        if (!proxyCredentials) {
+        if (!proxyAuth) {
             Py_INCREF(pool->username);
             self->username = pool->username;
-            Py_INCREF(pool->password);
-            self->password = pool->password;
         }
         Py_INCREF(pool->dsn);
         self->dsn = pool->dsn;
@@ -376,7 +370,7 @@ static int Connection_GetConnection(
 }
 
 
-#ifdef ORACLE_10G
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(10, 2)
 //-----------------------------------------------------------------------------
 // Connection_GetOCIAttr()
 //   Get the value of the OCI attribute.
@@ -387,6 +381,7 @@ static PyObject *Connection_GetOCIAttr(
 {
     OCISession *sessionHandle;
     udt_Buffer buffer;
+    ub4 bufferSize;
     sword status;
 
     // make sure connection is connected
@@ -403,12 +398,13 @@ static PyObject *Connection_GetOCIAttr(
 
     // get the value from the OCI
     status = OCIAttrGet(sessionHandle, OCI_HTYPE_SESSION,
-            (text**) &buffer.ptr, (ub4*) &buffer.size, *attribute,
+            (text**) &buffer.ptr, &bufferSize, *attribute,
             self->environment->errorHandle);
     if (Environment_CheckForError(self->environment, status,
             "Connection_GetOCIAttr()") < 0)
         return NULL;
 
+    buffer.size = bufferSize;
     return cxString_FromEncodedString(buffer.ptr, buffer.size,
             self->environment->encoding);
 }
@@ -428,12 +424,6 @@ static int Connection_SetOCIAttr(
     udt_Buffer buffer;
     sword status;
 
-    // verify arguments
-    if (!cxString_Check(value)) {
-        PyErr_SetString(PyExc_TypeError, "value must be a string");
-        return -1;
-    }
-
     // make sure connection is connected
     if (Connection_IsConnected(self) < 0)
         return -1;
@@ -553,9 +543,6 @@ static int Connection_ChangePassword(
             "Connection_ChangePassword(): change password") < 0)
         return -1;
 
-    Py_XDECREF(self->password);
-    Py_INCREF(newPasswordObj);
-    self->password = newPasswordObj;
     return 0;
 }
 
@@ -591,6 +578,7 @@ static int Connection_Connect(
     udt_Connection *self,               // connection
     ub4 mode,                           // mode to connect as
     int twophase,                       // allow two phase commit?
+    PyObject *passwordObj,              // password
     PyObject *newPasswordObj,           // new password (if desired)
     PyObject *moduleObj,                // session "module" value
     PyObject *actionObj,                // session "action" value
@@ -677,7 +665,7 @@ static int Connection_Connect(
     cxBuffer_Clear(&buffer);
 
     // set password in session handle
-    if (cxBuffer_FromObject(&buffer, self->password,
+    if (cxBuffer_FromObject(&buffer, passwordObj,
             self->environment->encoding) < 0)
         return -1;
     if (buffer.size > 0) {
@@ -693,7 +681,7 @@ static int Connection_Connect(
     }
     cxBuffer_Clear(&buffer);
 
-#ifdef OCI_ATTR_DRIVER_NAME
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11,1)
     status = OCIAttrSet(self->sessionHandle, OCI_HTYPE_SESSION,
             (text*) DRIVER_NAME, strlen(DRIVER_NAME), OCI_ATTR_DRIVER_NAME,
             self->environment->errorHandle);
@@ -711,7 +699,6 @@ static int Connection_Connect(
             "Connection_Connect(): set session handle") < 0)
         return -1;
 
-#ifdef ORACLE_10G
     if (moduleObj) {
         if (cxBuffer_FromObject(&buffer, moduleObj,
                 self->environment->encoding))
@@ -750,12 +737,11 @@ static int Connection_Connect(
                 "Connection_Connect(): set clientinfo") < 0)
             return -1;
     }
-#endif
 
     // if a new password has been specified, change it which will also
     // establish the session
     if (newPasswordObj)
-        return Connection_ChangePassword(self, self->password, newPasswordObj);
+        return Connection_ChangePassword(self, passwordObj, newPasswordObj);
 
     // begin the session
     Py_BEGIN_ALLOW_THREADS
@@ -774,7 +760,7 @@ static int Connection_Connect(
 
 #include "Cursor.c"
 #include "Callback.c"
-#ifdef ORACLE_10GR2
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(10, 2)
 #include "Subscription.c"
 #endif
 
@@ -873,7 +859,7 @@ static int Connection_Init(
     moduleObj = actionObj = clientinfoObj = NULL;
     threaded = twophase = events = purity = 0;
     encoding = nencoding = NULL;
-#ifdef ORACLE_11G
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
     purity = OCI_ATTR_PURITY_DEFAULT;
 #endif
     if (!PyArg_ParseTupleAndKeywords(args, keywordArgs,
@@ -910,24 +896,23 @@ static int Connection_Init(
     // keep a copy of the credentials
     Py_XINCREF(usernameObj);
     self->username = usernameObj;
-    Py_XINCREF(passwordObj);
-    self->password = passwordObj;
     Py_XINCREF(dsnObj);
     self->dsn = dsnObj;
 
     // perform some parsing, if necessary
-    if (Connection_SplitComponent(&self->username, &self->password, "/") < 0)
+    if (Connection_SplitComponent(&self->username, &passwordObj, "/") < 0)
         return -1;
-    if (Connection_SplitComponent(&self->password, &self->dsn, "@") < 0)
+    if (Connection_SplitComponent(&passwordObj, &self->dsn, "@") < 0)
         return -1;
 
     // handle the different ways of initializing the connection
     if (handle)
         return Connection_Attach(self, handle);
     if (pool || cclassObj)
-        return Connection_GetConnection(self, pool, cclassObj, purity);
-    return Connection_Connect(self, connectMode, twophase, newPasswordObj,
-            moduleObj, actionObj, clientinfoObj);
+        return Connection_GetConnection(self, pool, passwordObj, cclassObj,
+                purity);
+    return Connection_Connect(self, connectMode, twophase, passwordObj,
+            newPasswordObj, moduleObj, actionObj, clientinfoObj);
 }
 
 
@@ -961,7 +946,6 @@ static void Connection_Free(
     Py_CLEAR(self->environment);
     Py_CLEAR(self->sessionPool);
     Py_CLEAR(self->username);
-    Py_CLEAR(self->password);
     Py_CLEAR(self->dsn);
     Py_CLEAR(self->version);
     Py_CLEAR(self->inputTypeHandler);
@@ -1204,25 +1188,42 @@ static PyObject *Connection_Close(
         return NULL;
 
     // logoff of the server
-    if (self->sessionHandle) {
+    if (self->release) {
         Py_BEGIN_ALLOW_THREADS
-        status = OCISessionEnd(self->handle, self->environment->errorHandle,
-                self->sessionHandle, OCI_DEFAULT);
+        status = OCISessionRelease(self->handle,
+                self->environment->errorHandle, NULL, 0, OCI_DEFAULT);
         Py_END_ALLOW_THREADS
         if (Environment_CheckForError(self->environment, status,
-                "Connection_Close(): end session") < 0)
+                "Connection_Close(): release session") < 0)
             return NULL;
-        OCIHandleFree(self->handle, OCI_HTYPE_SVCCTX);
+        self->release = 0;
     }
-    self->handle = NULL;
-    if (self->serverHandle) {
-        status = OCIServerDetach(self->serverHandle,
+    else {
+        if (self->sessionHandle) {
+            Py_BEGIN_ALLOW_THREADS
+            status = OCISessionEnd(self->handle,
+                    self->environment->errorHandle, self->sessionHandle,
+                    OCI_DEFAULT);
+            Py_END_ALLOW_THREADS
+            if (Environment_CheckForError(self->environment, status,
+                    "Connection_Close(): end session") < 0)
+                return NULL;
+            OCIHandleFree(self->sessionHandle, OCI_HTYPE_SESSION);
+            self->sessionHandle = NULL;
+            OCIHandleFree(self->handle, OCI_HTYPE_SVCCTX);
+        }
+
+        if (self->serverHandle) {
+            status = OCIServerDetach(self->serverHandle,
                 self->environment->errorHandle, OCI_DEFAULT);
-        if (Environment_CheckForError(self->environment, status,
+            if (Environment_CheckForError(self->environment, status,
                 "Connection_Close(): server detach") < 0)
-            return NULL;
-        self->serverHandle = NULL;
+                return NULL;
+            OCIHandleFree(self->serverHandle, OCI_HTYPE_SERVER);
+            self->serverHandle = NULL;
+        }
     }
+    self->handle = NULL;
 
     Py_INCREF(Py_None);
     return Py_None;
@@ -1581,8 +1582,8 @@ static PyObject *Connection_ContextManagerExit(
 }
 
 
-#ifdef ORACLE_10GR2
-#if !defined(AIX5) || defined(ORACLE_11g)
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(10, 2)
+#if !defined(AIX5) || ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
 //-----------------------------------------------------------------------------
 // Connection_Ping()
 //   Makes a round trip call to the server to confirm that the connection and
@@ -1703,20 +1704,20 @@ static PyObject *Connection_Subscribe(
     PyObject* keywordArgs)              // keyword arguments
 {
     static char *keywordList[] = { "namespace", "protocol", "callback",
-            "timeout", "operations", "rowids", "port", NULL };
-    ub4 namespace, protocol, port, timeout, rowids, operations;
+            "timeout", "operations", "rowids", "port", "qos", "cqqos", NULL };
+    ub4 namespace, protocol, port, timeout, rowids, operations, qos, cqqos;
     PyObject *rowidsObj, *callback;
     int temp;
 
     // parse arguments
-    timeout = rowids = port = 0;
+    timeout = rowids = port = qos = cqqos = 0;
     rowidsObj = callback = NULL;
     namespace = OCI_SUBSCR_NAMESPACE_DBCHANGE;
     protocol = OCI_SUBSCR_PROTO_OCI;
     operations = OCI_OPCODE_ALLOPS;
-    if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "|iiOiiOi", keywordList,
+    if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "|iiOiiOiii", keywordList,
             &namespace, &protocol, &callback, &timeout, &operations,
-            &rowidsObj, &port))
+            &rowidsObj, &port, &qos, &cqqos))
         return NULL;
 
     // set the value for rowids
@@ -1729,7 +1730,7 @@ static PyObject *Connection_Subscribe(
     }
 
     return (PyObject*) Subscription_New(self, namespace, protocol, port,
-            callback, timeout, operations, rowids);
+            callback, timeout, operations, qos, cqqos, rowids);
 }
 #endif
 

+ 204 - 24
desktop/core/ext-py/cx_Oracle-5.1.2/Cursor.c → desktop/core/ext-py/cx_Oracle-5.2.1/Cursor.c

@@ -50,7 +50,7 @@ static PyObject *Cursor_Close(udt_Cursor*, PyObject*);
 static PyObject *Cursor_CallFunc(udt_Cursor*, PyObject*, PyObject*);
 static PyObject *Cursor_CallProc(udt_Cursor*, PyObject*, PyObject*);
 static PyObject *Cursor_Execute(udt_Cursor*, PyObject*, PyObject*);
-static PyObject *Cursor_ExecuteMany(udt_Cursor*, PyObject*);
+static PyObject *Cursor_ExecuteMany(udt_Cursor*, PyObject*, PyObject*);
 static PyObject *Cursor_ExecuteManyPrepared(udt_Cursor*, PyObject*);
 static PyObject *Cursor_FetchOne(udt_Cursor*, PyObject*);
 static PyObject *Cursor_FetchMany(udt_Cursor*, PyObject*, PyObject*);
@@ -67,6 +67,10 @@ static PyObject *Cursor_GetDescription(udt_Cursor*, void*);
 static PyObject *Cursor_New(PyTypeObject*, PyObject*, PyObject*);
 static int Cursor_Init(udt_Cursor*, PyObject*, PyObject*);
 static PyObject *Cursor_Repr(udt_Cursor*);
+static PyObject* Cursor_GetBatchErrors(udt_Cursor*);
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(12,1)
+static PyObject *Cursor_GetArrayDMLRowCounts(udt_Cursor*);
+#endif
 
 
 //-----------------------------------------------------------------------------
@@ -84,7 +88,8 @@ static PyMethodDef g_CursorMethods[] = {
     { "parse", (PyCFunction) Cursor_Parse, METH_VARARGS },
     { "setinputsizes", (PyCFunction) Cursor_SetInputSizes,
               METH_VARARGS | METH_KEYWORDS },
-    { "executemany", (PyCFunction) Cursor_ExecuteMany, METH_VARARGS },
+    { "executemany", (PyCFunction) Cursor_ExecuteMany,
+              METH_VARARGS | METH_KEYWORDS },
     { "callproc", (PyCFunction) Cursor_CallProc,
               METH_VARARGS  | METH_KEYWORDS },
     { "callfunc", (PyCFunction) Cursor_CallFunc,
@@ -96,6 +101,11 @@ static PyMethodDef g_CursorMethods[] = {
     { "arrayvar", (PyCFunction) Cursor_ArrayVar, METH_VARARGS },
     { "bindnames", (PyCFunction) Cursor_BindNames, METH_NOARGS },
     { "close", (PyCFunction) Cursor_Close, METH_NOARGS },
+    { "getbatcherrors", (PyCFunction) Cursor_GetBatchErrors, METH_NOARGS },
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(12,1)
+    { "getarraydmlrowcounts", (PyCFunction) Cursor_GetArrayDMLRowCounts,
+              METH_NOARGS },
+#endif    
     { NULL, NULL }
 };
 
@@ -135,7 +145,7 @@ static PyGetSetDef g_CursorCalcMembers[] = {
 //-----------------------------------------------------------------------------
 static PyTypeObject g_CursorType = {
     PyVarObject_HEAD_INIT(NULL, 0)
-    "OracleCursor",                     // tp_name
+    "cx_Oracle.Cursor",                 // tp_name
     sizeof(udt_Cursor),                 // tp_basicsize
     0,                                  // tp_itemsize
     (destructor) Cursor_Free,           // tp_dealloc
@@ -216,7 +226,7 @@ static int Cursor_FreeHandle(
                     self->environment, status, "Cursor_FreeHandle()") < 0)
                 return -1;
         } else if (self->connection->handle != 0) {
-            if (!cxBuffer_FromObject(&buffer, self->statementTag,
+            if (cxBuffer_FromObject(&buffer, self->statementTag,
                     self->environment->encoding) < 0)
                 return (raiseException) ? -1 : 0;
             status = OCIStmtRelease(self->handle,
@@ -528,14 +538,19 @@ static int Cursor_SetRowCount(
 static void Cursor_SetErrorOffset(
     udt_Cursor *self)                   // cursor to get the error offset from
 {
-    PyObject *type, *value, *traceback;
+    PyObject *type, *value, *traceback, *args;
     udt_Error *error;
+    ub2 offset = 0;
 
     PyErr_Fetch(&type, &value, &traceback);
     if (type == g_DatabaseErrorException) {
-        error = (udt_Error*) value;
-        OCIAttrGet(self->handle, OCI_HTYPE_STMT, &error->offset, 0,
+        PyErr_NormalizeException(&type, &value, &traceback);
+        OCIAttrGet(self->handle, OCI_HTYPE_STMT, &offset, 0,
                 OCI_ATTR_PARSE_ERROR_OFFSET, self->environment->errorHandle);
+        args = PyObject_GetAttrString(value, "args");
+        error = (udt_Error*) PyTuple_GET_ITEM(args, 0);
+        error->offset = offset;
+        Py_DECREF(args);
     }
     PyErr_Restore(type, value, traceback);
 }
@@ -548,7 +563,8 @@ static void Cursor_SetErrorOffset(
 //-----------------------------------------------------------------------------
 static int Cursor_InternalExecute(
     udt_Cursor *self,                   // cursor to perform the execute on
-    ub4 numIters)                       // number of iterations to execute
+    ub4 numIters,                       // number of iterations to execute
+    ub4 additionalMode)                 // additional modes to set
 {
     sword status;
     ub4 mode;
@@ -556,6 +572,7 @@ static int Cursor_InternalExecute(
     if (self->connection->autocommit)
         mode = OCI_COMMIT_ON_SUCCESS;
     else mode = OCI_DEFAULT;
+    mode |= additionalMode;
 
     Py_BEGIN_ALLOW_THREADS
     status = OCIStmtExecute(self->connection->handle, self->handle,
@@ -693,18 +710,14 @@ static PyObject *Cursor_ItemDescriptionHelper(
     type = (PyObject*) varType->pythonType;
     if (type == (PyObject*) &g_StringVarType)
         displaySize = charSize;
-#if PY_MAJOR_VERSION < 3
-    else if (type == (PyObject*) &g_UnicodeVarType)
+    else if (type == (PyObject*) &g_NCharVarType)
         displaySize = charSize;
-#endif
     else if (type == (PyObject*) &g_BinaryVarType)
         displaySize = internalSize;
     else if (type == (PyObject*) &g_FixedCharVarType)
         displaySize = charSize;
-#if PY_MAJOR_VERSION < 3
-    else if (type == (PyObject*) &g_FixedUnicodeVarType)
+    else if (type == (PyObject*) &g_FixedNCharVarType)
         displaySize = charSize;
-#endif
     else if (type == (PyObject*) &g_NumberVarType) {
         if (precision) {
             displaySize = precision + 1;
@@ -1300,7 +1313,7 @@ static int Cursor_CallCalculateSize(
 
     // assume up to 9 characters for each positional argument
     // this allows up to four digits for the placeholder if the bind variale
-    // is a boolean value
+    // is a boolean value (prior to Oracle 12.1)
     if (listOfArguments) {
         numPositionalArgs = PySequence_Size(listOfArguments);
         if (numPositionalArgs < 0)
@@ -1310,7 +1323,7 @@ static int Cursor_CallCalculateSize(
 
     // assume up to 15 characters for each keyword argument
     // this allows up to four digits for the placeholder if the bind variable
-    // is a boolean value
+    // is a boolean value (prior to Oracle 12.1)
     if (keywordArguments) {
         numKeywordArgs = PyDict_Size(keywordArguments);
         if (numKeywordArgs < 0)
@@ -1387,8 +1400,10 @@ static int Cursor_CallBuildStatement(
             if (i > 0)
                 *ptr++ = ',';
             ptr += sprintf(ptr, ":%d", argNum++);
+#if ORACLE_VERSION_HEX < ORACLE_VERSION(12, 1)
             if (PyBool_Check(PySequence_Fast_GET_ITEM(positionalArgs, i)))
                 ptr += sprintf(ptr, " = 1");
+#endif
         }
         Py_DECREF(positionalArgs);
     }
@@ -1408,8 +1423,10 @@ static int Cursor_CallBuildStatement(
             if ((argNum > 1 && !returnValue) || (argNum > 2 && returnValue))
                 *ptr++ = ',';
             ptr += sprintf(ptr, "%%s => :%d", argNum++);
+#if ORACLE_VERSION_HEX < ORACLE_VERSION(12, 1)
             if (PyBool_Check(value))
                 ptr += sprintf(ptr, " = 1");
+#endif
         }
     }
 
@@ -1636,7 +1653,7 @@ static PyObject *Cursor_Execute(
 
     // execute the statement
     isQuery = (self->statementType == OCI_STMT_SELECT);
-    if (Cursor_InternalExecute(self, isQuery ? 0 : 1) < 0)
+    if (Cursor_InternalExecute(self, isQuery ? 0 : 1, 0) < 0)
         return NULL;
 
     // perform defines, if necessary
@@ -1666,20 +1683,33 @@ static PyObject *Cursor_Execute(
 //-----------------------------------------------------------------------------
 static PyObject *Cursor_ExecuteMany(
     udt_Cursor *self,                   // cursor to execute
-    PyObject *args)                     // arguments
+    PyObject *args,                     // arguments
+    PyObject *keywordArgs)              // keyword arguments
 {
+    static char *keywordList[] = { "statement", "parameters", "batcherrors",
+            "arraydmlrowcounts", NULL };
+    int i, numRows, arrayDMLRowCountsEnabled = 0, batchErrorsEnabled = 0;
     PyObject *arguments, *listOfArguments, *statement;
-    int i, numRows;
+    ub4 additionalMode = 0;
 
-    // expect statement text (optional) plus list of mappings
-    if (!PyArg_ParseTuple(args, "OO!", &statement, &PyList_Type,
-            &listOfArguments))
+    // expect statement text (optional) plus list of sequences/mappings
+    if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "OO!|ii", keywordList,
+            &statement, &PyList_Type, &listOfArguments,
+            &batchErrorsEnabled, &arrayDMLRowCountsEnabled))
         return NULL;
 
     // make sure the cursor is open
     if (Cursor_IsOpen(self) < 0)
         return NULL;
 
+    // define additional mode, if needed
+    if (batchErrorsEnabled)
+        additionalMode |= OCI_BATCH_ERRORS;
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(12,1)
+    if (arrayDMLRowCountsEnabled)
+        additionalMode |= OCI_RETURN_ROW_COUNT_ARRAY;
+#endif
+
     // prepare the statement
     if (Cursor_InternalPrepare(self, statement, NULL) < 0)
         return NULL;
@@ -1710,7 +1740,7 @@ static PyObject *Cursor_ExecuteMany(
     // execute the statement, but only if the number of rows is greater than
     // zero since Oracle raises an error otherwise
     if (numRows > 0) {
-        if (Cursor_InternalExecute(self, numRows) < 0)
+        if (Cursor_InternalExecute(self, numRows, additionalMode) < 0)
             return NULL;
     }
 
@@ -1756,7 +1786,7 @@ static PyObject *Cursor_ExecuteManyPrepared(
         return NULL;
 
     // execute the statement
-    if (Cursor_InternalExecute(self, numIters) < 0)
+    if (Cursor_InternalExecute(self, numIters, 0) < 0)
         return NULL;
 
     Py_INCREF(Py_None);
@@ -2270,3 +2300,153 @@ static PyObject *Cursor_GetNext(
     return NULL;
 }
 
+
+//-----------------------------------------------------------------------------
+// Cursor_GetBatchErrorsHelper()
+//    Populates the list with the error objects.
+//-----------------------------------------------------------------------------
+static int Cursor_GetBatchErrorsHelper(
+    udt_Cursor *self,                   // cursor object
+    PyObject *listObj,                  // list object to populate
+    ub4 numBatchErrors,                 // number of batch errors
+    OCIError *errorHandle,              // first error handle
+    OCIError *localErrorHandle)         // second (local) error handle
+{
+    udt_Error *errorObj;
+    sb4 rowOffset;
+    sword status;
+    ub4 i;
+
+    for (i = 0; i < numBatchErrors; i++) {
+
+        // fetch batch error for iteration
+        status = OCIParamGet(self->environment->errorHandle, OCI_HTYPE_ERROR,
+                errorHandle, (void **) &localErrorHandle, i);
+        if (Error_Check(self->environment, status, 
+                "Cursor_GetBatchErrorsHelper(): get parameter",
+                errorHandle) < 0)
+            return -1;
+
+        // determine row offset
+        status = OCIAttrGet(localErrorHandle, OCI_HTYPE_ERROR, &rowOffset, 0,
+                OCI_ATTR_DML_ROW_OFFSET, errorHandle);
+        if (Error_Check(self->environment, status, 
+                "Cursor_GetBatchErrorsHelper(): get row offset",
+                errorHandle) < 0)
+            return -1;
+
+        // determine error object
+        errorObj = Error_New(self->environment, "Batch Error", OCI_HTYPE_ERROR,
+                localErrorHandle);
+        if (!errorObj)
+            return -1;
+        errorObj->offset = rowOffset;
+
+        // populate list
+        PyList_SET_ITEM(listObj, i, (PyObject*) errorObj);
+
+    }
+
+    return 0;
+}
+
+
+//-----------------------------------------------------------------------------
+// Cursor_GetBatchErrors()
+//    Returns a list of batch error objects.
+//-----------------------------------------------------------------------------
+static PyObject* Cursor_GetBatchErrors(
+    udt_Cursor *self)
+{
+    OCIError *errorHandle, *localErrorHandle;
+    ub4 numBatchErrors;
+    PyObject *result;
+    sword status;
+
+    // determine the number of errors
+    status = OCIAttrGet(self->handle, (ub4) OCI_HTYPE_STMT,
+            (ub4 *) &numBatchErrors, 0, OCI_ATTR_NUM_DML_ERRORS,
+            self->environment->errorHandle);
+    if (Environment_CheckForError(self->environment, status,
+            "Cursor_GetBatchErrors(): get number of errors") < 0)
+        return NULL;
+
+    // create list and if no errors, simply return immediately
+    result = PyList_New(numBatchErrors);
+    if (!result)
+        return NULL;
+    if (numBatchErrors == 0)
+        return result;
+
+    // allocate first error handle
+    status = OCIHandleAlloc((void *) self->environment->handle,
+            (void **) &errorHandle, (ub4) OCI_HTYPE_ERROR, 0, (void *) 0);
+    if (Environment_CheckForError(self->environment, status,
+            "Cursor_GetBatchErrors(): allocate first error handle") < 0) {
+        Py_DECREF(result);
+        return NULL;
+    }
+
+    // allocate second (local) error handle
+    status = OCIHandleAlloc((void *) self->environment->handle,
+            (void **) &localErrorHandle, (ub4) OCI_HTYPE_ERROR, 0, (void *) 0);
+    if (Environment_CheckForError(self->environment, status,
+            "Cursor_GetBatchErrors(): allocate second error handle") < 0) {
+        Py_DECREF(result);
+        OCIHandleFree(errorHandle, OCI_HTYPE_ERROR);
+        return NULL;
+    }
+
+    // create error objects
+    if (Cursor_GetBatchErrorsHelper(self, result, numBatchErrors, errorHandle,
+            localErrorHandle) < 0) {
+        Py_DECREF(result);
+        result = NULL;
+    }
+
+    // cleanup and return result
+    OCIHandleFree(errorHandle, OCI_HTYPE_ERROR);
+    OCIHandleFree(localErrorHandle, OCI_HTYPE_ERROR);
+    return result;
+}
+
+
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(12,1)
+//-----------------------------------------------------------------------------
+// Cursor_GetArrayDMLRowCounts
+//    Populates the array dml row count list. Raises error for failure.
+//-----------------------------------------------------------------------------
+static PyObject* Cursor_GetArrayDMLRowCounts(
+    udt_Cursor *self)
+{
+    PyObject *result, *element;
+    ub8 *arrayDMLRowCount;
+    ub4 rowCountArraySize;
+    sword status;
+    int i;
+ 
+    // get number of iterations 
+    status = OCIAttrGet(self->handle, (ub4) OCI_HTYPE_STMT,
+            (ub8 *) &arrayDMLRowCount, &rowCountArraySize,
+            OCI_ATTR_DML_ROW_COUNT_ARRAY, self->environment->errorHandle);
+    if (Environment_CheckForError(self->environment, status,
+            "Cursor_GetArrayDMLRowCounts(): row count") < 0)
+        return NULL;
+
+    // return array
+    result = PyList_New(rowCountArraySize);
+    if (!result)
+        return NULL;
+    for (i = 0; i < rowCountArraySize; i++) {
+        element = PyLong_FromUnsignedLong(arrayDMLRowCount[i]);
+        if (!element) {
+            Py_DECREF(result);
+            return NULL;
+        }
+        PyList_SET_ITEM(result, i, element);
+    }
+
+    return result;
+}
+#endif
+

+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/CursorVar.c → desktop/core/ext-py/cx_Oracle-5.2.1/CursorVar.c


+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/DateTimeVar.c → desktop/core/ext-py/cx_Oracle-5.2.1/DateTimeVar.c


+ 15 - 92
desktop/core/ext-py/cx_Oracle-5.1.2/Environment.c → desktop/core/ext-py/cx_Oracle-5.2.1/Environment.c

@@ -14,19 +14,12 @@ typedef struct {
     int fixedWidth;
     char *encoding;
     char *nencoding;
-    ub4 maxStringBytes;
     PyObject *cloneEnv;
     udt_Buffer numberToStringFormatBuffer;
     udt_Buffer numberFromStringFormatBuffer;
     udt_Buffer nlsNumericCharactersBuffer;
 } udt_Environment;
 
-//-----------------------------------------------------------------------------
-// maximum number of characters/bytes applicable to strings/binaries
-//-----------------------------------------------------------------------------
-#define MAX_STRING_CHARS                4000
-#define MAX_BINARY_BYTES                4000
-
 //-----------------------------------------------------------------------------
 // forward declarations
 //-----------------------------------------------------------------------------
@@ -72,6 +65,7 @@ static udt_Environment *Environment_New(
     OCIEnv *handle)                     // handle to use
 {
     udt_Environment *env;
+    udt_Error *errorObj;
     sword status;
 
     // create a new object for the Oracle environment
@@ -82,7 +76,6 @@ static udt_Environment *Environment_New(
     env->errorHandle = NULL;
     env->fixedWidth = 1;
     env->maxBytesPerCharacter = 1;
-    env->maxStringBytes = MAX_STRING_CHARS;
     env->cloneEnv = NULL;
     cxBuffer_Init(&env->numberToStringFormatBuffer);
     cxBuffer_Init(&env->numberFromStringFormatBuffer);
@@ -91,8 +84,14 @@ static udt_Environment *Environment_New(
     // create the error handle
     status = OCIHandleAlloc(handle, (dvoid**) &env->errorHandle,
             OCI_HTYPE_ERROR, 0, 0);
-    if (Environment_CheckForError(env, status,
-            "Environment_New(): create error handle") < 0) {
+    if (status != OCI_SUCCESS) {
+        errorObj = Error_New(env, "Environment_New(): create error handle",
+                OCI_HTYPE_ENV, handle);
+        if (!errorObj) {
+            Py_DECREF(env);
+            return NULL;
+        }
+        PyErr_SetObject(g_DatabaseErrorException, (PyObject*) errorObj);
         Py_DECREF(env);
         return NULL;
     }
@@ -169,7 +168,11 @@ static int Environment_SetBuffer(
     obj = cxString_FromAscii(value);
     if (!obj)
         return -1;
-    return cxBuffer_FromObject(buf, obj, encoding);
+    if (cxBuffer_FromObject(buf, obj, encoding)<0)
+        return -1;
+    Py_CLEAR(obj);
+
+    return 0;
 }
 
 
@@ -192,10 +195,8 @@ static udt_Environment *Environment_NewFromScratch(
     mode = OCI_OBJECT;
     if (threaded)
         mode |= OCI_THREADED;
-#ifdef OCI_EVENTS
     if (events)
         mode |= OCI_EVENTS;
-#endif
 
     // create the new environment handle
     status = OCIEnvNlsCreate(&handle, mode, NULL, NULL, NULL, NULL, 0, NULL, 0,
@@ -222,7 +223,6 @@ static udt_Environment *Environment_NewFromScratch(
         Py_DECREF(env);
         return NULL;
     }
-    env->maxStringBytes = MAX_STRING_CHARS * env->maxBytesPerCharacter;
 
     // acquire whether character set is fixed width
     status = OCINlsNumericInfoGet(env->handle, env->errorHandle,
@@ -271,7 +271,6 @@ static udt_Environment *Environment_Clone(
     if (!env)
         return NULL;
     env->maxBytesPerCharacter = cloneEnv->maxBytesPerCharacter;
-    env->maxStringBytes = cloneEnv->maxStringBytes;
     env->fixedWidth = cloneEnv->fixedWidth;
     Py_INCREF(cloneEnv);
     env->cloneEnv = (PyObject*) cloneEnv;
@@ -313,67 +312,6 @@ static void Environment_Free(
 }
 
 
-//-----------------------------------------------------------------------------
-// Environment_RaiseError()
-//   Reads the error that was caused by the last Oracle statement and raise an
-// exception for Python. At this point it is assumed that the Oracle
-// environment is fully initialized.
-//-----------------------------------------------------------------------------
-static int Environment_RaiseError(
-    udt_Environment *environment,       // environment to raise error for
-    const char *context)                // context in which error occurred
-{
-    PyObject *exceptionType;
-    udt_Error *error;
-
-    error = Error_New(environment, context, 1);
-    if (error) {
-        switch (error->code) {
-            case 1:
-            case 1400:
-            case 2290:
-            case 2291:
-            case 2292:
-                exceptionType = g_IntegrityErrorException;
-                break;
-            case 22:
-            case 378:
-            case 602:
-            case 603:
-            case 604:
-            case 609:
-            case 1012:
-            case 1013:
-            case 1033:
-            case 1034:
-            case 1041:
-            case 1043:
-            case 1089:
-            case 1090:
-            case 1092:
-            case 3113:
-            case 3114:
-            case 3122:
-            case 3135:
-            case 12153:
-            case 12203:
-            case 12500:
-            case 12571:
-            case 27146:
-            case 28511:
-                exceptionType = g_OperationalErrorException;
-                break;
-            default:
-                exceptionType = g_DatabaseErrorException;
-                break;
-        }
-        PyErr_SetObject(exceptionType, (PyObject*) error);
-        Py_DECREF(error);
-    }
-    return -1;
-}
-
-
 //-----------------------------------------------------------------------------
 // Environment_CheckForError()
 //   Check for an error in the last call and if an error has occurred, raise a
@@ -384,21 +322,6 @@ static int Environment_CheckForError(
     sword status,                       // status of last call
     const char *context)                // context
 {
-    udt_Error *error;
-
-    if (status != OCI_SUCCESS && status != OCI_SUCCESS_WITH_INFO) {
-        if (status != OCI_INVALID_HANDLE)
-            return Environment_RaiseError(environment, context);
-        error = Error_New(environment, context, 0);
-        if (!error)
-            return -1;
-        error->code = 0;
-        error->message = cxString_FromAscii("Invalid handle!");
-        if (!error->message)
-            Py_DECREF(error);
-        else PyErr_SetObject(g_DatabaseErrorException, (PyObject*) error);
-        return -1;
-    }
-    return 0;
+    return Error_Check(environment, status, context, environment->errorHandle);
 }
 

+ 107 - 13
desktop/core/ext-py/cx_Oracle-5.1.2/Error.c → desktop/core/ext-py/cx_Oracle-5.2.1/Error.c

@@ -9,12 +9,22 @@
 typedef struct {
     PyObject_HEAD
     sb4 code;
-    ub4 offset;
+    ub2 offset;
     PyObject *message;
     const char *context;
 } udt_Error;
 
 
+//-----------------------------------------------------------------------------
+// maximum size of error message string in bytes
+//-----------------------------------------------------------------------------
+#ifdef OCI_ERROR_MAXMSG_SIZE2
+#define ERROR_BUF_SIZE                OCI_ERROR_MAXMSG_SIZE2
+#else
+#define ERROR_BUF_SIZE                OCI_ERROR_MAXMSG_SIZE
+#endif
+
+
 //-----------------------------------------------------------------------------
 // forward declarations
 //-----------------------------------------------------------------------------
@@ -78,12 +88,11 @@ static PyTypeObject g_ErrorType = {
 static udt_Error *Error_New(
     udt_Environment *environment,       // environment object
     const char *context,                // context in which error occurred
-    int retrieveError)                  // retrieve error from OCI?
+    ub4 handleType,                     // handle type
+    dvoid* handle)                      // handle
 {
-    char errorText[4096];
+    char errorText[ERROR_BUF_SIZE];
     udt_Error *self;
-    ub4 handleType;
-    dvoid *handle;
     sword status;
 #if PY_MAJOR_VERSION >= 3
     Py_ssize_t len;
@@ -93,14 +102,8 @@ static udt_Error *Error_New(
     if (!self)
         return NULL;
     self->context = context;
-    if (retrieveError) {
-        if (environment->errorHandle) {
-            handle = environment->errorHandle;
-            handleType = OCI_HTYPE_ERROR;
-        } else {
-            handle = environment->handle;
-            handleType = OCI_HTYPE_ENV;
-        }
+
+    if (handle) {
         status = OCIErrorGet(handle, 1, 0, &self->code,
                 (unsigned char*) errorText, sizeof(errorText), handleType);
         if (status != OCI_SUCCESS) {
@@ -151,3 +154,94 @@ static PyObject *Error_Str(
     return cxString_FromAscii("");
 }
 
+
+//-----------------------------------------------------------------------------
+// Error_Raise()
+//   Reads the error that was caused by the last Oracle statement and raise an
+// exception for Python. Return -1 as a convenience to the caller.
+//-----------------------------------------------------------------------------
+static int Error_Raise(
+    udt_Environment *environment,       // environment object
+    const char *context,                // context in which error occurred
+    OCIError* errorHandle)              // handle
+{
+    PyObject *exceptionType;
+    udt_Error *error;
+
+    error = Error_New(environment, context, OCI_HTYPE_ERROR, errorHandle);
+    if (error) {
+        switch (error->code) {
+            case 1:
+            case 1400:
+            case 2290:
+            case 2291:
+            case 2292:
+                exceptionType = g_IntegrityErrorException;
+                break;
+            case 22:
+            case 378:
+            case 602:
+            case 603:
+            case 604:
+            case 609:
+            case 1012:
+            case 1013:
+            case 1033:
+            case 1034:
+            case 1041:
+            case 1043:
+            case 1089:
+            case 1090:
+            case 1092:
+            case 3113:
+            case 3114:
+            case 3122:
+            case 3135:
+            case 12153:
+            case 12203:
+            case 12500:
+            case 12571:
+            case 27146:
+            case 28511:
+                exceptionType = g_OperationalErrorException;
+                break;
+            default:
+                exceptionType = g_DatabaseErrorException;
+                break;
+        }
+        PyErr_SetObject(exceptionType, (PyObject*) error);
+        Py_DECREF(error);
+    }
+    return -1;
+}
+
+
+//-----------------------------------------------------------------------------
+// Error_Check()
+//   Check for an error in the last call and if an error has occurred, raise a
+// Python exception.
+//-----------------------------------------------------------------------------
+static int Error_Check(
+    udt_Environment *environment,       // environment to raise error in
+    sword status,                       // status of last call
+    const char *context,                // context
+    OCIError *errorHandle)              // error handle to use
+{
+    udt_Error *error;
+
+    if (status != OCI_SUCCESS && status != OCI_SUCCESS_WITH_INFO) {
+        if (status != OCI_INVALID_HANDLE)
+            return Error_Raise(environment, context, errorHandle);
+        error = Error_New(environment, context, 0, NULL);
+        if (!error)
+            return -1;
+        error->code = 0;
+        error->message = cxString_FromAscii("Invalid handle!");
+        if (!error->message)
+            Py_DECREF(error);
+        else PyErr_SetObject(g_DatabaseErrorException, (PyObject*) error);
+        return -1;
+    }
+    return 0;
+}
+

+ 55 - 48
desktop/core/ext-py/cx_Oracle-5.1.2/ExternalLobVar.c → desktop/core/ext-py/cx_Oracle-5.2.1/ExternalLobVar.c

@@ -165,13 +165,22 @@ static int ExternalLobVar_Verify(
 static int ExternalLobVar_InternalRead(
     udt_ExternalLobVar *var,            // variable to return the size of
     char *buffer,                       // buffer in which to put data
-    ub4 bufferSize,                     // size of buffer
-    ub4 *length,                        // length of data (IN/OUT)
-    int offset)                         // offset
+    oraub8 bufferSize,                  // size of buffer
+    oraub8 *length,                     // length of data (IN/OUT)
+    oraub8 offset)                      // offset
 {
+    oraub8 lengthInBytes, lengthInChars;
     ub2 charsetId;
     sword status;
 
+    if (var->lobVar->type == &vt_NCLOB || var->lobVar->type == &vt_CLOB) {
+        lengthInBytes = 0;
+        lengthInChars = *length;
+    } else {
+        lengthInChars = 0;
+        lengthInBytes = *length;
+    }
+
     if (var->lobVar->isFile) {
         Py_BEGIN_ALLOW_THREADS
         status = OCILobFileOpen(var->lobVar->connection->handle,
@@ -187,18 +196,24 @@ static int ExternalLobVar_InternalRead(
     if (var->lobVar->type == &vt_NCLOB)
         charsetId = OCI_UTF16ID;
     else charsetId = 0;
-    status = OCILobRead(var->lobVar->connection->handle,
-            var->lobVar->environment->errorHandle,
-            var->lobVar->data[var->pos], length, offset, buffer,
-            bufferSize, NULL, NULL, charsetId, var->lobVar->type->charsetForm); 
+    status = OCILobRead2(var->lobVar->connection->handle,
+            var->lobVar->environment->errorHandle, var->lobVar->data[var->pos],
+            &lengthInBytes, &lengthInChars, offset, buffer, bufferSize,
+            OCI_ONE_PIECE, NULL, NULL, charsetId,
+            var->lobVar->type->charsetForm);
     Py_END_ALLOW_THREADS
     if (Environment_CheckForError(var->lobVar->environment, status,
             "ExternalLobVar_LobRead()") < 0) {
-        OCILobFileClose(var->lobVar->connection->handle,
-                var->lobVar->environment->errorHandle,
-                var->lobVar->data[var->pos]);
+        if (var->lobVar->isFile) {
+            Py_BEGIN_ALLOW_THREADS
+            OCILobFileClose(var->lobVar->connection->handle,
+                    var->lobVar->environment->errorHandle,
+                    var->lobVar->data[var->pos]);
+            Py_END_ALLOW_THREADS
+        }
         return -1;
     }
+    *length = lengthInBytes;
 
     if (var->lobVar->isFile) {
         Py_BEGIN_ALLOW_THREADS
@@ -220,21 +235,21 @@ static int ExternalLobVar_InternalRead(
 //   Return the size of the LOB variable for internal comsumption.
 //-----------------------------------------------------------------------------
 static int ExternalLobVar_InternalSize(
-    udt_ExternalLobVar *var)            // variable to return the size of
+    udt_ExternalLobVar *var,            // variable to return the size of
+    oraub8 *length)                     // length to return
 {
     sword status;
-    ub4 length;
 
     Py_BEGIN_ALLOW_THREADS
-    status = OCILobGetLength(var->lobVar->connection->handle,
+    status = OCILobGetLength2(var->lobVar->connection->handle,
             var->lobVar->environment->errorHandle,
-            var->lobVar->data[var->pos], &length);
+            var->lobVar->data[var->pos], length);
     Py_END_ALLOW_THREADS
     if (Environment_CheckForError(var->lobVar->environment, status,
             "ExternalLobVar_InternalSize()") < 0)
         return -1;
 
-    return length;
+    return 0;
 }
 
 
@@ -244,23 +259,20 @@ static int ExternalLobVar_InternalSize(
 //-----------------------------------------------------------------------------
 static PyObject *ExternalLobVar_Value(
     udt_ExternalLobVar *var,            // variable to return the size of
-    int offset,                         // offset into LOB
-    int amount)                         // amount to read from LOB
+    oraub8 offset,                      // offset into LOB
+    oraub8 amount)                      // amount to read from LOB
 {
-    ub4 length, bufferSize;
+    oraub8 length, bufferSize;
     PyObject *result;
     char *buffer;
 
     // modify the arguments
-    if (offset < 0)
-        offset = 1;
-    if (amount < 0) {
-        amount = ExternalLobVar_InternalSize(var);
-        if (amount < 0)
+    if (amount == (oraub8)(-1)) {
+        if (ExternalLobVar_InternalSize(var, &amount) < 0)
             return NULL;
-        amount = amount - offset + 1;
-        if (amount <= 0)
-            amount = 1;
+        if (amount >= offset)
+            amount = amount - offset + 1;
+        else amount = 1;
     }
     length = amount;
     if (var->lobVar->type == &vt_CLOB)
@@ -281,12 +293,10 @@ static PyObject *ExternalLobVar_Value(
 
     // return the result
     if (var->lobVar->type == &vt_CLOB) {
-        if (var->lobVar->environment->fixedWidth)
-            length = length * var->lobVar->environment->maxBytesPerCharacter;
         result = cxString_FromEncodedString(buffer, length,
                 var->lobVar->environment->encoding);
     } else if (var->lobVar->type == &vt_NCLOB) {
-        result = PyUnicode_DecodeUTF16(buffer, length * 2, NULL, NULL);
+        result = PyUnicode_DecodeUTF16(buffer, length, NULL, NULL);
     } else {
         result = PyBytes_FromStringAndSize(buffer, length);
     }
@@ -303,14 +313,13 @@ static PyObject *ExternalLobVar_Size(
     udt_ExternalLobVar *var,            // variable to return the size of
     PyObject *args)                     // arguments
 {
-    int length;
+    oraub8 length;
 
     if (ExternalLobVar_Verify(var) < 0)
         return NULL;
-    length = ExternalLobVar_InternalSize(var);
-    if (length < 0)
+    if (ExternalLobVar_InternalSize(var, &length) < 0)
         return NULL;
-    return PyInt_FromLong(length);
+    return PyLong_FromUnsignedLong(length);
 }
 
 
@@ -374,11 +383,12 @@ static PyObject *ExternalLobVar_Read(
     PyObject *keywordArgs)              // keyword arguments
 {
     static char *keywordList[] = { "offset", "amount", NULL };
-    int offset, amount;
+    oraub8 offset, amount;
 
     // offset and amount are expected, both optional
-    offset = amount = -1;
-    if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "|ii", keywordList,
+    offset = 1;
+    amount = (oraub8)(-1);
+    if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "|KK", keywordList,
             &offset, &amount))
         return NULL;
 
@@ -397,7 +407,7 @@ static PyObject *ExternalLobVar_Str(
 {
     if (ExternalLobVar_Verify(var) < 0)
         return NULL;
-    return ExternalLobVar_Value(var, 1, -1);
+    return ExternalLobVar_Value(var, 1, (oraub8)(-1));
 }
 
 
@@ -411,17 +421,14 @@ static PyObject *ExternalLobVar_Write(
     PyObject *keywordArgs)              // keyword arguments
 {
     static char *keywordList[] = { "data", "offset", NULL };
+    oraub8 amount, offset;
     PyObject *dataObj;
-    ub4 amount;
-    int offset;
 
-    // buffer and offset are expected, offset is optional
-    offset = -1;
-    if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "O|i", keywordList,
+    // buffer is expected, offset is optional
+    offset = 1;
+    if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "O|K", keywordList,
             &dataObj, &offset))
         return NULL;
-    if (offset < 0)
-        offset = 1;
 
     // perform the write, if possible
     if (ExternalLobVar_Verify(var) < 0)
@@ -430,7 +437,7 @@ static PyObject *ExternalLobVar_Write(
         return NULL;
 
     // return the result
-    return PyInt_FromLong(amount);
+    return PyLong_FromUnsignedLong(amount);
 }
 
 
@@ -444,12 +451,12 @@ static PyObject *ExternalLobVar_Trim(
     PyObject *keywordArgs)              // keyword arguments
 {
     static char *keywordList[] = { "newSize", NULL };
+    oraub8 newSize;
     sword status;
-    ub4 newSize;
 
     // buffer and offset are expected, offset is optional
     newSize = 0;
-    if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "|i", keywordList,
+    if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "|K", keywordList,
             &newSize))
         return NULL;
 
@@ -457,7 +464,7 @@ static PyObject *ExternalLobVar_Trim(
     if (ExternalLobVar_Verify(var) < 0)
         return NULL;
     Py_BEGIN_ALLOW_THREADS
-    status = OCILobTrim(var->lobVar->connection->handle,
+    status = OCILobTrim2(var->lobVar->connection->handle,
             var->lobVar->environment->errorHandle, var->lobVar->data[var->pos],
             newSize);
     Py_END_ALLOW_THREADS

+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/ExternalObjectVar.c → desktop/core/ext-py/cx_Oracle-5.2.1/ExternalObjectVar.c


+ 1 - 1
desktop/core/ext-py/cx_Oracle-5.1.2/IntervalVar.c → desktop/core/ext-py/cx_Oracle-5.2.1/IntervalVar.c

@@ -138,7 +138,7 @@ static int IntervalVar_SetValue(
     seconds -= minutes * 60;
     status = OCIIntervalSetDaySecond(var->environment->handle,
             var->environment->errorHandle, delta->days, hours, minutes,
-            seconds, delta->microseconds, var->data[pos]);
+            seconds, delta->microseconds*1000, var->data[pos]);
     if (Environment_CheckForError(var->environment, status,
                 "IntervalVar_SetValue()") < 0)
         return -1;

+ 9 - 8
desktop/core/ext-py/cx_Oracle-5.1.2/LobVar.c → desktop/core/ext-py/cx_Oracle-5.2.1/LobVar.c

@@ -21,7 +21,7 @@ static int LobVar_PreFetch(udt_LobVar*);
 static void LobVar_Finalize(udt_LobVar*);
 static PyObject *LobVar_GetValue(udt_LobVar*, unsigned);
 static int LobVar_SetValue(udt_LobVar*, unsigned, PyObject*);
-static int LobVar_Write(udt_LobVar*, unsigned, PyObject*, ub4, ub4*);
+static int LobVar_Write(udt_LobVar*, unsigned, PyObject*, oraub8, oraub8*);
 
 //-----------------------------------------------------------------------------
 // Python type declarations
@@ -314,8 +314,8 @@ static int LobVar_Write(
     udt_LobVar *var,                    // variable to perform write against
     unsigned position,                  // position to perform write against
     PyObject *dataObj,                  // data object to write into LOB
-    ub4 offset,                         // offset into variable
-    ub4 *amount)                        // amount to write
+    oraub8 offset,                      // offset into variable
+    oraub8 *amount)                     // amount to write
 {
     udt_Buffer buffer;
     sword status;
@@ -353,15 +353,16 @@ static int LobVar_Write(
     }
 
     Py_BEGIN_ALLOW_THREADS
-    status = OCILobWrite(var->connection->handle,
-            var->environment->errorHandle, var->data[position], amount, offset,
-            (void*) buffer.ptr, buffer.size, OCI_ONE_PIECE, NULL, NULL, 0,
-            var->type->charsetForm);
+    status = OCILobWrite2(var->connection->handle,
+            var->environment->errorHandle, var->data[position], amount, 0,
+            offset, (void*) buffer.ptr, buffer.size, OCI_ONE_PIECE, NULL, NULL,
+            0, var->type->charsetForm);
     Py_END_ALLOW_THREADS
     cxBuffer_Clear(&buffer);
     if (Environment_CheckForError(var->environment, status,
             "LobVar_Write()") < 0)
         return -1;
+
     return 0;
 }
 
@@ -388,9 +389,9 @@ static int LobVar_SetValue(
     PyObject *value)                    // value to set
 {
     boolean isTemporary;
+    oraub8 amount;
     sword status;
     ub1 lobType;
-    ub4 amount;
 
     // make sure have temporary LOBs set up
     status = OCILobIsTemporary(var->environment->handle,

+ 3 - 7
desktop/core/ext-py/cx_Oracle-5.1.2/LongVar.c → desktop/core/ext-py/cx_Oracle-5.2.1/LongVar.c

@@ -48,10 +48,9 @@ static PyTypeObject g_LongStringVarType = {
 };
 
 
-#if PY_MAJOR_VERSION < 3
-static PyTypeObject g_LongUnicodeVarType = {
+static PyTypeObject g_LongNCharVarType = {
     PyVarObject_HEAD_INIT(NULL, 0)
-    "cx_Oracle.LONG_UNICODE",           // tp_name
+    "cx_Oracle.LONG_NCHAR",             // tp_name
     sizeof(udt_LongVar),                // tp_basicsize
     0,                                  // tp_itemsize
     0,                                  // tp_dealloc
@@ -72,7 +71,6 @@ static PyTypeObject g_LongUnicodeVarType = {
     Py_TPFLAGS_DEFAULT,                 // tp_flags
     0                                   // tp_doc
 };
-#endif
 
 
 static PyTypeObject g_LongBinaryVarType = {
@@ -124,7 +122,6 @@ static udt_VariableType vt_LongString = {
 };
 
 
-#if PY_MAJOR_VERSION < 3
 static udt_VariableType vt_LongNationalCharString = {
     (InitializeProc) NULL,
     (FinalizeProc) NULL,
@@ -135,7 +132,7 @@ static udt_VariableType vt_LongNationalCharString = {
     (SetValueProc) LongVar_SetValue,
     (GetValueProc) LongVar_GetValue,
     (GetBufferSizeProc) LongVar_GetBufferSize,
-    &g_LongUnicodeVarType,              // Python type
+    &g_LongNCharVarType,                // Python type
     SQLT_LVC,                           // Oracle type
     SQLCS_NCHAR,                        // charset form
     128 * 1024,                         // element length (default)
@@ -144,7 +141,6 @@ static udt_VariableType vt_LongNationalCharString = {
     1,                                  // can be copied
     0                                   // can be in array
 };
-#endif
 
 
 static udt_VariableType vt_LongBinary = {

+ 0 - 2
desktop/core/ext-py/cx_Oracle-5.1.2/MANIFEST.in → desktop/core/ext-py/cx_Oracle-5.2.1/MANIFEST.in

@@ -1,7 +1,5 @@
 include MANIFEST.in
 include *.c
 include *.txt
-recursive-include html *.html *.js *.inv
-recursive-include html/_static *.png *.css *.js
 recursive-include samples *.py
 recursive-include test *.py *.sql

+ 15 - 27
desktop/core/ext-py/cx_Oracle-5.1.2/NumberVar.c → desktop/core/ext-py/cx_Oracle-5.2.1/NumberVar.c

@@ -12,12 +12,10 @@ typedef struct {
 } udt_NumberVar;
 
 
-#ifdef SQLT_BFLOAT
 typedef struct {
     Variable_HEAD
     double *data;
 } udt_NativeFloatVar;
-#endif
 
 
 //-----------------------------------------------------------------------------
@@ -26,10 +24,8 @@ typedef struct {
 static int NumberVar_PreDefine(udt_NumberVar*, OCIParam*);
 static int NumberVar_SetValue(udt_NumberVar*, unsigned, PyObject*);
 static PyObject *NumberVar_GetValue(udt_NumberVar*, unsigned);
-#ifdef SQLT_BFLOAT
 static int NativeFloatVar_SetValue(udt_NativeFloatVar*, unsigned, PyObject*);
 static PyObject *NativeFloatVar_GetValue(udt_NativeFloatVar*, unsigned);
-#endif
 
 
 //-----------------------------------------------------------------------------
@@ -60,7 +56,6 @@ static PyTypeObject g_NumberVarType = {
 };
 
 
-#ifdef SQLT_BFLOAT
 static PyTypeObject g_NativeFloatVarType = {
     PyVarObject_HEAD_INIT(NULL, 0)
     "cx_Oracle.NATIVE_FLOAT",           // tp_name
@@ -84,7 +79,6 @@ static PyTypeObject g_NativeFloatVarType = {
     Py_TPFLAGS_DEFAULT,                 // tp_flags
     0                                   // tp_doc
 };
-#endif
 
 
 //-----------------------------------------------------------------------------
@@ -111,7 +105,6 @@ static udt_VariableType vt_Float = {
 };
 
 
-#ifdef SQLT_BFLOAT
 static udt_VariableType vt_NativeFloat = {
     (InitializeProc) NULL,
     (FinalizeProc) NULL,
@@ -131,10 +124,8 @@ static udt_VariableType vt_NativeFloat = {
     1,                                  // can be copied
     1                                   // can be in array
 };
-#endif
 
 
-#if PY_MAJOR_VERSION < 3
 static udt_VariableType vt_Integer = {
     (InitializeProc) NULL,
     (FinalizeProc) NULL,
@@ -154,7 +145,6 @@ static udt_VariableType vt_Integer = {
     1,                                  // can be copied
     1                                   // can be in array
 };
-#endif
 
 
 static udt_VariableType vt_LongInteger = {
@@ -199,6 +189,7 @@ static udt_VariableType vt_NumberAsString = {
 };
 
 
+#if ORACLE_VERSION_HEX < ORACLE_VERSION(12, 1)
 static udt_VariableType vt_Boolean = {
     (InitializeProc) NULL,
     (FinalizeProc) NULL,
@@ -218,6 +209,7 @@ static udt_VariableType vt_Boolean = {
     1,                                  // can be copied
     1                                   // can be in array
 };
+#endif
 
 
 //-----------------------------------------------------------------------------
@@ -229,6 +221,7 @@ static int NumberVar_PreDefine(
     udt_NumberVar *var,                 // variable to initialize
     OCIParam *param)                    // parameter handle
 {
+    static int maxLongSafeDigits = sizeof(long) >= 8 ? 18 : 9;
     sb2 precision;
     sword status;
     sb1 scale;
@@ -250,10 +243,8 @@ static int NumberVar_PreDefine(
             return -1;
         if (scale == 0 || (scale == -127 && precision == 0)) {
             var->type = &vt_LongInteger;
-#if PY_MAJOR_VERSION < 3
-        if (precision > 0 && precision < 10)
-            var->type = &vt_Integer;
-#endif
+            if (precision > 0 && precision <= maxLongSafeDigits)
+                var->type = &vt_Integer;
         }
     }
 
@@ -500,10 +491,10 @@ static int NumberVar_SetValue(
     if (PyInt_Check(value))
         return NumberVar_SetValueFromInteger(var, pos, value);
 #endif
-    if (PyLong_Check(value))
-        return NumberVar_SetValueFromLong(var, pos, value);
     if (PyBool_Check(value))
         return NumberVar_SetValueFromBoolean(var, pos, value);
+    if (PyLong_Check(value))
+        return NumberVar_SetValueFromLong(var, pos, value);
     if (PyFloat_Check(value))
         return NumberVar_SetValueFromFloat(var, pos, value);
     if (Py_TYPE(value) == g_DecimalType)
@@ -527,21 +518,20 @@ static PyObject *NumberVar_GetValue(
     ub4 stringLength;
     sword status;
 
-#if PY_MAJOR_VERSION < 3
-    if (var->type == &vt_Integer || var->type == &vt_Boolean) {
-#else
-    if (var->type == &vt_Boolean) {
-#endif
+    if (var->type == &vt_Boolean || var->type == &vt_Integer) {
         status = OCINumberToInt(var->environment->errorHandle, &var->data[pos],
                 sizeof(long), OCI_NUMBER_SIGNED, (dvoid*) &integerValue);
         if (Environment_CheckForError(var->environment, status,
                 "NumberVar_GetValue(): as integer") < 0)
             return NULL;
-#if PY_MAJOR_VERSION < 3
-        if (var->type == &vt_Integer)
-            return PyInt_FromLong(integerValue);
+
+        if (var->type == &vt_Boolean)
+            return PyBool_FromLong(integerValue);
+#if PY_MAJOR_VERSION >= 3
+        return PyLong_FromLong(integerValue);
+#else
+        return PyInt_FromLong(integerValue);
 #endif
-        return PyBool_FromLong(integerValue);
     }
 
     if (var->type == &vt_NumberAsString || var->type == &vt_LongInteger) {
@@ -575,7 +565,6 @@ static PyObject *NumberVar_GetValue(
 }
 
 
-#ifdef SQLT_BFLOAT
 //-----------------------------------------------------------------------------
 // NativeFloatVar_GetValue()
 //   Returns the value stored at the given array position as a float.
@@ -604,5 +593,4 @@ static int NativeFloatVar_SetValue(
     var->data[pos] = PyFloat_AS_DOUBLE(value);
     return 0;
 }
-#endif
 

+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/ObjectType.c → desktop/core/ext-py/cx_Oracle-5.2.1/ObjectType.c


+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/ObjectVar.c → desktop/core/ext-py/cx_Oracle-5.2.1/ObjectVar.c


+ 2 - 2
desktop/core/ext-py/cx_Oracle-5.1.2/PKG-INFO → desktop/core/ext-py/cx_Oracle-5.2.1/PKG-INFO

@@ -1,6 +1,6 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
 Name: cx_Oracle
-Version: 5.1.2
+Version: 5.2.1
 Summary: Python interface to Oracle
 Home-page: http://cx-oracle.sourceforge.net
 Author: Anthony Tuininga

+ 13 - 10
desktop/core/ext-py/cx_Oracle-5.1.2/README.txt → desktop/core/ext-py/cx_Oracle-5.2.1/README.txt

@@ -26,18 +26,17 @@ Place the file cx_Oracle.pyd or cx_Oracle.so anywhere on your Python path.
 
 Source Install
 --------------
-This module has been built with Oracle 9.2.0, 10.2.0, 11.1.0 on Linux,
-Solaris and Windows. Others have reported success with other platforms
-such as Mac OS X.
+This module has been built with Oracle 10g, 11g and 12c on Linux and Windows.
+Others have reported success with other platforms such as Mac OS X.
 
-Use the provided setup.py to build and install the module which makes use of 
-the distutils module. Note that on Windows, I have used mingw32 
-(http://www.mingw.org) and the module will not build with MSVC without 
-modification. The commands required to build and install the module are as 
-follows:
+For simplified installation use pip
 
-	python setup.py build
-	python setup.py install
+    pip install cx_Oracle
+
+Otherwise, you can use the provided setup.py to build and install the module
+
+    python setup.py build
+    python setup.py install
 
 See BUILD.txt for additional information.
 
@@ -69,3 +68,7 @@ samples in the samples directory. You can also look at the scripts in the
 cx_OracleTools (http://cx-oracletools.sourceforge.net) and the modules in the
 cx_PyOracleLib (http://cx-pyoraclelib.sourceforge.net) projects.
 
+For further information see
+
+http://cx_oracle.readthedocs.org
+

+ 22 - 14
desktop/core/ext-py/cx_Oracle-5.1.2/SessionPool.c → desktop/core/ext-py/cx_Oracle-5.2.1/SessionPool.c

@@ -1,6 +1,6 @@
 //-----------------------------------------------------------------------------
 // SessionPool.c
-//   Handles session pooling (only available in Oracle 9i and up).
+//   Handles session pooling.
 //-----------------------------------------------------------------------------
 
 //-----------------------------------------------------------------------------
@@ -14,9 +14,9 @@ typedef struct {
     ub4 sessionIncrement;
     ub4 cacheSize;
     int homogeneous;
+    int externalAuth;
     PyObject *name;
     PyObject *username;
-    PyObject *password;
     PyObject *dsn;
     udt_Environment *environment;
     PyTypeObject *connectionType;
@@ -60,7 +60,6 @@ static PyMethodDef g_SessionPoolMethods[] = {
 //-----------------------------------------------------------------------------
 static PyMemberDef g_SessionPoolMembers[] = {
     { "username", T_OBJECT, offsetof(udt_SessionPool, username), READONLY },
-    { "password", T_OBJECT, offsetof(udt_SessionPool, password), 0 },
     { "dsn", T_OBJECT, offsetof(udt_SessionPool, dsn), READONLY },
     { "tnsentry", T_OBJECT, offsetof(udt_SessionPool, dsn), READONLY },
     { "name", T_OBJECT, offsetof(udt_SessionPool, name), READONLY },
@@ -169,11 +168,12 @@ static int SessionPool_Init(
     PyObject *args,                     // arguments
     PyObject *keywordArgs)              // keyword arguments
 {
+    PyObject *threadedObj, *eventsObj, *homogeneousObj, *passwordObj;
     unsigned minSessions, maxSessions, sessionIncrement;
-    PyObject *threadedObj, *eventsObj, *homogeneousObj;
+    int threaded, events, homogeneous, externalAuth;
     udt_Buffer username, password, dsn;
-    int threaded, events, homogeneous;
     PyTypeObject *connectionType;
+    PyObject *externalAuthObj;
     unsigned poolNameLength;
     const char *poolName;
     sword status;
@@ -183,19 +183,21 @@ static int SessionPool_Init(
     // define keyword arguments
     static char *keywordList[] = { "user", "password", "dsn", "min", "max",
             "increment", "connectiontype", "threaded", "getmode", "events",
-            "homogeneous", NULL };
+            "homogeneous", "externalauth", NULL };
 
     // parse arguments and keywords
     homogeneous = 1;
-    threaded = events = 0;
-    threadedObj = eventsObj = homogeneousObj = NULL;
+    externalAuthObj = NULL;
+    threaded = events = externalAuth = 0;
+    threadedObj = eventsObj = homogeneousObj = passwordObj = NULL;
     connectionType = &g_ConnectionType;
     getMode = OCI_SPOOL_ATTRVAL_NOWAIT;
-    if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "O!O!O!iii|OObOO",
+    if (!PyArg_ParseTupleAndKeywords(args, keywordArgs, "O!O!O!iii|OObOOO",
             keywordList, cxString_Type, &self->username,
-            cxString_Type, &self->password, cxString_Type, &self->dsn,
+            cxString_Type, &passwordObj, cxString_Type, &self->dsn,
             &minSessions, &maxSessions, &sessionIncrement, &connectionType,
-            &threadedObj, &getMode, &eventsObj, &homogeneousObj))
+            &threadedObj, &getMode, &eventsObj, &homogeneousObj,
+            &externalAuthObj))
         return -1;
     if (!PyType_Check(connectionType)) {
         PyErr_SetString(g_ProgrammingErrorException,
@@ -217,6 +219,12 @@ static int SessionPool_Init(
         if (events < 0)
             return -1;
     }
+    if (externalAuthObj) {
+        externalAuth = PyObject_IsTrue(externalAuthObj);
+        if (externalAuth < 0)
+            return -1;
+        homogeneous = 0;
+    }
     if (homogeneousObj) {
         homogeneous = PyObject_IsTrue(homogeneousObj);
         if (homogeneous < 0)
@@ -228,11 +236,11 @@ static int SessionPool_Init(
     self->connectionType = connectionType;
     Py_INCREF(self->dsn);
     Py_INCREF(self->username);
-    Py_INCREF(self->password);
     self->minSessions = minSessions;
     self->maxSessions = maxSessions;
     self->sessionIncrement = sessionIncrement;
     self->homogeneous = homogeneous;
+    self->externalAuth = externalAuth;
 
     // set up the environment
     self->environment = Environment_NewFromScratch(threaded, events, NULL,
@@ -256,7 +264,7 @@ static int SessionPool_Init(
     if (cxBuffer_FromObject(&username, self->username,
             self->environment->encoding) < 0)
         return -1;
-    if (cxBuffer_FromObject(&password, self->password,
+    if (cxBuffer_FromObject(&password, passwordObj,
             self->environment->encoding) < 0) {
         cxBuffer_Clear(&username);
         return -1;
@@ -314,7 +322,6 @@ static void SessionPool_Free(
     Py_XDECREF(self->name);
     Py_XDECREF(self->environment);
     Py_XDECREF(self->username);
-    Py_XDECREF(self->password);
     Py_XDECREF(self->dsn);
     Py_TYPE(self)->tp_free((PyObject*) self);
 }
@@ -441,6 +448,7 @@ static PyObject *SessionPool_InternalRelease(
     Py_DECREF(connection->sessionPool);
     connection->sessionPool = NULL;
     connection->handle = NULL;
+    connection->release = 0;
 
     Py_INCREF(Py_None);
     return Py_None;

+ 25 - 38
desktop/core/ext-py/cx_Oracle-5.1.2/StringVar.c → desktop/core/ext-py/cx_Oracle-5.2.1/StringVar.c

@@ -18,9 +18,7 @@ typedef struct {
 static int StringVar_Initialize(udt_StringVar*, udt_Cursor*);
 static int StringVar_SetValue(udt_StringVar*, unsigned, PyObject*);
 static PyObject *StringVar_GetValue(udt_StringVar*, unsigned);
-#if PY_MAJOR_VERSION < 3
 static int StringVar_PostDefine(udt_StringVar*);
-#endif
 static ub4 StringVar_GetBufferSize(udt_StringVar*);
 
 //-----------------------------------------------------------------------------
@@ -51,10 +49,9 @@ static PyTypeObject g_StringVarType = {
 };
 
 
-#if PY_MAJOR_VERSION < 3
-static PyTypeObject g_UnicodeVarType = {
+static PyTypeObject g_NCharVarType = {
     PyVarObject_HEAD_INIT(NULL, 0)
-    "cx_Oracle.UNICODE",                // tp_name
+    "cx_Oracle.NCHAR",                  // tp_name
     sizeof(udt_StringVar),              // tp_basicsize
     0,                                  // tp_itemsize
     0,                                  // tp_dealloc
@@ -75,7 +72,6 @@ static PyTypeObject g_UnicodeVarType = {
     Py_TPFLAGS_DEFAULT,                 // tp_flags
     0                                   // tp_doc
 };
-#endif
 
 
 static PyTypeObject g_FixedCharVarType = {
@@ -103,10 +99,9 @@ static PyTypeObject g_FixedCharVarType = {
 };
 
 
-#if PY_MAJOR_VERSION < 3
-static PyTypeObject g_FixedUnicodeVarType = {
+static PyTypeObject g_FixedNCharVarType = {
     PyVarObject_HEAD_INIT(NULL, 0)
-    "cx_Oracle.FIXED_UNICODE",          // tp_name
+    "cx_Oracle.FIXED_NCHAR",            // tp_name
     sizeof(udt_StringVar),              // tp_basicsize
     0,                                  // tp_itemsize
     0,                                  // tp_dealloc
@@ -127,7 +122,6 @@ static PyTypeObject g_FixedUnicodeVarType = {
     Py_TPFLAGS_DEFAULT,                 // tp_flags
     0                                   // tp_doc
 };
-#endif
 
 
 static PyTypeObject g_RowidVarType = {
@@ -196,7 +190,7 @@ static udt_VariableType vt_String = {
     &g_StringVarType,                   // Python type
     SQLT_CHR,                           // Oracle type
     SQLCS_IMPLICIT,                     // charset form
-    MAX_STRING_CHARS,                   // element length (default)
+    4000,                               // element length (default)
     1,                                  // is character data
     1,                                  // is variable length
     1,                                  // can be copied
@@ -204,7 +198,6 @@ static udt_VariableType vt_String = {
 };
 
 
-#if PY_MAJOR_VERSION < 3
 static udt_VariableType vt_NationalCharString = {
     (InitializeProc) StringVar_Initialize,
     (FinalizeProc) NULL,
@@ -215,16 +208,15 @@ static udt_VariableType vt_NationalCharString = {
     (SetValueProc) StringVar_SetValue,
     (GetValueProc) StringVar_GetValue,
     (GetBufferSizeProc) StringVar_GetBufferSize,
-    &g_UnicodeVarType,                  // Python type
+    &g_NCharVarType,                    // Python type
     SQLT_CHR,                           // Oracle type
     SQLCS_NCHAR,                        // charset form
-    MAX_STRING_CHARS,                   // element length (default)
+    4000,                               // element length (default)
     1,                                  // is character data
     1,                                  // is variable length
     1,                                  // can be copied
     1                                   // can be in array
 };
-#endif
 
 
 static udt_VariableType vt_FixedChar = {
@@ -248,7 +240,6 @@ static udt_VariableType vt_FixedChar = {
 };
 
 
-#if PY_MAJOR_VERSION < 3
 static udt_VariableType vt_FixedNationalChar = {
     (InitializeProc) StringVar_Initialize,
     (FinalizeProc) NULL,
@@ -259,7 +250,7 @@ static udt_VariableType vt_FixedNationalChar = {
     (SetValueProc) StringVar_SetValue,
     (GetValueProc) StringVar_GetValue,
     (GetBufferSizeProc) StringVar_GetBufferSize,
-    &g_FixedUnicodeVarType,             // Python type
+    &g_FixedNCharVarType,               // Python type
     SQLT_AFC,                           // Oracle type
     SQLCS_NCHAR,                        // charset form
     2000,                               // element length (default)
@@ -268,7 +259,6 @@ static udt_VariableType vt_FixedNationalChar = {
     1,                                  // can be copied
     1                                   // can be in array
 };
-#endif
 
 
 static udt_VariableType vt_Rowid = {
@@ -305,7 +295,7 @@ static udt_VariableType vt_Binary = {
     &g_BinaryVarType,                   // Python type
     SQLT_BIN,                           // Oracle type
     SQLCS_IMPLICIT,                     // charset form
-    MAX_BINARY_BYTES,                   // element length (default)
+    4000,                               // element length (default)
     0,                                  // is character data
     1,                                  // is variable length
     1,                                  // can be copied
@@ -321,12 +311,18 @@ static int StringVar_Initialize(
     udt_StringVar *var,                 // variable to initialize
     udt_Cursor *cursor)                 // cursor to use
 {
-    var->actualLength = (ub2*) PyMem_Malloc(var->allocatedElements *
-            sizeof(ub2));
+    ub4 i;
+
+    var->actualLength = (ACTUAL_LENGTH_TYPE *)
+            PyMem_Malloc(var->allocatedElements * sizeof(ACTUAL_LENGTH_TYPE));
     if (!var->actualLength) {
         PyErr_NoMemory();
         return -1;
     }
+
+    for (i = 0; i < var->allocatedElements; i++)
+        var->actualLength[i] = 0;
+
     return 0;
 }
 
@@ -341,21 +337,16 @@ static int StringVar_SetValue(
     PyObject *value)                    // value to set
 {
     udt_Buffer buffer;
+    char *encoding;
+
+    // determine which encoding should be used
+    if (var->type->charsetForm == SQLCS_NCHAR)
+        encoding = var->environment->nencoding;
+    else encoding = var->environment->encoding;
 
     // populate the buffer and confirm the maximum size is not exceeded
-    if (cxBuffer_FromObject(&buffer, value, var->environment->encoding) < 0)
+    if (cxBuffer_FromObject(&buffer, value, encoding) < 0)
         return -1;
-    if (var->type->isCharacterData
-            && buffer.numCharacters > MAX_STRING_CHARS) {
-        cxBuffer_Clear(&buffer);
-        PyErr_SetString(PyExc_ValueError, "string data too large");
-        return -1;
-    } else if (!var->type->isCharacterData
-            && buffer.size > MAX_BINARY_BYTES) {
-        cxBuffer_Clear(&buffer);
-        PyErr_SetString(PyExc_ValueError, "binary data too large");
-        return -1;
-    }
 
     // ensure that the buffer is large enough
     if (buffer.size > var->bufferSize) {
@@ -366,7 +357,7 @@ static int StringVar_SetValue(
     }
 
     // keep a copy of the string
-    var->actualLength[pos] = (ub2) buffer.size;
+    var->actualLength[pos] = (ACTUAL_LENGTH_TYPE) buffer.size;
     if (buffer.size)
         memcpy(var->data + var->bufferSize * pos, buffer.ptr, buffer.size);
     cxBuffer_Clear(&buffer);
@@ -388,18 +379,15 @@ static PyObject *StringVar_GetValue(
     data = var->data + pos * var->bufferSize;
     if (var->type == &vt_Binary)
         return PyBytes_FromStringAndSize(data, var->actualLength[pos]);
-#if PY_MAJOR_VERSION < 3
     if (var->type == &vt_FixedNationalChar
             || var->type == &vt_NationalCharString)
         return PyUnicode_Decode(data, var->actualLength[pos],
                 var->environment->nencoding, NULL);
-#endif
     return cxString_FromEncodedString(data, var->actualLength[pos],
             var->environment->encoding);
 }
 
 
-#if PY_MAJOR_VERSION < 3
 //-----------------------------------------------------------------------------
 // StringVar_PostDefine()
 //   Set the character set information when values are fetched from this
@@ -419,7 +407,6 @@ static int StringVar_PostDefine(
 
     return 0;
 }
-#endif
 
 
 //-----------------------------------------------------------------------------

+ 308 - 25
desktop/core/ext-py/cx_Oracle-5.1.2/Subscription.c → desktop/core/ext-py/cx_Oracle-5.2.1/Subscription.c

@@ -16,14 +16,19 @@ typedef struct {
     ub4 port;
     ub4 timeout;
     ub4 operations;
+    ub4 qos;
+    ub4 cqqos;
     ub4 rowids;
+    ub4 id;
 } udt_Subscription;
 
 typedef struct {
     PyObject_HEAD
+    udt_Subscription *subscription;
     ub4 type;
     PyObject *dbname;
     PyObject *tables;
+    PyObject *queries;
 } udt_Message;
 
 typedef struct {
@@ -39,6 +44,15 @@ typedef struct {
     ub4 operation;
 } udt_MessageRow;
 
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
+typedef struct {
+    PyObject_HEAD
+    ub8 id;
+    ub4 operation;
+    PyObject *tables;
+} udt_MessageQuery;
+#endif
+
 
 //-----------------------------------------------------------------------------
 // Declaration of subscription functions
@@ -49,6 +63,9 @@ static PyObject *Subscription_RegisterQuery(udt_Subscription*, PyObject*);
 static void Message_Free(udt_Message*);
 static void MessageTable_Free(udt_MessageTable*);
 static void MessageRow_Free(udt_MessageRow*);
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
+static void MessageQuery_Free(udt_MessageQuery*);
+#endif
 
 //-----------------------------------------------------------------------------
 // declaration of members for Python types
@@ -62,14 +79,20 @@ static PyMemberDef g_SubscriptionTypeMembers[] = {
     { "port", T_INT, offsetof(udt_Subscription, port), READONLY },
     { "timeout", T_INT, offsetof(udt_Subscription, timeout), READONLY },
     { "operations", T_INT, offsetof(udt_Subscription, operations), READONLY },
+    { "qos", T_INT, offsetof(udt_Subscription, qos), READONLY },
+    { "cqqos", T_INT, offsetof(udt_Subscription, cqqos), READONLY },
     { "rowids", T_BOOL, offsetof(udt_Subscription, rowids), READONLY },
+    { "id", T_INT, offsetof(udt_Subscription, id), READONLY },
     { NULL }
 };
 
 static PyMemberDef g_MessageTypeMembers[] = {
+    { "subscription", T_OBJECT, offsetof(udt_Message, subscription),
+            READONLY },
     { "type", T_INT, offsetof(udt_Message, type), READONLY },
     { "dbname", T_OBJECT, offsetof(udt_Message, dbname), READONLY },
     { "tables", T_OBJECT, offsetof(udt_Message, tables), READONLY },
+    { "queries", T_OBJECT, offsetof(udt_Message, queries), READONLY },
     { NULL }
 };
 
@@ -86,6 +109,15 @@ static PyMemberDef g_MessageRowTypeMembers[] = {
     { NULL }
 };
 
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
+static PyMemberDef g_MessageQueryTypeMembers[] = {
+    { "id", T_INT, offsetof(udt_MessageQuery, id), READONLY },
+    { "operation", T_INT, offsetof(udt_MessageQuery, operation), READONLY },
+    { "tables", T_OBJECT, offsetof(udt_MessageQuery, tables), READONLY },
+    { NULL }
+};
+#endif
+
 
 //-----------------------------------------------------------------------------
 // declaration of methods for Python types
@@ -278,6 +310,53 @@ static PyTypeObject g_MessageRowType = {
 };
 
 
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
+static PyTypeObject g_MessageQueryType = {
+    PyVarObject_HEAD_INIT(NULL, 0)
+    "cx_Oracle.MessageQuery",           // tp_name
+    sizeof(udt_MessageQuery),           // tp_basicsize
+    0,                                  // tp_itemsize
+    (destructor) MessageQuery_Free,     // tp_dealloc
+    0,                                  // tp_print
+    0,                                  // tp_getattr
+    0,                                  // tp_setattr
+    0,                                  // tp_compare
+    0,                                  // tp_repr
+    0,                                  // tp_as_number
+    0,                                  // tp_as_sequence
+    0,                                  // tp_as_mapping
+    0,                                  // tp_hash
+    0,                                  // tp_call
+    0,                                  // tp_str
+    0,                                  // tp_getattro
+    0,                                  // tp_setattro
+    0,                                  // tp_as_buffer
+    Py_TPFLAGS_DEFAULT,                 // tp_flags
+    0,                                  // tp_doc
+    0,                                  // tp_traverse
+    0,                                  // tp_clear
+    0,                                  // tp_richcompare
+    0,                                  // tp_weaklistoffset
+    0,                                  // tp_iter
+    0,                                  // tp_iternext
+    0,                                  // tp_methods
+    g_MessageQueryTypeMembers,          // tp_members
+    0,                                  // tp_getset
+    0,                                  // tp_base
+    0,                                  // tp_dict
+    0,                                  // tp_descr_get
+    0,                                  // tp_descr_set
+    0,                                  // tp_dictoffset
+    0,                                  // tp_init
+    0,                                  // tp_alloc
+    0,                                  // tp_new
+    0,                                  // tp_free
+    0,                                  // tp_is_gc
+    0                                   // tp_bases
+};
+#endif
+
+
 //-----------------------------------------------------------------------------
 // MessageRow_Initialize()
 //   Initialize a new message row with the information from the descriptor.
@@ -388,47 +467,43 @@ static int MessageTable_Initialize(
 }
 
 
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
 //-----------------------------------------------------------------------------
-// Message_Initialize()
-//   Initialize a new message with the information from the descriptor.
+// MessageQuery_Initialize()
+//   Initialize a new message query with the information from the descriptor.
 //-----------------------------------------------------------------------------
-static int Message_Initialize(
-    udt_Message *self,                  // object to initialize
+static int MessageQuery_Initialize(
+    udt_MessageQuery *self,             // object to initialize
     udt_Environment *env,               // environment to use
     dvoid *descriptor)                  // descriptor to get information from
 {
     dvoid **tableDescriptor, *indicator;
     udt_MessageTable *table;
-    ub4 dbnameLength, i;
+    ub4 i;
     OCIColl *tables;
     boolean exists;
     sb4 numTables;
-    char *dbname;
     sword status;
 
-    // determine type
-    status = OCIAttrGet(descriptor, OCI_DTYPE_CHDES, &self->type, NULL,
-            OCI_ATTR_CHDES_NFYTYPE, env->errorHandle);
+    // determine query id
+    status = OCIAttrGet(descriptor, OCI_DTYPE_CQDES, &self->id,
+            NULL, OCI_ATTR_CQDES_QUERYID, env->errorHandle);
     if (Environment_CheckForError(env, status,
-            "Message_Initialize(): get type") < 0)
+            "MessageQuery_Initialize(): get query id") < 0)
         return -1;
 
-    // determine database name
-    status = OCIAttrGet(descriptor, OCI_DTYPE_CHDES, &dbname, &dbnameLength,
-            OCI_ATTR_CHDES_DBNAME, env->errorHandle);
+    // determine operation
+    status = OCIAttrGet(descriptor, OCI_DTYPE_CQDES, &self->operation,
+            NULL, OCI_ATTR_CQDES_OPERATION, env->errorHandle);
     if (Environment_CheckForError(env, status,
-            "Message_Initialize(): get database name") < 0)
-        return -1;
-    self->dbname = cxString_FromEncodedString(dbname, dbnameLength,
-            env->encoding);
-    if (!self->dbname)
+            "MessageQuery_Initialize(): get operation") < 0)
         return -1;
 
     // determine table collection
-    status = OCIAttrGet(descriptor, OCI_DTYPE_CHDES, &tables, NULL,
-            OCI_ATTR_CHDES_TABLE_CHANGES, env->errorHandle);
+    status = OCIAttrGet(descriptor, OCI_DTYPE_CQDES, &tables, NULL,
+            OCI_ATTR_CQDES_TABLE_CHANGES, env->errorHandle);
     if (Environment_CheckForError(env, status,
-            "Message_Initialize(): get tables collection") < 0)
+            "MessageQuery_Initialize(): get tables collection") < 0)
         return -1;
 
     // determine number of tables
@@ -438,7 +513,7 @@ static int Message_Initialize(
         status = OCICollSize(env->handle, env->errorHandle, tables,
                 &numTables);
         if (Environment_CheckForError(env, status,
-                "Message_Initialize(): get size of collection") < 0)
+                "MessageQuery_Initialize(): get size of collection") < 0)
             return -1;
     }
 
@@ -452,7 +527,7 @@ static int Message_Initialize(
         status = OCICollGetElem(env->handle, env->errorHandle, tables, i,
                 &exists, (dvoid*) &tableDescriptor, &indicator);
         if (Environment_CheckForError(env, status,
-                "Message_Initialize(): get element from collection") < 0)
+                "MessageQuery_Initialize(): get element from collection") < 0)
             return -1;
         table = (udt_MessageTable*)
                 g_MessageTableType.tp_alloc(&g_MessageTableType, 0);
@@ -465,6 +540,142 @@ static int Message_Initialize(
 
     return 0;
 }
+#endif
+
+
+//-----------------------------------------------------------------------------
+// Message_Initialize()
+//   Initialize a new message with the information from the descriptor.
+//-----------------------------------------------------------------------------
+static int Message_Initialize(
+    udt_Message *self,                  // object to initialize
+    udt_Environment *env,               // environment to use
+    udt_Subscription *subscription,     // associated subscription for message
+    dvoid *descriptor)                  // descriptor to get information from
+{
+    dvoid **tableDescriptor, *indicator;
+    udt_MessageTable *table;
+    ub4 dbnameLength, i;
+    OCIColl *tables;
+    boolean exists;
+    sb4 numTables;
+    char *dbname;
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
+    dvoid **queryDescriptor;
+    udt_MessageQuery *query;
+    OCIColl *queries;
+    sb4 numQueries;
+#endif
+    sword status;
+
+    // assign reference to associated subscription
+    Py_INCREF(subscription);
+    self->subscription = subscription;
+
+    // determine type
+    status = OCIAttrGet(descriptor, OCI_DTYPE_CHDES, &self->type, NULL,
+            OCI_ATTR_CHDES_NFYTYPE, env->errorHandle);
+    if (Environment_CheckForError(env, status,
+            "Message_Initialize(): get type") < 0)
+        return -1;
+
+    // determine database name
+    status = OCIAttrGet(descriptor, OCI_DTYPE_CHDES, &dbname, &dbnameLength,
+            OCI_ATTR_CHDES_DBNAME, env->errorHandle);
+    if (Environment_CheckForError(env, status,
+            "Message_Initialize(): get database name") < 0)
+        return -1;
+    self->dbname = cxString_FromEncodedString(dbname, dbnameLength,
+            env->encoding);
+    if (!self->dbname)
+        return -1;
+
+    if (self->type == OCI_EVENT_OBJCHANGE) {
+        // determine table collection
+        status = OCIAttrGet(descriptor, OCI_DTYPE_CHDES, &tables, NULL,
+                OCI_ATTR_CHDES_TABLE_CHANGES, env->errorHandle);
+        if (Environment_CheckForError(env, status,
+                "Message_Initialize(): get tables collection") < 0)
+            return -1;
+
+        // determine number of tables
+        if (!tables)
+            numTables = 0;
+        else {
+            status = OCICollSize(env->handle, env->errorHandle, tables,
+                    &numTables);
+            if (Environment_CheckForError(env, status,
+                    "Message_Initialize(): get size of collection") < 0)
+                return -1;
+        }
+
+        // create list to hold results
+        self->tables = PyList_New(numTables);
+        if (!self->tables)
+            return -1;
+
+        // populate each entry with a message table instance
+        for (i = 0; i < numTables; i++) {
+            status = OCICollGetElem(env->handle, env->errorHandle, tables, i,
+                    &exists, (dvoid*) &tableDescriptor, &indicator);
+            if (Environment_CheckForError(env, status,
+                    "Message_Initialize(): get element from collection") < 0)
+                return -1;
+            table = (udt_MessageTable*)
+                    g_MessageTableType.tp_alloc(&g_MessageTableType, 0);
+            if (!table)
+                return -1;
+            PyList_SET_ITEM(self->tables, i, (PyObject*) table);
+            if (MessageTable_Initialize(table, env, *tableDescriptor) < 0)
+                return -1;
+        }
+    }
+
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
+    if (self->type == OCI_EVENT_QUERYCHANGE) {
+        // determine query collection
+        status = OCIAttrGet(descriptor, OCI_DTYPE_CHDES, &queries, NULL,
+                OCI_ATTR_CHDES_QUERIES, env->errorHandle);
+        if (Environment_CheckForError(env, status,
+                "Message_Initialize(): get queries collection") < 0)
+            return -1;
+
+        // determine number of queries
+        if (!queries)
+            numQueries = 0;
+        else {
+            status = OCICollSize(env->handle, env->errorHandle, queries,
+                    &numQueries);
+            if (Environment_CheckForError(env, status,
+                    "Message_Initialize(): get size of collection") < 0)
+                return -1;
+        }
+
+        // create list to hold results
+        self->queries = PyList_New(numQueries);
+        if (!self->queries)
+            return -1;
+
+        // populate each entry with a message query instance
+        for (i = 0; i < numQueries; i++) {
+            status = OCICollGetElem(env->handle, env->errorHandle, queries, i,
+                    &exists, (dvoid*) &queryDescriptor, &indicator);
+            if (Environment_CheckForError(env, status,
+                    "Message_Initialize(): get element from collection") < 0)
+                return -1;
+            query = (udt_MessageQuery*)
+                    g_MessageQueryType.tp_alloc(&g_MessageQueryType, 0);
+            if (!query)
+                return -1;
+            PyList_SET_ITEM(self->queries, i, (PyObject*) query);
+            if (MessageQuery_Initialize(query, env, *queryDescriptor) < 0)
+                return -1;
+        }
+    }
+#endif
+
+    return 0;
+}
 
 
 //-----------------------------------------------------------------------------
@@ -483,7 +694,7 @@ static int Subscription_CallbackHandler(
     message = (udt_Message*) g_MessageType.tp_alloc(&g_MessageType, 0);
     if (!message)
         return -1;
-    if (Message_Initialize(message, env, descriptor) < 0) {
+    if (Message_Initialize(message, env, self, descriptor) < 0) {
         Py_DECREF(message);
         return -1;
     }
@@ -608,6 +819,24 @@ static int Subscription_Register(
             return -1;
     }
 
+    // set suscription QOS
+    status = OCIAttrSet(self->handle, OCI_HTYPE_SUBSCRIPTION,
+            (dvoid*) &self->qos, sizeof(ub4), OCI_ATTR_SUBSCR_QOSFLAGS,
+            env->errorHandle);
+    if (Environment_CheckForError(env, status,
+                "Subscription_Register(): set qos flags") < 0)
+        return -1;
+
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
+    // set subscription change notification QOS flags
+    status = OCIAttrSet(self->handle, OCI_HTYPE_SUBSCRIPTION,
+            (dvoid*) &self->cqqos, sizeof(ub4), OCI_ATTR_SUBSCR_CQ_QOSFLAGS,
+            env->errorHandle);
+    if (Environment_CheckForError(env, status,
+                "Subscription_Register(): set cq qos flags") < 0)
+        return -1;
+#endif
+
     // set whether or not rowids are desired
     status = OCIAttrSet(self->handle, OCI_HTYPE_SUBSCRIPTION,
             (dvoid*) &self->rowids, sizeof(ub4), OCI_ATTR_CHNF_ROWIDS,
@@ -633,6 +862,16 @@ static int Subscription_Register(
                 "Subscription_Register(): register") < 0)
         return -1;
 
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
+    // get the registration id
+    status = OCIAttrGet(self->handle, OCI_HTYPE_SUBSCRIPTION, &self->id,
+              NULL, OCI_ATTR_SUBSCR_CQ_REGID, env->errorHandle);
+    if (Environment_CheckForError(env, status,
+                "Subscription_Register(): get registration id") < 0) {
+        return -1;
+    }
+#endif
+
     return 0;
 }
 
@@ -649,6 +888,8 @@ static udt_Subscription *Subscription_New(
     PyObject *callback,                 // callback routine
     ub4 timeout,                        // timeout (in seconds)
     ub4 operations,                     // operations to notify
+    ub4 qos,                            // QOS flags
+    ub4 cqqos,                          // change notification QOS flags
     int rowids)                         // retrieve rowids?
 {
     udt_Subscription *self;
@@ -667,7 +908,10 @@ static udt_Subscription *Subscription_New(
     self->timeout = timeout;
     self->rowids = rowids;
     self->operations = operations;
+    self->qos = qos;
+    self->cqqos = cqqos;
     self->handle = NULL;
+    self->id = 0;
     if (Subscription_Register(self) < 0) {
         Py_DECREF(self);
         return NULL;
@@ -743,6 +987,9 @@ static PyObject *Subscription_RegisterQuery(
     udt_Buffer statementBuffer;
     udt_Environment *env;
     udt_Cursor *cursor;
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
+    ub8 queryid;
+#endif
     sword status;
 
     // parse arguments
@@ -824,12 +1071,31 @@ static PyObject *Subscription_RegisterQuery(
     }
 
     // execute the query which registers it
-    if (Cursor_InternalExecute(cursor, 0) < 0) {
+    if (Cursor_InternalExecute(cursor, 0, 0) < 0) {
         Py_DECREF(cursor);
         return NULL;
     }
+
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
+    if (self->cqqos & OCI_SUBSCR_CQ_QOS_QUERY) {
+        // get the query id
+        status = OCIAttrGet(cursor->handle, OCI_HTYPE_STMT, &queryid, NULL,
+                OCI_ATTR_CQ_QUERYID, env->errorHandle);
+        if (Environment_CheckForError(env, status,
+                    "Subscription_RegisterQuery(): get query id") < 0) {
+            Py_DECREF(cursor);
+            return NULL;
+        }
+    }
+#endif
+
     Py_DECREF(cursor);
 
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
+    if (self->cqqos & OCI_SUBSCR_CQ_QOS_QUERY)
+        return PyInt_FromLong(queryid);
+#endif
+
     Py_INCREF(Py_None);
     return Py_None;
 }
@@ -842,8 +1108,10 @@ static PyObject *Subscription_RegisterQuery(
 static void Message_Free(
     udt_Message *self)                  // object to free
 {
+    Py_CLEAR(self->subscription);
     Py_CLEAR(self->dbname);
     Py_CLEAR(self->tables);
+    Py_CLEAR(self->queries);
     Py_TYPE(self)->tp_free((PyObject*) self);
 }
 
@@ -856,6 +1124,7 @@ static void MessageTable_Free(
     udt_MessageTable *self)             // object to free
 {
     Py_CLEAR(self->name);
+    Py_CLEAR(self->rows);
     Py_TYPE(self)->tp_free((PyObject*) self);
 }
 
@@ -871,3 +1140,17 @@ static void MessageRow_Free(
     Py_TYPE(self)->tp_free((PyObject*) self);
 }
 
+
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
+//-----------------------------------------------------------------------------
+// MessageQuery_Free()
+//   Free the memory associated with a query in a message.
+//-----------------------------------------------------------------------------
+static void MessageQuery_Free(
+    udt_MessageQuery *self)               // object to free
+{
+    Py_CLEAR(self->tables);
+    Py_TYPE(self)->tp_free((PyObject*) self);
+}
+#endif
+

+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/TimestampVar.c → desktop/core/ext-py/cx_Oracle-5.2.1/TimestampVar.c


+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/Transforms.c → desktop/core/ext-py/cx_Oracle-5.2.1/Transforms.c


+ 44 - 40
desktop/core/ext-py/cx_Oracle-5.1.2/Variable.c → desktop/core/ext-py/cx_Oracle-5.2.1/Variable.c

@@ -6,6 +6,18 @@
 //-----------------------------------------------------------------------------
 // define structure common to all variables
 //-----------------------------------------------------------------------------
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(12,1)
+    #define OCIBINDBYNAME               OCIBindByName2
+    #define OCIBINDBYPOS                OCIBindByPos2
+    #define OCIDEFINEBYPOS              OCIDefineByPos2
+    #define ACTUAL_LENGTH_TYPE          ub4
+#else
+    #define OCIBINDBYNAME               OCIBindByName
+    #define OCIBINDBYPOS                OCIBindByPos
+    #define OCIDEFINEBYPOS              OCIDefineByPos
+    #define ACTUAL_LENGTH_TYPE          ub2
+#endif
+
 struct _udt_VariableType;
 #define Variable_HEAD \
     PyObject_HEAD \
@@ -24,7 +36,7 @@ struct _udt_VariableType;
     int isAllocatedInternally; \
     sb2 *indicator; \
     ub2 *returnCode; \
-    ub2 *actualLength; \
+    ACTUAL_LENGTH_TYPE *actualLength; \
     ub4 size; \
     ub4 bufferSize; \
     struct _udt_VariableType *type;
@@ -150,6 +162,9 @@ static PyTypeObject g_BaseVarType = {
 };
 
 
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(12, 1)
+#include "BooleanVar.c"
+#endif
 #include "Transforms.c"
 #include "StringVar.c"
 #include "LongVar.c"
@@ -363,19 +378,17 @@ static int Variable_Check(
             Py_TYPE(object) == &g_StringVarType ||
             Py_TYPE(object) == &g_FixedCharVarType ||
             Py_TYPE(object) == &g_NCLOBVarType ||
-#if PY_MAJOR_VERSION < 3
-            Py_TYPE(object) == &g_UnicodeVarType ||
-            Py_TYPE(object) == &g_FixedUnicodeVarType ||
-            Py_TYPE(object) == &g_LongUnicodeVarType ||
-#endif
+            Py_TYPE(object) == &g_NCharVarType ||
+            Py_TYPE(object) == &g_FixedNCharVarType ||
+            Py_TYPE(object) == &g_LongNCharVarType ||
             Py_TYPE(object) == &g_RowidVarType ||
             Py_TYPE(object) == &g_BinaryVarType ||
             Py_TYPE(object) == &g_TimestampVarType ||
-            Py_TYPE(object) == &g_IntervalVarType
-#ifdef SQLT_BFLOAT
-            || Py_TYPE(object) == &g_NativeFloatVarType
+            Py_TYPE(object) == &g_IntervalVarType ||
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(12,1)
+            Py_TYPE(object) == &g_BooleanVarType ||
 #endif
-            );
+            Py_TYPE(object) == &g_NativeFloatVarType);
 }
 
 
@@ -394,16 +407,16 @@ static udt_VariableType *Variable_TypeByPythonType(
         return &vt_String;
     if (type == (PyObject*) &g_FixedCharVarType)
         return &vt_FixedChar;
-#if PY_MAJOR_VERSION < 3
-    if (type == (PyObject*) &g_UnicodeVarType)
+    if (type == (PyObject*) &g_NCharVarType)
         return &vt_NationalCharString;
+#if PY_MAJOR_VERSION < 3
     if (type == (PyObject*) &PyUnicode_Type)
         return &vt_NationalCharString;
-    if (type == (PyObject*) &g_FixedUnicodeVarType)
+#endif
+    if (type == (PyObject*) &g_FixedNCharVarType)
         return &vt_FixedNationalChar;
-    if (type == (PyObject*) &g_LongUnicodeVarType)
+    if (type == (PyObject*) &g_LongNCharVarType)
         return &vt_LongNationalCharString;
-#endif
     if (type == (PyObject*) &g_NCLOBVarType)
         return &vt_NCLOB;
     if (type == (PyObject*) &g_RowidVarType)
@@ -435,6 +448,10 @@ static udt_VariableType *Variable_TypeByPythonType(
 #endif
     if (type == (PyObject*) &PyLong_Type)
         return &vt_LongInteger;
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(12,1)
+    if (type == (PyObject*) &g_BooleanVarType)
+        return &vt_Boolean;
+#endif
     if (type == (PyObject*) &PyBool_Type)
         return &vt_Boolean;
     if (type == (PyObject*) &g_DateTimeVarType)
@@ -451,10 +468,8 @@ static udt_VariableType *Variable_TypeByPythonType(
         return &vt_Timestamp;
     if (type == (PyObject*) &g_CursorVarType)
         return &vt_Cursor;
-#ifdef SQLT_BFLOAT
     if (type == (PyObject*) &g_NativeFloatVarType)
         return &vt_NativeFloat;
-#endif
     if (type == (PyObject*) &g_ObjectVarType)
         return &vt_Object;
 
@@ -486,14 +501,16 @@ static udt_VariableType *Variable_TypeByValue(
     }
     if (cxString_Check(value)) {
         *size = cxString_GetSize(value);
-        if (*size > MAX_STRING_CHARS)
+        if (*size > 32768)
             return &vt_LongString;
         return &vt_String;
     }
+    if (PyBool_Check(value))
+        return &vt_Boolean;
 #if PY_MAJOR_VERSION < 3
     if (PyUnicode_Check(value)) {
         *size = PyUnicode_GET_SIZE(value);
-        if (*size > MAX_STRING_CHARS)
+        if (*size > 32768)
             return &vt_LongNationalCharString;
         return &vt_NationalCharString;
     }
@@ -502,8 +519,6 @@ static udt_VariableType *Variable_TypeByValue(
 #else
     if (PyBytes_Check(value)) {
         *size = PyBytes_GET_SIZE(value);
-        if (*size > MAX_BINARY_BYTES)
-            return &vt_LongBinary;
         return &vt_Binary;
     }
 #endif
@@ -517,12 +532,8 @@ static udt_VariableType *Variable_TypeByValue(
             return NULL;
         *size = temp.size;
         cxBuffer_Clear(&temp);
-        if (*size > MAX_BINARY_BYTES)
-            return &vt_LongBinary;
         return &vt_Binary;
     }
-    if (PyBool_Check(value))
-        return &vt_Boolean;
     if (PyDateTime_Check(value))
         return &vt_DateTime;
     if (PyDate_Check(value))
@@ -577,16 +588,12 @@ static udt_VariableType *Variable_TypeByOracleDataType (
         case SQLT_LNG:
             return &vt_LongString;
         case SQLT_AFC:
-#if PY_MAJOR_VERSION < 3
             if (charsetForm == SQLCS_NCHAR)
                 return &vt_FixedNationalChar;
-#endif
             return &vt_FixedChar;
         case SQLT_CHR:
-#if PY_MAJOR_VERSION < 3
             if (charsetForm == SQLCS_NCHAR)
                 return &vt_NationalCharString;
-#endif
             return &vt_String;
         case SQLT_RDD:
             return &vt_Rowid;
@@ -594,13 +601,11 @@ static udt_VariableType *Variable_TypeByOracleDataType (
             return &vt_Binary;
         case SQLT_LBI:
             return &vt_LongBinary;
-#ifdef SQLT_BFLOAT
         case SQLT_BFLOAT:
         case SQLT_IBFLOAT:
         case SQLT_BDOUBLE:
         case SQLT_IBDOUBLE:
             return &vt_NativeFloat;
-#endif
         case SQLT_NUM:
         case SQLT_VNU:
             return &vt_Float;
@@ -830,7 +835,7 @@ static udt_Variable *Variable_NewByType(
         size = PyInt_AsLong(value);
         if (PyErr_Occurred())
             return NULL;
-        if (size > MAX_STRING_CHARS)
+        if (size > 32768)
             varType = &vt_LongString;
         else varType = &vt_String;
         return Variable_New(cursor, numElements, varType, size);
@@ -999,7 +1004,7 @@ static udt_Variable *Variable_DefineHelper(
     }
 
     // perform the define
-    status = OCIDefineByPos(cursor->handle, &var->defineHandle,
+    status = OCIDEFINEBYPOS(cursor->handle, &var->defineHandle,
             var->environment->errorHandle, position, var->data,
             var->bufferSize, var->type->oracleType, var->indicator,
             var->actualLength, var->returnCode, OCI_DEFAULT);
@@ -1064,14 +1069,14 @@ static int Variable_InternalBind(
                 var->environment->encoding) < 0)
             return -1;
         if (var->isArray) {
-            status = OCIBindByName(var->boundCursorHandle, &var->bindHandle,
+            status = OCIBINDBYNAME(var->boundCursorHandle, &var->bindHandle,
                     var->environment->errorHandle, (text*) buffer.ptr,
                     buffer.size, var->data, var->bufferSize,
                     var->type->oracleType, var->indicator, var->actualLength,
                     var->returnCode, var->allocatedElements,
                     &var->actualElements, OCI_DEFAULT);
         } else {
-            status = OCIBindByName(var->boundCursorHandle, &var->bindHandle,
+            status = OCIBINDBYNAME(var->boundCursorHandle, &var->bindHandle,
                     var->environment->errorHandle, (text*) buffer.ptr,
                     buffer.size, var->data, var->bufferSize,
                     var->type->oracleType, var->indicator, var->actualLength,
@@ -1080,13 +1085,13 @@ static int Variable_InternalBind(
         cxBuffer_Clear(&buffer);
     } else {
         if (var->isArray) {
-            status = OCIBindByPos(var->boundCursorHandle, &var->bindHandle,
+            status = OCIBINDBYPOS(var->boundCursorHandle, &var->bindHandle,
                     var->environment->errorHandle, var->boundPos, var->data,
                     var->bufferSize, var->type->oracleType, var->indicator,
                     var->actualLength, var->returnCode, var->allocatedElements,
                     &var->actualElements, OCI_DEFAULT);
         } else {
-            status = OCIBindByPos(var->boundCursorHandle, &var->bindHandle,
+            status = OCIBINDBYPOS(var->boundCursorHandle, &var->bindHandle,
                     var->environment->errorHandle, var->boundPos, var->data,
                     var->bufferSize, var->type->oracleType, var->indicator,
                     var->actualLength, var->returnCode, 0, 0, OCI_DEFAULT);
@@ -1096,7 +1101,6 @@ static int Variable_InternalBind(
             "Variable_InternalBind()") < 0)
         return -1;
 
-#if PY_MAJOR_VERSION < 3
     // set the charset form and id if applicable
     if (var->type->charsetForm != SQLCS_IMPLICIT) {
         status = OCIAttrSet(var->bindHandle, OCI_HTYPE_BIND,
@@ -1112,7 +1116,6 @@ static int Variable_InternalBind(
                 "Variable_InternalBind(): set max data size") < 0)
             return -1;
     }
-#endif
 
     // set the max data size for strings
     if ((var->type == &vt_String || var->type == &vt_FixedChar)
@@ -1168,7 +1171,8 @@ static int Variable_VerifyFetch(
 
     if (var->type->isVariableLength) {
         if (var->returnCode[arrayPos] != 0) {
-            error = Error_New(var->environment, "Variable_VerifyFetch()", 0);
+            error = Error_New(var->environment, "Variable_VerifyFetch()", 0,
+                    NULL);
             error->code = var->returnCode[arrayPos];
             sprintf(messageText, 
                     "column at array pos %d fetched with error: %d",

+ 52 - 26
desktop/core/ext-py/cx_Oracle-5.1.2/cx_Oracle.c → desktop/core/ext-py/cx_Oracle-5.2.1/cx_Oracle.c

@@ -11,15 +11,20 @@
 #include <orid.h>
 #include <xa.h>
 
-// define what version of Oracle we are building
-#ifdef OCI_ATTR_MODULE
-#define ORACLE_10G
+// define simple way to respresent Oracle version
+#define ORACLE_VERSION(major, minor) \
+        ((major << 8) | minor)
+
+// define what version of Oracle we are building as 2 byte hex number
+#if !defined(OCI_MAJOR_VERSION) && defined(OCI_ATTR_MODULE)
+#define OCI_MAJOR_VERSION 10
+#define OCI_MINOR_VERSION 1
 #endif
-#ifdef OCI_MAJOR_VERSION
-#define ORACLE_10GR2
-#endif
-#ifdef OCI_ATTR_CONNECTION_CLASS
-#define ORACLE_11G
+#if defined(OCI_MAJOR_VERSION) && defined(OCI_MINOR_VERSION)
+#define ORACLE_VERSION_HEX \
+        ORACLE_VERSION(OCI_MAJOR_VERSION, OCI_MINOR_VERSION)
+#else
+#error Unsupported version of OCI.
 #endif
 
 // PY_LONG_LONG was called LONG_LONG before Python 2.3
@@ -241,7 +246,7 @@ static PyObject* MakeDSN(
 }
 
 
-#ifdef ORACLE_10GR2
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(10, 2)
 //-----------------------------------------------------------------------------
 // ClientVersion()
 //   Return the version of the Oracle client being used as a 5-tuple.
@@ -321,7 +326,7 @@ static PyMethodDef g_ModuleMethods[] = {
     { "DateFromTicks", (PyCFunction) DateFromTicks, METH_VARARGS },
     { "TimeFromTicks", (PyCFunction) TimeFromTicks, METH_VARARGS },
     { "TimestampFromTicks", (PyCFunction) TimestampFromTicks, METH_VARARGS },
-#ifdef ORACLE_10GR2
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(10, 2)
     { "clientversion", (PyCFunction) ClientVersion, METH_NOARGS },
 #endif
     { NULL }
@@ -381,11 +386,14 @@ static PyObject *Module_Initialize(void)
     MAKE_TYPE_READY(&g_ObjectAttributeType);
     MAKE_TYPE_READY(&g_ExternalLobVarType);
     MAKE_TYPE_READY(&g_ExternalObjectVarType);
-#ifdef ORACLE_10GR2
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(10, 2)
     MAKE_TYPE_READY(&g_SubscriptionType);
     MAKE_TYPE_READY(&g_MessageType);
     MAKE_TYPE_READY(&g_MessageTableType);
     MAKE_TYPE_READY(&g_MessageRowType);
+#endif
+#if ORACLE_VERSION_HEX > ORACLE_VERSION(11, 1)
+    MAKE_TYPE_READY(&g_MessageQueryType);
 #endif
     MAKE_VARIABLE_TYPE_READY(&g_StringVarType);
     MAKE_VARIABLE_TYPE_READY(&g_FixedCharVarType);
@@ -401,16 +409,15 @@ static PyObject *Module_Initialize(void)
     MAKE_VARIABLE_TYPE_READY(&g_BFILEVarType);
     MAKE_VARIABLE_TYPE_READY(&g_CursorVarType);
     MAKE_VARIABLE_TYPE_READY(&g_ObjectVarType);
-#if PY_MAJOR_VERSION < 3
-    MAKE_VARIABLE_TYPE_READY(&g_UnicodeVarType);
-    MAKE_VARIABLE_TYPE_READY(&g_FixedUnicodeVarType);
-    MAKE_VARIABLE_TYPE_READY(&g_LongUnicodeVarType);
-#endif
+    MAKE_VARIABLE_TYPE_READY(&g_NCharVarType);
+    MAKE_VARIABLE_TYPE_READY(&g_FixedNCharVarType);
+    MAKE_VARIABLE_TYPE_READY(&g_LongNCharVarType);
     MAKE_VARIABLE_TYPE_READY(&g_NCLOBVarType);
-#ifdef SQLT_BFLOAT
     MAKE_VARIABLE_TYPE_READY(&g_NativeFloatVarType);
-#endif
     MAKE_VARIABLE_TYPE_READY(&g_IntervalVarType);
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(12, 1)
+    MAKE_VARIABLE_TYPE_READY(&g_BooleanVarType);
+#endif
 
     // initialize module and retrieve the dictionary
 #if PY_MAJOR_VERSION >= 3
@@ -474,11 +481,12 @@ static PyObject *Module_Initialize(void)
     ADD_TYPE_OBJECT("OBJECT", &g_ObjectVarType)
     ADD_TYPE_OBJECT("DATETIME", &g_DateTimeVarType)
     ADD_TYPE_OBJECT("FIXED_CHAR", &g_FixedCharVarType)
-#if PY_MAJOR_VERSION < 3
-    ADD_TYPE_OBJECT("FIXED_UNICODE", &g_FixedUnicodeVarType)
-    ADD_TYPE_OBJECT("UNICODE", &g_UnicodeVarType)
-    ADD_TYPE_OBJECT("LONG_UNICODE", &g_LongUnicodeVarType)
-#endif
+    ADD_TYPE_OBJECT("FIXED_NCHAR", &g_FixedNCharVarType)
+    ADD_TYPE_OBJECT("FIXED_UNICODE", &g_FixedNCharVarType)
+    ADD_TYPE_OBJECT("UNICODE", &g_NCharVarType)
+    ADD_TYPE_OBJECT("LONG_UNICODE", &g_LongNCharVarType)
+    ADD_TYPE_OBJECT("NCHAR", &g_NCharVarType)
+    ADD_TYPE_OBJECT("LONG_NCHAR", &g_LongNCharVarType)
     ADD_TYPE_OBJECT("INTERVAL", &g_IntervalVarType)
     ADD_TYPE_OBJECT("LOB", &g_ExternalLobVarType)
     ADD_TYPE_OBJECT("LONG_BINARY", &g_LongBinaryVarType)
@@ -488,8 +496,9 @@ static PyObject *Module_Initialize(void)
     ADD_TYPE_OBJECT("ROWID", &g_RowidVarType)
     ADD_TYPE_OBJECT("STRING", &g_StringVarType)
     ADD_TYPE_OBJECT("TIMESTAMP", &g_TimestampVarType)
-#ifdef SQLT_BFLOAT
     ADD_TYPE_OBJECT("NATIVE_FLOAT", &g_NativeFloatVarType)
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(12, 1)
+    ADD_TYPE_OBJECT("BOOLEAN", &g_BooleanVarType)
 #endif
 
     // create constants required by Python DB API 2.0
@@ -504,6 +513,9 @@ static PyObject *Module_Initialize(void)
     if (PyModule_AddStringConstant(module, "version",
             BUILD_VERSION_STRING) < 0)
         return NULL;
+    if (PyModule_AddStringConstant(module, "__version__",
+            BUILD_VERSION_STRING) < 0)
+        return NULL;
     if (PyModule_AddStringConstant(module, "buildtime",
             __DATE__ " " __TIME__) < 0)
         return NULL;
@@ -523,7 +535,7 @@ static PyObject *Module_Initialize(void)
     ADD_OCI_CONSTANT(SPOOL_ATTRVAL_WAIT)
     ADD_OCI_CONSTANT(SPOOL_ATTRVAL_NOWAIT)
     ADD_OCI_CONSTANT(SPOOL_ATTRVAL_FORCEGET)
-#ifdef ORACLE_10GR2
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(10, 2)
     ADD_OCI_CONSTANT(PRELIM_AUTH)
     ADD_OCI_CONSTANT(DBSHUTDOWN_ABORT)
     ADD_OCI_CONSTANT(DBSHUTDOWN_FINAL)
@@ -548,11 +560,25 @@ static PyObject *Module_Initialize(void)
     ADD_OCI_CONSTANT(SUBSCR_PROTO_MAIL)
     ADD_OCI_CONSTANT(SUBSCR_PROTO_SERVER)
     ADD_OCI_CONSTANT(SUBSCR_PROTO_HTTP)
+    ADD_OCI_CONSTANT(SUBSCR_QOS_RELIABLE)
+    ADD_OCI_CONSTANT(SUBSCR_QOS_PAYLOAD)
+    ADD_OCI_CONSTANT(SUBSCR_QOS_REPLICATE)
+    ADD_OCI_CONSTANT(SUBSCR_QOS_SECURE)
+    ADD_OCI_CONSTANT(SUBSCR_QOS_PURGE_ON_NTFN)
+    ADD_OCI_CONSTANT(SUBSCR_QOS_MULTICBK)
 #endif
-#ifdef ORACLE_11G
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 1)
     ADD_OCI_CONSTANT(ATTR_PURITY_DEFAULT)
     ADD_OCI_CONSTANT(ATTR_PURITY_NEW)
     ADD_OCI_CONSTANT(ATTR_PURITY_SELF)
+    ADD_OCI_CONSTANT(EVENT_QUERYCHANGE)
+    ADD_OCI_CONSTANT(SUBSCR_CQ_QOS_QUERY)
+    ADD_OCI_CONSTANT(SUBSCR_CQ_QOS_BEST_EFFORT)
+    ADD_OCI_CONSTANT(SUBSCR_CQ_QOS_CLQRYCACHE)
+    ADD_OCI_CONSTANT(SYSASM)
+#endif
+#if ORACLE_VERSION_HEX >= ORACLE_VERSION(11, 2)
+    ADD_OCI_CONSTANT(SUBSCR_QOS_HAREG)
 #endif
 
     return module;

+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/samples/DatabaseChangeNotification.py → desktop/core/ext-py/cx_Oracle-5.2.1/samples/DatabaseChangeNotification.py


+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/samples/DatabaseShutdown.py → desktop/core/ext-py/cx_Oracle-5.2.1/samples/DatabaseShutdown.py


+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/samples/DatabaseStartup.py → desktop/core/ext-py/cx_Oracle-5.2.1/samples/DatabaseStartup.py


+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/samples/ReturnLongs.py → desktop/core/ext-py/cx_Oracle-5.2.1/samples/ReturnLongs.py


+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/samples/ReturnUnicode.py → desktop/core/ext-py/cx_Oracle-5.2.1/samples/ReturnUnicode.py


+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/samples/RowsAsInstance.py → desktop/core/ext-py/cx_Oracle-5.2.1/samples/RowsAsInstance.py


+ 5 - 0
desktop/core/ext-py/cx_Oracle-5.2.1/setup.cfg

@@ -0,0 +1,5 @@
+[egg_info]
+tag_date = 0
+tag_svn_revision = 0
+tag_build = 
+

+ 75 - 34
desktop/core/ext-py/cx_Oracle-5.1.2/setup.py → desktop/core/ext-py/cx_Oracle-5.2.1/setup.py

@@ -26,6 +26,7 @@ import os
 import re
 import struct
 import sys
+import glob
 
 from distutils.errors import DistutilsSetupError
 
@@ -37,15 +38,15 @@ except:
     from distutils.extension import Extension
 
 # define build constants
-BUILD_VERSION = "5.1.2"
+BUILD_VERSION = "5.2.1"
 
 # define the list of files to be included as documentation for Windows
 dataFiles = None
 if sys.platform in ("win32", "cygwin"):
     baseName = "cx_Oracle-doc"
     dataFiles = [ (baseName,
-            [ "BUILD.txt", "LICENSE.TXT", "README.TXT", "HISTORY.txt"]) ]
-    for dir in ("html", "html/_static", "samples", "test"):
+            [ "BUILD.txt", "README.txt"]) ]
+    for dir in ("samples", "test"):
         files = []
         fullDirName = "%s/%s" % (baseName, dir)
         for name in os.listdir(dir):
@@ -58,7 +59,7 @@ if sys.platform in ("win32", "cygwin"):
         dataFiles.append((fullDirName, files))
 
 # define the list of files to be included as documentation for bdist_rpm
-docFiles = "LICENSE.txt README.txt BUILD.txt HISTORY.txt html samples test"
+docFiles = "README.txt BUILD.txt samples test"
 
 # method for checking a potential Oracle home
 def CheckOracleHome(directoryToCheck):
@@ -69,16 +70,16 @@ def CheckOracleHome(directoryToCheck):
     if sys.platform in ("win32", "cygwin"):
         subDirs = ["bin"]
         filesToCheck = [
+                ("12c", "oraocci12.dll"),
                 ("11g", "oraocci11.dll"),
-                ("10g", "oraocci10.dll"),
-                ("9i", "oraclient9.dll")
+                ("10g", "oraocci10.dll")
         ]
     elif sys.platform == "darwin":
         subDirs = ["lib"]
         filesToCheck = [
+                ("12c", "libclntsh.dylib.12.1"),
                 ("11g", "libclntsh.dylib.11.1"),
-                ("10g", "libclntsh.dylib.10.1"),
-                ("9i", "libclntsh.dylib.9.0")
+                ("10g", "libclntsh.dylib.10.1")
         ]
     else:
         if struct.calcsize("P") == 4:
@@ -86,9 +87,9 @@ def CheckOracleHome(directoryToCheck):
         else:
             subDirs = ["lib", "lib64"]
         filesToCheck = [
+                ("12c", "libclntsh.so.12.1"),
                 ("11g", "libclntsh.so.11.1"),
-                ("10g", "libclntsh.so.10.1"),
-                ("9i", "libclntsh.so.9.0")
+                ("10g", "libclntsh.so.10.1")
         ]
     for version, baseFileName in filesToCheck:
         fileName = os.path.join(directoryToCheck, baseFileName)
@@ -117,20 +118,57 @@ def CheckOracleHome(directoryToCheck):
     oracleHome = oracleVersion = oracleLibDir = None
     return False
 
+# Look for the highest version Instant Client "basic" or "basiclite" RPM
+# Newer Instant Client dirs have the form:
+#    /usr/lib/oracle/12.1/client[64]/lib
+# Older Instant Client dirs have the form:
+#    /usr/lib/oracle/10.2.0.5/client[64]/lib
+def FindInstantClientRPMLib():
+    versions = []
+    for path in glob.glob(os.path.join(rpmBaseLibDir, "[0-9.]*")):
+        versions.append(os.path.basename(path))
+    versions.sort(key = lambda x: [int(s) for s in x.split(".")])
+    versions.reverse()
+    for version in versions:
+        path = os.path.join(rpmBaseLibDir, version, rpmClientDir, "lib")
+        if os.path.exists(path) and CheckOracleHome(path):
+            return path
+
+# If the lib dir appears to be an Instant Client RPM dir, then look only
+# for matching SDK headers
+def FindInstantClientRPMInclude(libDir):
+    version = os.path.basename(os.path.dirname(os.path.dirname(libDir)))
+    includeDir = os.path.join("/usr/include/oracle", version, rpmClientDir)
+    if os.path.isfile(os.path.join(includeDir, "oci.h")):
+        return [includeDir]
+    raise DistutilsSetupError("cannot locate Oracle Instant Client " \
+            "SDK RPM header files")
+
+# define Linux Instant Client RPM path components
+# Assume 64 bit builds if the platform is 64 bit
+rpmBaseLibDir = "/usr/lib/oracle"
+if struct.calcsize("P") == 4:
+    rpmClientDir = "client"
+else:
+    rpmClientDir = "client64"
+instantClientRPMLib = None
+
 # try to determine the Oracle home
-userOracleHome = os.environ.get("ORACLE_HOME", os.environ.get("ORACLE_INSTANTCLIENT_HOME"))
+userOracleHome = os.environ.get("ORACLE_HOME")
 if userOracleHome is not None:
     if not CheckOracleHome(userOracleHome):
         messageFormat = "Oracle home (%s) does not refer to an " \
-                "9i, 10g or 11g installation."
+                "10g, 11g or 12c installation."
         raise DistutilsSetupError(messageFormat % userOracleHome)
 else:
     for path in os.environ["PATH"].split(os.pathsep):
         if CheckOracleHome(path):
             break
+    if oracleHome is None and sys.platform.startswith("linux"):
+        instantClientRPMLib = FindInstantClientRPMLib()
     if oracleHome is None:
-        print >>sys.stderr, "cannot locate an Oracle software installation. skipping"
-        sys.exit(0)
+        raise DistutilsSetupError("cannot locate an Oracle software " \
+                "installation")
 
 # define some variables
 if sys.platform == "win32":
@@ -159,25 +197,28 @@ elif sys.platform == "cygwin":
 else:
     libDirs = [oracleLibDir]
     libs = ["clntsh"]
-    possibleIncludeDirs = ["rdbms/demo", "rdbms/public", "network/public",
-            "sdk/include"]
-    if sys.platform == "darwin":
-        possibleIncludeDirs.append("plsql/public")
-    includeDirs = []
-    for dir in possibleIncludeDirs:
-        path = os.path.join(oracleHome, dir)
-        if os.path.isdir(path):
-            includeDirs.append(path)
-    if not includeDirs:
-        path = os.path.join(oracleLibDir, "include")
-        if os.path.isdir(path):
-            includeDirs.append(path)
-    if not includeDirs:
-        path = re.sub("lib(64)?", "include", oracleHome)
-        if os.path.isdir(path):
-            includeDirs.append(path)
-    if not includeDirs:
-        raise DistutilsSetupError("cannot locate Oracle include files")
+    if instantClientRPMLib is not None:
+        includeDirs = FindInstantClientRPMInclude(instantClientRPMLib)
+    else:
+        possibleIncludeDirs = ["rdbms/demo", "rdbms/public", "network/public",
+                "sdk/include"]
+        if sys.platform == "darwin":
+            possibleIncludeDirs.append("plsql/public")
+        includeDirs = []
+        for dir in possibleIncludeDirs:
+            path = os.path.join(oracleHome, dir)
+            if os.path.isdir(path):
+                includeDirs.append(path)
+        if not includeDirs:
+            path = os.path.join(oracleLibDir, "include")
+            if os.path.isdir(path):
+                includeDirs.append(path)
+        if not includeDirs:
+            path = re.sub("lib(64)?", "include", oracleHome)
+            if os.path.isdir(path):
+                includeDirs.append(path)
+        if not includeDirs:
+            raise DistutilsSetupError("cannot locate Oracle include files")
 
 # NOTE: on HP-UX Itanium with Oracle 10g you need to add the library "ttsh10"
 # to the list of libraries along with "clntsh"; since I am unable to test, I'll
@@ -200,7 +241,7 @@ elif sys.platform == "darwin":
 # force the inclusion of an RPATH linker directive if desired; this will
 # eliminate the need for setting LD_LIBRARY_PATH but it also means that this
 # location will be the only location searched for the Oracle client library
-if "FORCE_RPATH" in os.environ:
+if "FORCE_RPATH" in os.environ or instantClientRPMLib:
     extraLinkArgs.append("-Wl,-rpath,%s" % oracleLibDir)
 
 # tweak distribution full name to include the Oracle version

+ 165 - 0
desktop/core/ext-py/cx_Oracle-5.2.1/test/3kArrayDMLBatchError.py

@@ -0,0 +1,165 @@
+"""Module for testing row count per iteration for DML Array and Batch errors"""
+
+class TestArrayDMLBatchError(BaseTestCase):
+
+    def testArrayDMLRowCountsOff(self):
+        "test executing with arraydmlrowcounts mode disabled"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First"),
+                 (2, "Second") ]
+        sql = "insert into TestArrayDML (IntCol,StringCol) values (:1,:2)"
+        self.cursor.executemany(sql, rows, arraydmlrowcounts = False)
+        self.failUnlessRaises(cx_Oracle.DatabaseError,
+                self.cursor.getarraydmlrowcounts)
+        rows = [ (3, "Third"),
+                 (4, "Fourth") ]
+        self.cursor.executemany(sql, rows)
+        self.failUnlessRaises(cx_Oracle.DatabaseError,
+                self.cursor.getarraydmlrowcounts)
+
+    def testArrayDMLRowCountsOn(self):
+        "test executing with arraydmlrowcounts mode enabled"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ ( 1, "First", 100),
+                 ( 2, "Second", 200),
+                 ( 3, "Third", 300),
+                 ( 4, "Fourth", 300),
+                 ( 5, "Fifth", 300) ]
+        sql = "insert into TestArrayDML (IntCol,StringCol,IntCol2) " \
+                "values (:1,:2,:3)"
+        self.cursor.executemany(sql, rows, arraydmlrowcounts = True)
+        self.connection.commit()
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(),
+                [1, 1, 1, 1, 1])
+        self.cursor.execute("select count(*) from TestArrayDML")
+        count, = self.cursor.fetchone()
+        self.failUnlessEqual(count, len(rows))
+
+    def testExceptionInIteration(self):
+        "test executing with arraydmlrowcounts with exception"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First"),
+                 (2, "Second"),
+                 (2, "Third"),
+                 (4, "Fourth") ]
+        sql = "insert into TestArrayDML (IntCol,StringCol) values (:1,:2)"
+        self.failUnlessRaises(cx_Oracle.DatabaseError, self.cursor.executemany,
+                sql, rows, arraydmlrowcounts = True)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(), [1, 1])
+
+    def testExecutingDelete(self):
+        "test executing delete statement with arraydmlrowcount mode"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First", 100),
+                 (2, "Second", 200),
+                 (3, "Third", 300),
+                 (4, "Fourth", 300),
+                 (5, "Fifth", 300),
+                 (6, "Sixth", 400),
+                 (7, "Seventh", 400),
+                 (8, "Eighth", 500) ]
+        sql = "insert into TestArrayDML (IntCol,StringCol,IntCol2) " \
+                "values (:1, :2, :3)"
+        self.cursor.executemany(sql, rows)
+        rows = [ (200,), (300,), (400,) ]
+        statement = "delete from TestArrayDML where IntCol2 = :1"
+        self.cursor.executemany(statement, rows, arraydmlrowcounts = True)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(), [1, 3, 2])
+
+    def testExecutingUpdate(self):
+        "test executing update statement with arraydmlrowcount mode"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First",100),
+                 (2, "Second",200),
+                 (3, "Third",300),
+                 (4, "Fourth",300),
+                 (5, "Fifth",300),
+                 (6, "Sixth",400),
+                 (7, "Seventh",400),
+                 (8, "Eighth",500) ]
+        sql = "insert into TestArrayDML (IntCol,StringCol,IntCol2) " \
+                "values (:1, :2, :3)"
+        self.cursor.executemany(sql, rows)
+        rows = [ ("One", 100),
+                 ("Two", 200),
+                 ("Three", 300),
+                 ("Four", 400) ]
+        sql = "update TestArrayDML set StringCol = :1 where IntCol2 = :2"
+        self.cursor.executemany(sql, rows, arraydmlrowcounts = True)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(), [1, 1, 3, 2])
+
+    def testInsertWithBatchError(self):
+        "test executing insert with multiple distinct batch errors"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First", 100),
+                 (2, "Second", 200),
+                 (2, "Third", 300),
+                 (4, "Fourth", 400),
+                 (5, "Fourth", 1000)]
+        sql = "insert into TestArrayDML (IntCol, StringCol, IntCol2) " \
+                "values (:1, :2, :3)"
+        self.cursor.executemany(sql, rows, batcherrors = True,
+                arraydmlrowcounts = True)
+        expectedErrors = [
+                ( 4, 1438, "ORA-01438: value larger than specified " \
+                        "precision allowed for this column\n" ),
+                ( 2, 1, "ORA-00001: unique constraint " \
+                        "(CX_ORACLE.TESTARRAYDML_PK) violated\n")
+        ]
+        actualErrors = [(e.offset, e.code, e.message) \
+                for e in self.cursor.getbatcherrors()]
+        self.failUnlessEqual(actualErrors, expectedErrors)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(),
+                [1, 1, 0, 1, 0])
+
+    def testBatchErrorFalse(self):
+        "test batcherrors mode set to False"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First", 100),
+                 (2, "Second", 200),
+                 (2, "Third", 300) ]
+        sql = "insert into TestArrayDML (IntCol, StringCol, IntCol2) " \
+                "values (:1, :2, :3)"
+        self.failUnlessRaises(cx_Oracle.IntegrityError,
+                self.cursor.executemany, sql, rows, batcherrors = False)
+
+    def testUpdatewithBatchError(self):
+        "test executing in succession with batch error"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First", 100),
+                 (2, "Second", 200),
+                 (3, "Third", 300),
+                 (4, "Second", 300),
+                 (5, "Fifth", 300),
+                 (6, "Sixth", 400),
+                 (6, "Seventh", 400),
+                 (8, "Eighth", 100) ]
+        sql = "insert into TestArrayDML (IntCol, StringCol, IntCol2) " \
+                "values (:1, :2, :3)"
+        self.cursor.executemany(sql, rows, batcherrors = True)
+        expectedErrors = [
+                ( 6, 1, "ORA-00001: unique constraint " \
+                        "(CX_ORACLE.TESTARRAYDML_PK) violated\n")
+        ]
+        actualErrors = [(e.offset, e.code, e.message) \
+                for e in self.cursor.getbatcherrors()]
+        self.failUnlessEqual(actualErrors, expectedErrors)
+        rows = [ (101, "First"),
+                 (201, "Second"),
+                 (3000, "Third"),
+                 (900, "Ninth"),
+                 (301, "Third") ]
+        sql = "update TestArrayDML set IntCol2 = :1 where StringCol = :2"
+        self.cursor.executemany(sql, rows, arraydmlrowcounts = True,
+                batcherrors = True)
+        expectedErrors = [
+                ( 2, 1438, "ORA-01438: value larger than specified " \
+                        "precision allowed for this column\n" )
+        ]
+        actualErrors = [(e.offset, e.code, e.message) \
+                for e in self.cursor.getbatcherrors()]
+        self.failUnlessEqual(actualErrors, expectedErrors)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(),
+                [1, 2, 0, 0, 1])
+        self.failUnlessEqual(self.cursor.rowcount, 4)
+

+ 29 - 29
desktop/core/ext-py/cx_Oracle-5.1.2/test/3kNumberVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/3kNumberVar.py

@@ -83,33 +83,33 @@ class TestNumberVar(BaseTestCase):
         array = [r[1] for r in self.rawData]
         statement = """
                 begin
-                  :p_ReturnValue := pkg_TestNumberArrays.TestInArrays(
-                      :p_StartValue, :p_Array);
+                  :returnValue := pkg_TestNumberArrays.TestInArrays(
+                      :startValue, :array);
                 end;"""
         self.cursor.execute(statement,
-                p_ReturnValue = returnValue,
-                p_StartValue = 5,
-                p_Array = array)
+                returnValue = returnValue,
+                startValue = 5,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 73.75)
         array = list(range(15))
         self.cursor.execute(statement,
-                p_StartValue = 10,
-                p_Array = array)
+                startValue = 10,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 115.0)
 
     def testBindNumberArrayBySizes(self):
         "test binding in a number array (with setinputsizes)"
         returnValue = self.cursor.var(cx_Oracle.NUMBER)
-        self.cursor.setinputsizes(p_Array = [cx_Oracle.NUMBER, 10])
+        self.cursor.setinputsizes(array = [cx_Oracle.NUMBER, 10])
         array = [r[1] for r in self.rawData]
         self.cursor.execute("""
                 begin
-                  :p_ReturnValue := pkg_TestNumberArrays.TestInArrays(
-                      :p_StartValue, :p_Array);
+                  :returnValue := pkg_TestNumberArrays.TestInArrays(
+                      :startValue, :array);
                 end;""",
-                p_ReturnValue = returnValue,
-                p_StartValue = 6,
-                p_Array = array)
+                returnValue = returnValue,
+                startValue = 6,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 74.75)
 
     def testBindNumberArrayByVar(self):
@@ -120,12 +120,12 @@ class TestNumberVar(BaseTestCase):
         array.setvalue(0, [r[1] for r in self.rawData])
         self.cursor.execute("""
                 begin
-                  :p_ReturnValue := pkg_TestNumberArrays.TestInArrays(
-                      :p_IntegerValue, :p_Array);
+                  :returnValue := pkg_TestNumberArrays.TestInArrays(
+                      :integerValue, :array);
                 end;""",
-                p_ReturnValue = returnValue,
-                p_IntegerValue = 7,
-                p_Array = array)
+                returnValue = returnValue,
+                integerValue = 7,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 75.75)
 
     def testBindZeroLengthNumberArrayByVar(self):
@@ -134,12 +134,12 @@ class TestNumberVar(BaseTestCase):
         array = self.cursor.arrayvar(cx_Oracle.NUMBER, 0)
         self.cursor.execute("""
                 begin
-                  :p_ReturnValue := pkg_TestNumberArrays.TestInArrays(
-                      :p_IntegerValue, :p_Array);
+                  :returnValue := pkg_TestNumberArrays.TestInArrays(
+                      :integerValue, :array);
                 end;""",
-                p_ReturnValue = returnValue,
-                p_IntegerValue = 8,
-                p_Array = array)
+                returnValue = returnValue,
+                integerValue = 8,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 8.0)
         self.failUnlessEqual(array.getvalue(), [])
 
@@ -152,10 +152,10 @@ class TestNumberVar(BaseTestCase):
         array.setvalue(0, originalData)
         self.cursor.execute("""
                 begin
-                  pkg_TestNumberArrays.TestInOutArrays(:p_NumElems, :p_Array);
+                  pkg_TestNumberArrays.TestInOutArrays(:numElems, :array);
                 end;""",
-                p_NumElems = 5,
-                p_Array = array)
+                numElems = 5,
+                array = array)
         self.failUnlessEqual(array.getvalue(), expectedData)
 
     def testBindOutNumberArrayByVar(self):
@@ -164,10 +164,10 @@ class TestNumberVar(BaseTestCase):
         expectedData = [i * 100 for i in range(1, 7)]
         self.cursor.execute("""
                 begin
-                  pkg_TestNumberArrays.TestOutArrays(:p_NumElems, :p_Array);
+                  pkg_TestNumberArrays.TestOutArrays(:numElems, :array);
                 end;""",
-                p_NumElems = 6,
-                p_Array = array)
+                numElems = 6,
+                array = array)
         self.failUnlessEqual(array.getvalue(), expectedData)
 
     def testBindOutSetInputSizes(self):

+ 55 - 68
desktop/core/ext-py/cx_Oracle-5.1.2/test/3kStringVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/3kStringVar.py

@@ -22,8 +22,8 @@ class TestStringVar(BaseTestCase):
         "test binding in a string"
         self.cursor.execute("""
                 select * from TestStrings
-                where StringCol = :p_Value""",
-                p_Value = "String 5")
+                where StringCol = :value""",
+                value = "String 5")
         self.failUnlessEqual(self.cursor.fetchall(), [self.dataByKey[5]])
 
     def testBindDifferentVar(self):
@@ -39,11 +39,11 @@ class TestStringVar(BaseTestCase):
 
     def testBindStringAfterNumber(self):
         "test binding in a string after setting input sizes to a number"
-        self.cursor.setinputsizes(p_Value = cx_Oracle.NUMBER)
+        self.cursor.setinputsizes(value = cx_Oracle.NUMBER)
         self.cursor.execute("""
                 select * from TestStrings
-                where StringCol = :p_Value""",
-                p_Value = "String 6")
+                where StringCol = :value""",
+                value = "String 6")
         self.failUnlessEqual(self.cursor.fetchall(), [self.dataByKey[6]])
 
     def testBindStringArrayDirect(self):
@@ -52,33 +52,33 @@ class TestStringVar(BaseTestCase):
         array = [r[1] for r in self.rawData]
         statement = """
                 begin
-                  :p_ReturnValue := pkg_TestStringArrays.TestInArrays(
-                      :p_IntegerValue, :p_Array);
+                  :returnValue := pkg_TestStringArrays.TestInArrays(
+                      :integerValue, :array);
                 end;"""
         self.cursor.execute(statement,
-                p_ReturnValue = returnValue,
-                p_IntegerValue = 5,
-                p_Array = array)
+                returnValue = returnValue,
+                integerValue = 5,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 86)
         array = [ "String - %d" % i for i in range(15) ]
         self.cursor.execute(statement,
-                p_IntegerValue = 8,
-                p_Array = array)
+                integerValue = 8,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 163)
 
     def testBindStringArrayBySizes(self):
         "test binding in a string array (with setinputsizes)"
         returnValue = self.cursor.var(cx_Oracle.NUMBER)
-        self.cursor.setinputsizes(p_Array = [cx_Oracle.STRING, 10])
+        self.cursor.setinputsizes(array = [cx_Oracle.STRING, 10])
         array = [r[1] for r in self.rawData]
         self.cursor.execute("""
                 begin
-                  :p_ReturnValue := pkg_TestStringArrays.TestInArrays(
-                      :p_IntegerValue, :p_Array);
+                  :returnValue := pkg_TestStringArrays.TestInArrays(
+                      :integerValue, :array);
                 end;""",
-                p_ReturnValue = returnValue,
-                p_IntegerValue = 6,
-                p_Array = array)
+                returnValue = returnValue,
+                integerValue = 6,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 87)
 
     def testBindStringArrayByVar(self):
@@ -88,12 +88,12 @@ class TestStringVar(BaseTestCase):
         array.setvalue(0, [r[1] for r in self.rawData])
         self.cursor.execute("""
                 begin
-                  :p_ReturnValue := pkg_TestStringArrays.TestInArrays(
-                      :p_IntegerValue, :p_Array);
+                  :returnValue := pkg_TestStringArrays.TestInArrays(
+                      :integerValue, :array);
                 end;""",
-                p_ReturnValue = returnValue,
-                p_IntegerValue = 7,
-                p_Array = array)
+                returnValue = returnValue,
+                integerValue = 7,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 88)
 
     def testBindInOutStringArrayByVar(self):
@@ -106,10 +106,10 @@ class TestStringVar(BaseTestCase):
         array.setvalue(0, originalData)
         self.cursor.execute("""
                 begin
-                  pkg_TestStringArrays.TestInOutArrays(:p_NumElems, :p_Array);
+                  pkg_TestStringArrays.TestInOutArrays(:numElems, :array);
                 end;""",
-                p_NumElems = 5,
-                p_Array = array)
+                numElems = 5,
+                array = array)
         self.failUnlessEqual(array.getvalue(), expectedData)
 
     def testBindOutStringArrayByVar(self):
@@ -118,19 +118,19 @@ class TestStringVar(BaseTestCase):
         expectedData = ["Test out element # %d" % i for i in range(1, 7)]
         self.cursor.execute("""
                 begin
-                  pkg_TestStringArrays.TestOutArrays(:p_NumElems, :p_Array);
+                  pkg_TestStringArrays.TestOutArrays(:numElems, :array);
                 end;""",
-                p_NumElems = 6,
-                p_Array = array)
+                numElems = 6,
+                array = array)
         self.failUnlessEqual(array.getvalue(), expectedData)
 
     def testBindRaw(self):
         "test binding in a raw"
-        self.cursor.setinputsizes(p_Value = cx_Oracle.BINARY)
+        self.cursor.setinputsizes(value = cx_Oracle.BINARY)
         self.cursor.execute("""
                 select * from TestStrings
-                where RawCol = :p_Value""",
-                p_Value = b"Raw 4")
+                where RawCol = :value""",
+                value = b"Raw 4")
         self.failUnlessEqual(self.cursor.fetchall(), [self.dataByKey[4]])
 
     def testBindAndFetchRowid(self):
@@ -143,64 +143,64 @@ class TestStringVar(BaseTestCase):
         self.cursor.execute("""
                 select *
                 from TestStrings
-                where rowid = :p_Value""",
-                p_Value = rowid)
+                where rowid = :value""",
+                value = rowid)
         self.failUnlessEqual(self.cursor.fetchall(), [self.dataByKey[3]])
 
     def testBindNull(self):
         "test binding in a null"
         self.cursor.execute("""
                 select * from TestStrings
-                where StringCol = :p_Value""",
-                p_Value = None)
+                where StringCol = :value""",
+                value = None)
         self.failUnlessEqual(self.cursor.fetchall(), [])
 
     def testBindOutSetInputSizesByType(self):
         "test binding out with set input sizes defined (by type)"
-        vars = self.cursor.setinputsizes(p_Value = cx_Oracle.STRING)
+        vars = self.cursor.setinputsizes(value = cx_Oracle.STRING)
         self.cursor.execute("""
                 begin
-                  :p_Value := 'TSI';
+                  :value := 'TSI';
                 end;""")
-        self.failUnlessEqual(vars["p_Value"].getvalue(), "TSI")
+        self.failUnlessEqual(vars["value"].getvalue(), "TSI")
 
     def testBindOutSetInputSizesByInteger(self):
         "test binding out with set input sizes defined (by integer)"
-        vars = self.cursor.setinputsizes(p_Value = 30)
+        vars = self.cursor.setinputsizes(value = 30)
         self.cursor.execute("""
                 begin
-                  :p_Value := 'TSI (I)';
+                  :value := 'TSI (I)';
                 end;""")
-        self.failUnlessEqual(vars["p_Value"].getvalue(), "TSI (I)")
+        self.failUnlessEqual(vars["value"].getvalue(), "TSI (I)")
 
     def testBindInOutSetInputSizesByType(self):
         "test binding in/out with set input sizes defined (by type)"
-        vars = self.cursor.setinputsizes(p_Value = cx_Oracle.STRING)
+        vars = self.cursor.setinputsizes(value = cx_Oracle.STRING)
         self.cursor.execute("""
                 begin
-                  :p_Value := :p_Value || ' TSI';
+                  :value := :value || ' TSI';
                 end;""",
-                p_Value = "InVal")
-        self.failUnlessEqual(vars["p_Value"].getvalue(), "InVal TSI")
+                value = "InVal")
+        self.failUnlessEqual(vars["value"].getvalue(), "InVal TSI")
 
     def testBindInOutSetInputSizesByInteger(self):
         "test binding in/out with set input sizes defined (by integer)"
-        vars = self.cursor.setinputsizes(p_Value = 30)
+        vars = self.cursor.setinputsizes(value = 30)
         self.cursor.execute("""
                 begin
-                  :p_Value := :p_Value || ' TSI (I)';
+                  :value := :value || ' TSI (I)';
                 end;""",
-                p_Value = "InVal")
-        self.failUnlessEqual(vars["p_Value"].getvalue(), "InVal TSI (I)")
+                value = "InVal")
+        self.failUnlessEqual(vars["value"].getvalue(), "InVal TSI (I)")
 
     def testBindOutVar(self):
         "test binding out with cursor.var() method"
         var = self.cursor.var(cx_Oracle.STRING)
         self.cursor.execute("""
                 begin
-                  :p_Value := 'TSI (VAR)';
+                  :value := 'TSI (VAR)';
                 end;""",
-                p_Value = var)
+                value = var)
         self.failUnlessEqual(var.getvalue(), "TSI (VAR)")
 
     def testBindInOutVarDirectSet(self):
@@ -209,13 +209,14 @@ class TestStringVar(BaseTestCase):
         var.setvalue(0, "InVal")
         self.cursor.execute("""
                 begin
-                  :p_Value := :p_Value || ' TSI (VAR)';
+                  :value := :value || ' TSI (VAR)';
                 end;""",
-                p_Value = var)
+                value = var)
         self.failUnlessEqual(var.getvalue(), "InVal TSI (VAR)")
 
     def testBindLongString(self):
         "test that binding a long string succeeds"
+        self.cursor.setinputsizes(bigString = cx_Oracle.LONG_STRING)
         self.cursor.execute("""
                 declare
                   t_Temp varchar2(10000);
@@ -227,7 +228,6 @@ class TestStringVar(BaseTestCase):
     def testBindLongStringAfterSettingSize(self):
         "test that setinputsizes() returns a long variable"
         var = self.cursor.setinputsizes(test = 90000)["test"]
-        self.failUnlessEqual(type(var), cx_Oracle.LONG_STRING)
         inString = "1234567890" * 9000
         var.setvalue(0, inString)
         outString = var.getvalue()
@@ -235,19 +235,6 @@ class TestStringVar(BaseTestCase):
                 "output does not match: in was %d, out was %d" % \
                 (len(inString), len(outString)))
 
-    def testStringMaximumReached(self):
-        "test that an error is raised when maximum string length exceeded"
-        var = self.cursor.setinputsizes(test = 100)["test"]
-        inString = "1234567890" * 400
-        var.setvalue(0, inString)
-        outString = var.getvalue()
-        self.failUnlessEqual(inString, outString,
-                "output does not match: in was %d, out was %d" % \
-                (len(inString), len(outString)))
-        badStringSize = 4000 * self.connection.maxBytesPerCharacter + 1
-        inString = "X" * badStringSize
-        self.failUnlessRaises(ValueError, var.setvalue, 0, inString)
-
     def testCursorDescription(self):
         "test cursor description is accurate"
         self.cursor.execute("select * from TestStrings")

+ 166 - 0
desktop/core/ext-py/cx_Oracle-5.2.1/test/ArrayDMLBatchError.py

@@ -0,0 +1,166 @@
+"""Module for testing row count per iteration for DML Array and Batch errors"""
+
+class TestArrayDMLBatchError(BaseTestCase):
+
+    def testArrayDMLRowCountsOff(self):
+        "test executing with arraydmlrowcounts mode disabled"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First"),
+                 (2, "Second") ]
+        sql = "insert into TestArrayDML (IntCol,StringCol) values (:1,:2)"
+        self.cursor.executemany(sql, rows, arraydmlrowcounts = False)
+        self.failUnlessRaises(cx_Oracle.DatabaseError,
+                self.cursor.getarraydmlrowcounts)
+        rows = [ (3, "Third"),
+                 (4, "Fourth") ]
+        self.cursor.executemany(sql, rows)
+        self.failUnlessRaises(cx_Oracle.DatabaseError,
+                self.cursor.getarraydmlrowcounts)
+
+    def testArrayDMLRowCountsOn(self):
+        "test executing with arraydmlrowcounts mode enabled"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ ( 1, "First", 100),
+                 ( 2, "Second", 200),
+                 ( 3, "Third", 300),
+                 ( 4, "Fourth", 300),
+                 ( 5, "Fifth", 300) ]
+        sql = "insert into TestArrayDML (IntCol,StringCol,IntCol2) " \
+                "values (:1,:2,:3)"
+        self.cursor.executemany(sql, rows, arraydmlrowcounts = True)
+        self.connection.commit()
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(),
+                [1L, 1L, 1L, 1L, 1L])
+        self.cursor.execute("select count(*) from TestArrayDML")
+        count, = self.cursor.fetchone()
+        self.failUnlessEqual(count, len(rows))
+
+    def testExceptionInIteration(self):
+        "test executing with arraydmlrowcounts with exception"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First"),
+                 (2, "Second"),
+                 (2, "Third"),
+                 (4, "Fourth") ]
+        sql = "insert into TestArrayDML (IntCol,StringCol) values (:1,:2)"
+        self.failUnlessRaises(cx_Oracle.DatabaseError, self.cursor.executemany,
+                sql, rows, arraydmlrowcounts = True)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(), [1L, 1L])
+
+    def testExecutingDelete(self):
+        "test executing delete statement with arraydmlrowcount mode"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First", 100),
+                 (2, "Second", 200),
+                 (3, "Third", 300),
+                 (4, "Fourth", 300),
+                 (5, "Fifth", 300),
+                 (6, "Sixth", 400),
+                 (7, "Seventh", 400),
+                 (8, "Eighth", 500) ]
+        sql = "insert into TestArrayDML (IntCol,StringCol,IntCol2) " \
+                "values (:1, :2, :3)"
+        self.cursor.executemany(sql, rows)
+        rows = [ (200,), (300,), (400,) ]
+        statement = "delete from TestArrayDML where IntCol2 = :1"
+        self.cursor.executemany(statement, rows, arraydmlrowcounts = True)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(), [1L, 3L, 2L])
+
+    def testExecutingUpdate(self):
+        "test executing update statement with arraydmlrowcount mode"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First",100),
+                 (2, "Second",200),
+                 (3, "Third",300),
+                 (4, "Fourth",300),
+                 (5, "Fifth",300),
+                 (6, "Sixth",400),
+                 (7, "Seventh",400),
+                 (8, "Eighth",500) ]
+        sql = "insert into TestArrayDML (IntCol,StringCol,IntCol2) " \
+                "values (:1, :2, :3)"
+        self.cursor.executemany(sql, rows)
+        rows = [ ("One", 100),
+                 ("Two", 200),
+                 ("Three", 300),
+                 ("Four", 400) ]
+        sql = "update TestArrayDML set StringCol = :1 where IntCol2 = :2"
+        self.cursor.executemany(sql, rows, arraydmlrowcounts = True)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(),
+                [1L, 1L, 3L, 2L])
+
+    def testInsertWithBatchError(self):
+        "test executing insert with multiple distinct batch errors"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First", 100),
+                 (2, "Second", 200),
+                 (2, "Third", 300),
+                 (4, "Fourth", 400),
+                 (5, "Fourth", 1000)]
+        sql = "insert into TestArrayDML (IntCol, StringCol, IntCol2) " \
+                "values (:1, :2, :3)"
+        self.cursor.executemany(sql, rows, batcherrors = True,
+                arraydmlrowcounts = True)
+        expectedErrors = [
+                ( 4, 1438, "ORA-01438: value larger than specified " \
+                        "precision allowed for this column\n" ),
+                ( 2, 1, "ORA-00001: unique constraint " \
+                        "(CX_ORACLE.TESTARRAYDML_PK) violated\n")
+        ]
+        actualErrors = [(e.offset, e.code, e.message) \
+                for e in self.cursor.getbatcherrors()]
+        self.failUnlessEqual(actualErrors, expectedErrors)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(),
+                [1L, 1L, 0L, 1L, 0L])
+
+    def testBatchErrorFalse(self):
+        "test batcherrors mode set to False"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First", 100),
+                 (2, "Second", 200),
+                 (2, "Third", 300) ]
+        sql = "insert into TestArrayDML (IntCol, StringCol, IntCol2) " \
+                "values (:1, :2, :3)"
+        self.failUnlessRaises(cx_Oracle.IntegrityError,
+                self.cursor.executemany, sql, rows, batcherrors = False)
+
+    def testUpdatewithBatchError(self):
+        "test executing in succession with batch error"
+        self.cursor.execute("truncate table TestArrayDML")
+        rows = [ (1, "First", 100),
+                 (2, "Second", 200),
+                 (3, "Third", 300),
+                 (4, "Second", 300),
+                 (5, "Fifth", 300),
+                 (6, "Sixth", 400),
+                 (6, "Seventh", 400),
+                 (8, "Eighth", 100) ]
+        sql = "insert into TestArrayDML (IntCol, StringCol, IntCol2) " \
+                "values (:1, :2, :3)"
+        self.cursor.executemany(sql, rows, batcherrors = True)
+        expectedErrors = [
+                ( 6, 1, "ORA-00001: unique constraint " \
+                        "(CX_ORACLE.TESTARRAYDML_PK) violated\n")
+        ]
+        actualErrors = [(e.offset, e.code, e.message) \
+                for e in self.cursor.getbatcherrors()]
+        self.failUnlessEqual(actualErrors, expectedErrors)
+        rows = [ (101, "First"),
+                 (201, "Second"),
+                 (3000, "Third"),
+                 (900, "Ninth"),
+                 (301, "Third") ]
+        sql = "update TestArrayDML set IntCol2 = :1 where StringCol = :2"
+        self.cursor.executemany(sql, rows, arraydmlrowcounts = True,
+                batcherrors = True)
+        expectedErrors = [
+                ( 2, 1438, "ORA-01438: value larger than specified " \
+                        "precision allowed for this column\n" )
+        ]
+        actualErrors = [(e.offset, e.code, e.message) \
+                for e in self.cursor.getbatcherrors()]
+        self.failUnlessEqual(actualErrors, expectedErrors)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(),
+                [1L, 2L, 0L, 0L, 1L])
+        self.failUnlessEqual(self.cursor.rowcount, 4)
+

+ 35 - 0
desktop/core/ext-py/cx_Oracle-5.2.1/test/BooleanVar.py

@@ -0,0 +1,35 @@
+"""Module for testing boolean variables."""
+
+class TestBooleanVar(BaseTestCase):
+
+    def testBindFalse(self):
+        "test binding in a False value"
+        result = self.cursor.callfunc("pkg_TestBooleans.GetStringRep", str,
+                (False,))
+        self.failUnlessEqual(result, "FALSE")
+
+    def testBindNull(self):
+        "test binding in a null value"
+        self.cursor.setinputsizes(None, bool)
+        result = self.cursor.callfunc("pkg_TestBooleans.GetStringRep", str,
+                (None,))
+        self.failUnlessEqual(result, "NULL")
+
+    def testBindOutFalse(self):
+        "test binding out a boolean value (False)"
+        result = self.cursor.callfunc("pkg_TestBooleans.IsLessThan10",
+                cx_Oracle.BOOLEAN, (15,))
+        self.failUnlessEqual(result, False)
+
+    def testBindOutTrue(self):
+        "test binding out a boolean value (True)"
+        result = self.cursor.callfunc("pkg_TestBooleans.IsLessThan10", bool,
+                (5,))
+        self.failUnlessEqual(result, True)
+
+    def testBindTrue(self):
+        "test binding in a True value"
+        result = self.cursor.callfunc("pkg_TestBooleans.GetStringRep", str,
+                (True,))
+        self.failUnlessEqual(result, "TRUE")
+

+ 0 - 2
desktop/core/ext-py/cx_Oracle-5.1.2/test/Connection.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/Connection.py

@@ -21,8 +21,6 @@ class TestConnection(TestCase):
     def verifyArgs(self, connection):
         self.failUnlessEqual(connection.username, self.username,
                 "user name differs")
-        self.failUnlessEqual(connection.password, self.password,
-                "password differs")
         self.failUnlessEqual(connection.tnsentry, self.tnsentry,
                 "tnsentry differs")
 

+ 12 - 12
desktop/core/ext-py/cx_Oracle-5.1.2/test/Cursor.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/Cursor.py

@@ -27,25 +27,25 @@ class TestCursor(BaseTestCase):
     def testExecuteKeywordArgs(self):
         """test executing a statement with keyword arguments"""
         simpleVar = self.cursor.var(cx_Oracle.NUMBER)
-        result = self.cursor.execute("begin :p_Value := 5; end;",
-                p_Value = simpleVar)
+        result = self.cursor.execute("begin :value := 5; end;",
+                value = simpleVar)
         self.failUnlessEqual(result, None)
         self.failUnlessEqual(simpleVar.getvalue(), 5)
 
     def testExecuteDictionaryArg(self):
         """test executing a statement with a dictionary argument"""
         simpleVar = self.cursor.var(cx_Oracle.NUMBER)
-        dictArg = { "p_Value" : simpleVar }
-        result = self.cursor.execute("begin :p_Value := 10; end;", dictArg)
+        dictArg = { "value" : simpleVar }
+        result = self.cursor.execute("begin :value := 10; end;", dictArg)
         self.failUnlessEqual(result, None)
         self.failUnlessEqual(simpleVar.getvalue(), 10)
 
     def testExecuteMultipleMethod(self):
         """test executing a statement with both a dict arg and keyword args"""
         simpleVar = self.cursor.var(cx_Oracle.NUMBER)
-        dictArg = { "p_Value" : simpleVar }
+        dictArg = { "value" : simpleVar }
         self.failUnlessRaises(cx_Oracle.InterfaceError, self.cursor.execute,
-                "begin :p_Value := 15; end;", dictArg, p_Value = simpleVar)
+                "begin :value := 15; end;", dictArg, value = simpleVar)
 
     def testExecuteAndModifyArraySize(self):
         """test executing a statement and then changing the array size"""
@@ -149,8 +149,8 @@ class TestCursor(BaseTestCase):
     def testExecuteManyWithExecption(self):
         """test executing a statement multiple times (with exception)"""
         self.cursor.execute("truncate table TestExecuteMany")
-        rows = [ { "p_Value" : n } for n in (1, 2, 3, 2, 5) ]
-        statement = "insert into TestExecuteMany (IntCol) values (:p_Value)"
+        rows = [ { "value" : n } for n in (1, 2, 3, 2, 5) ]
+        statement = "insert into TestExecuteMany (IntCol) values (:value)"
         self.failUnlessRaises(cx_Oracle.DatabaseError, self.cursor.executemany,
                 statement, rows)
         self.failUnlessEqual(self.cursor.rowcount, 3)
@@ -158,16 +158,16 @@ class TestCursor(BaseTestCase):
     def testPrepare(self):
         """test preparing a statement and executing it multiple times"""
         self.failUnlessEqual(self.cursor.statement, None)
-        statement = "begin :p_Value := :p_Value + 5; end;"
+        statement = "begin :value := :value + 5; end;"
         self.cursor.prepare(statement)
         var = self.cursor.var(cx_Oracle.NUMBER)
         self.failUnlessEqual(self.cursor.statement, statement)
         var.setvalue(0, 2)
-        self.cursor.execute(None, p_Value = var)
+        self.cursor.execute(None, value = var)
         self.failUnlessEqual(var.getvalue(), 7)
-        self.cursor.execute(None, p_Value = var)
+        self.cursor.execute(None, value = var)
         self.failUnlessEqual(var.getvalue(), 12)
-        self.cursor.execute("begin :p_Value2 := 3; end;", p_Value2 = var)
+        self.cursor.execute("begin :value2 := 3; end;", value2 = var)
         self.failUnlessEqual(var.getvalue(), 3)
 
     def testExceptionOnClose(self):

+ 2 - 2
desktop/core/ext-py/cx_Oracle-5.1.2/test/CursorVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/CursorVar.py

@@ -11,9 +11,9 @@ class TestCursorVar(BaseTestCase):
         self.failUnlessEqual(cursor.description, None)
         self.cursor.execute("""
                 begin
-                  open :p_Cursor for select 'X' StringValue from dual;
+                  open :cursor for select 'X' StringValue from dual;
                 end;""",
-                p_Cursor = cursor)
+                cursor = cursor)
         self.failUnlessEqual(cursor.description,
                 [ ('STRINGVALUE', cx_Oracle.FIXED_CHAR, 1, 1, 0, 0, 1) ])
         self.failUnlessEqual(cursor.fetchall(), [('X',)])

+ 47 - 47
desktop/core/ext-py/cx_Oracle-5.1.2/test/DateTimeVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/DateTimeVar.py

@@ -27,8 +27,8 @@ class TestDateTimeVar(BaseTestCase):
         "test binding in a date"
         self.cursor.execute("""
                 select * from TestDates
-                where DateCol = :p_Value""",
-                p_Value = cx_Oracle.Timestamp(2002, 12, 13, 9, 36, 0))
+                where DateCol = :value""",
+                value = cx_Oracle.Timestamp(2002, 12, 13, 9, 36, 0))
         self.failUnlessEqual(self.cursor.fetchall(), [self.dataByKey[4]])
 
     def testBindDateTime(self):
@@ -41,20 +41,20 @@ class TestDateTimeVar(BaseTestCase):
 
     def testBindDateAfterString(self):
         "test binding in a date after setting input sizes to a string"
-        self.cursor.setinputsizes(p_Value = 15)
+        self.cursor.setinputsizes(value = 15)
         self.cursor.execute("""
                 select * from TestDates
-                where DateCol = :p_Value""",
-                p_Value = cx_Oracle.Timestamp(2002, 12, 14, 12, 0, 0))
+                where DateCol = :value""",
+                value = cx_Oracle.Timestamp(2002, 12, 14, 12, 0, 0))
         self.failUnlessEqual(self.cursor.fetchall(), [self.dataByKey[5]])
 
     def testBindNull(self):
         "test binding in a null"
-        self.cursor.setinputsizes(p_Value = cx_Oracle.DATETIME)
+        self.cursor.setinputsizes(value = cx_Oracle.DATETIME)
         self.cursor.execute("""
                 select * from TestDates
-                where DateCol = :p_Value""",
-                p_Value = None)
+                where DateCol = :value""",
+                value = None)
         self.failUnlessEqual(self.cursor.fetchall(), [])
 
     def testBindDateArrayDirect(self):
@@ -63,36 +63,36 @@ class TestDateTimeVar(BaseTestCase):
         array = [r[1] for r in self.rawData]
         statement = """
                 begin
-                  :p_ReturnValue := pkg_TestDateArrays.TestInArrays(
-                      :p_StartValue, :p_BaseDate, :p_Array);
+                  :returnValue := pkg_TestDateArrays.TestInArrays(
+                      :startValue, :baseDate, :array);
                 end;"""
         self.cursor.execute(statement,
-                p_ReturnValue = returnValue,
-                p_StartValue = 5,
-                p_BaseDate = cx_Oracle.Date(2002, 12, 12),
-                p_Array = array)
+                returnValue = returnValue,
+                startValue = 5,
+                baseDate = cx_Oracle.Date(2002, 12, 12),
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 35.5)
         array = array + array[:5]
         self.cursor.execute(statement,
-                p_StartValue = 7,
-                p_BaseDate = cx_Oracle.Date(2002, 12, 13),
-                p_Array = array)
+                startValue = 7,
+                baseDate = cx_Oracle.Date(2002, 12, 13),
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 24.0)
 
     def testBindDateArrayBySizes(self):
         "test binding in a date array (with setinputsizes)"
         returnValue = self.cursor.var(cx_Oracle.NUMBER)
-        self.cursor.setinputsizes(p_Array = [cx_Oracle.DATETIME, 10])
+        self.cursor.setinputsizes(array = [cx_Oracle.DATETIME, 10])
         array = [r[1] for r in self.rawData]
         self.cursor.execute("""
                 begin
-                  :p_ReturnValue := pkg_TestDateArrays.TestInArrays(
-                      :p_StartValue, :p_BaseDate, :p_Array);
+                  :returnValue := pkg_TestDateArrays.TestInArrays(
+                      :startValue, :baseDate, :array);
                 end;""",
-                p_ReturnValue = returnValue,
-                p_StartValue = 6,
-                p_BaseDate = cx_Oracle.Date(2002, 12, 13),
-                p_Array = array)
+                returnValue = returnValue,
+                startValue = 6,
+                baseDate = cx_Oracle.Date(2002, 12, 13),
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 26.5)
 
     def testBindDateArrayByVar(self):
@@ -102,13 +102,13 @@ class TestDateTimeVar(BaseTestCase):
         array.setvalue(0, [r[1] for r in self.rawData])
         self.cursor.execute("""
                 begin
-                  :p_ReturnValue := pkg_TestDateArrays.TestInArrays(
-                      :p_StartValue, :p_BaseDate, :p_Array);
+                  :returnValue := pkg_TestDateArrays.TestInArrays(
+                      :startValue, :baseDate, :array);
                 end;""",
-                p_ReturnValue = returnValue,
-                p_StartValue = 7,
-                p_BaseDate = cx_Oracle.Date(2002, 12, 14),
-                p_Array = array)
+                returnValue = returnValue,
+                startValue = 7,
+                baseDate = cx_Oracle.Date(2002, 12, 14),
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 17.5)
 
     def testBindInOutDateArrayByVar(self):
@@ -118,10 +118,10 @@ class TestDateTimeVar(BaseTestCase):
         array.setvalue(0, originalData)
         self.cursor.execute("""
                 begin
-                  pkg_TestDateArrays.TestInOutArrays(:p_NumElems, :p_Array);
+                  pkg_TestDateArrays.TestInOutArrays(:numElems, :array);
                 end;""",
-                p_NumElems = 5,
-                p_Array = array)
+                numElems = 5,
+                array = array)
         self.failUnlessEqual(array.getvalue(),
                 [ cx_Oracle.Timestamp(2002, 12, 17, 2, 24, 0),
                   cx_Oracle.Timestamp(2002, 12, 18, 4, 48, 0),
@@ -135,10 +135,10 @@ class TestDateTimeVar(BaseTestCase):
         array = self.cursor.arrayvar(cx_Oracle.DATETIME, 6, 100)
         self.cursor.execute("""
                 begin
-                  pkg_TestDateArrays.TestOutArrays(:p_NumElems, :p_Array);
+                  pkg_TestDateArrays.TestOutArrays(:numElems, :array);
                 end;""",
-                p_NumElems = 6,
-                p_Array = array)
+                numElems = 6,
+                array = array)
         self.failUnlessEqual(array.getvalue(),
                 [ cx_Oracle.Timestamp(2002, 12, 13, 4, 48, 0),
                   cx_Oracle.Timestamp(2002, 12, 14, 9, 36, 0),
@@ -149,23 +149,23 @@ class TestDateTimeVar(BaseTestCase):
 
     def testBindOutSetInputSizes(self):
         "test binding out with set input sizes defined"
-        vars = self.cursor.setinputsizes(p_Value = cx_Oracle.DATETIME)
+        vars = self.cursor.setinputsizes(value = cx_Oracle.DATETIME)
         self.cursor.execute("""
                 begin
-                  :p_Value := to_date(20021209, 'YYYYMMDD');
+                  :value := to_date(20021209, 'YYYYMMDD');
                 end;""")
-        self.failUnlessEqual(vars["p_Value"].getvalue(),
+        self.failUnlessEqual(vars["value"].getvalue(),
                cx_Oracle.Timestamp(2002, 12, 9))
 
     def testBindInOutSetInputSizes(self):
         "test binding in/out with set input sizes defined"
-        vars = self.cursor.setinputsizes(p_Value = cx_Oracle.DATETIME)
+        vars = self.cursor.setinputsizes(value = cx_Oracle.DATETIME)
         self.cursor.execute("""
                 begin
-                  :p_Value := :p_Value + 5.25;
+                  :value := :value + 5.25;
                 end;""",
-                p_Value = cx_Oracle.Timestamp(2002, 12, 12, 10, 0, 0))
-        self.failUnlessEqual(vars["p_Value"].getvalue(),
+                value = cx_Oracle.Timestamp(2002, 12, 12, 10, 0, 0))
+        self.failUnlessEqual(vars["value"].getvalue(),
                 cx_Oracle.Timestamp(2002, 12, 17, 16, 0, 0))
 
     def testBindOutVar(self):
@@ -173,10 +173,10 @@ class TestDateTimeVar(BaseTestCase):
         var = self.cursor.var(cx_Oracle.DATETIME)
         self.cursor.execute("""
                 begin
-                  :p_Value := to_date('20021231 12:31:00',
+                  :value := to_date('20021231 12:31:00',
                       'YYYYMMDD HH24:MI:SS');
                 end;""",
-                p_Value = var)
+                value = var)
         self.failUnlessEqual(var.getvalue(),
                cx_Oracle.Timestamp(2002, 12, 31, 12, 31, 0))
 
@@ -186,9 +186,9 @@ class TestDateTimeVar(BaseTestCase):
         var.setvalue(0, cx_Oracle.Timestamp(2002, 12, 9, 6, 0, 0))
         self.cursor.execute("""
                 begin
-                  :p_Value := :p_Value + 5.25;
+                  :value := :value + 5.25;
                 end;""",
-                p_Value = var)
+                value = var)
         self.failUnlessEqual(var.getvalue(),
                 cx_Oracle.Timestamp(2002, 12, 14, 12, 0, 0))
 

+ 12 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/test/IntervalVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/IntervalVar.py

@@ -61,6 +61,18 @@ class TestIntervalVar(BaseTestCase):
         self.failUnlessEqual(vars["value"].getvalue(),
                 datetime.timedelta(days = 10, hours = 10, minutes = 45))
 
+    def testBindInOutFractionalSecond(self):
+        "test binding in/out with set input sizes defined"
+        vars = self.cursor.setinputsizes(value = cx_Oracle.INTERVAL)
+        self.cursor.execute("""
+                begin
+                  :value := :value + to_dsinterval('5 08:30:00');
+                end;""",
+                value = datetime.timedelta(days = 5, seconds=12.123789))
+        self.failUnlessEqual(vars["value"].getvalue(),
+                datetime.timedelta(days = 10, hours = 8, minutes = 30,
+                                   seconds=12, microseconds=123789))
+
     def testBindOutVar(self):
         "test binding out with cursor.var() method"
         var = self.cursor.var(cx_Oracle.INTERVAL)

+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/test/LobVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/LobVar.py


+ 5 - 5
desktop/core/ext-py/cx_Oracle-5.1.2/test/LongVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/LongVar.py

@@ -10,7 +10,7 @@ class TestLongVar(BaseTestCase):
         for i in range(1, 11):
             char = chr(ord('A') + i - 1)
             longString += char * 25000
-            self.cursor.setinputsizes(p_LongString = a_InputType)
+            self.cursor.setinputsizes(longString = a_InputType)
             if a_Type == "LongRaw" and sys.version_info[0] >= 3:
                 bindValue = longString.encode("ascii")
             else:
@@ -20,11 +20,11 @@ class TestLongVar(BaseTestCase):
                       IntCol,
                       %sCol
                     ) values (
-                      :p_IntegerValue,
-                      :p_LongString
+                      :integerValue,
+                      :longString
                     )""" % (a_Type, a_Type),
-                    p_IntegerValue = i,
-                    p_LongString = bindValue)
+                    integerValue = i,
+                    longString = bindValue)
         self.connection.commit()
         self.cursor.setoutputsize(250000, 2)
         self.cursor.execute("""

+ 15 - 31
desktop/core/ext-py/cx_Oracle-5.1.2/test/UnicodeVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/NCharVar.py

@@ -1,6 +1,6 @@
-"""Module for testing unicode variables."""
+"""Module for testing NCHAR variables."""
 
-class TestUnicodeVar(BaseTestCase):
+class TestNCharVar(BaseTestCase):
 
     def setUp(self):
         BaseTestCase.setUp(self)
@@ -38,8 +38,8 @@ class TestUnicodeVar(BaseTestCase):
 
     def testBindDifferentVar(self):
         "test binding a different variable on second execution"
-        retval_1 = self.cursor.var(cx_Oracle.UNICODE, 30)
-        retval_2 = self.cursor.var(cx_Oracle.UNICODE, 30)
+        retval_1 = self.cursor.var(cx_Oracle.NCHAR, 30)
+        retval_2 = self.cursor.var(cx_Oracle.NCHAR, 30)
         self.cursor.execute(r"begin :retval := unistr('Called \3042'); end;",
                 retval = retval_1)
         self.failUnlessEqual(retval_1.getvalue(), u"Called \u3042")
@@ -79,7 +79,7 @@ class TestUnicodeVar(BaseTestCase):
     def testBindUnicodeArrayBySizes(self):
         "test binding in a unicode array (with setinputsizes)"
         returnValue = self.cursor.var(cx_Oracle.NUMBER)
-        self.cursor.setinputsizes(array = [cx_Oracle.UNICODE, 10])
+        self.cursor.setinputsizes(array = [cx_Oracle.NCHAR, 10])
         array = [r[1] for r in self.rawData]
         self.cursor.execute("""
                 begin
@@ -94,7 +94,7 @@ class TestUnicodeVar(BaseTestCase):
     def testBindUnicodeArrayByVar(self):
         "test binding in a unicode array (with arrayvar)"
         returnValue = self.cursor.var(cx_Oracle.NUMBER)
-        array = self.cursor.arrayvar(cx_Oracle.UNICODE, 10, 20)
+        array = self.cursor.arrayvar(cx_Oracle.NCHAR, 10, 20)
         array.setvalue(0, [r[1] for r in self.rawData])
         self.cursor.execute("""
                 begin
@@ -108,7 +108,7 @@ class TestUnicodeVar(BaseTestCase):
 
     def testBindInOutUnicodeArrayByVar(self):
         "test binding in/out a unicode array (with arrayvar)"
-        array = self.cursor.arrayvar(cx_Oracle.UNICODE, 10, 100)
+        array = self.cursor.arrayvar(cx_Oracle.NCHAR, 10, 100)
         originalData = [r[1] for r in self.rawData]
         format = u"Converted element \u3042 # %d originally had length %d"
         expectedData = [format % (i, len(originalData[i - 1])) \
@@ -124,7 +124,7 @@ class TestUnicodeVar(BaseTestCase):
 
     def testBindOutUnicodeArrayByVar(self):
         "test binding out a unicode array (with arrayvar)"
-        array = self.cursor.arrayvar(cx_Oracle.UNICODE, 6, 100)
+        array = self.cursor.arrayvar(cx_Oracle.NCHAR, 6, 100)
         format = u"Test out element \u3042 # %d"
         expectedData = [format % i for i in range(1, 7)]
         self.cursor.execute("""
@@ -145,7 +145,7 @@ class TestUnicodeVar(BaseTestCase):
 
     def testBindOutSetInputSizesByType(self):
         "test binding out with set input sizes defined (by type)"
-        vars = self.cursor.setinputsizes(value = cx_Oracle.UNICODE)
+        vars = self.cursor.setinputsizes(value = cx_Oracle.NCHAR)
         self.cursor.execute(r"""
                 begin
                   :value := unistr('TSI \3042');
@@ -154,7 +154,7 @@ class TestUnicodeVar(BaseTestCase):
 
     def testBindInOutSetInputSizesByType(self):
         "test binding in/out with set input sizes defined (by type)"
-        vars = self.cursor.setinputsizes(value = cx_Oracle.UNICODE)
+        vars = self.cursor.setinputsizes(value = cx_Oracle.NCHAR)
         self.cursor.execute(r"""
                 begin
                   :value := :value || unistr(' TSI \3042');
@@ -165,7 +165,7 @@ class TestUnicodeVar(BaseTestCase):
 
     def testBindOutVar(self):
         "test binding out with cursor.var() method"
-        var = self.cursor.var(cx_Oracle.UNICODE)
+        var = self.cursor.var(cx_Oracle.NCHAR)
         self.cursor.execute(r"""
                 begin
                   :value := unistr('TSI (VAR) \3042');
@@ -175,7 +175,7 @@ class TestUnicodeVar(BaseTestCase):
 
     def testBindInOutVarDirectSet(self):
         "test binding in/out with cursor.var() method"
-        var = self.cursor.var(cx_Oracle.UNICODE)
+        var = self.cursor.var(cx_Oracle.NCHAR)
         var.setvalue(0, u"InVal \u3041")
         self.cursor.execute(r"""
                 begin
@@ -184,30 +184,14 @@ class TestUnicodeVar(BaseTestCase):
                 value = var)
         self.failUnlessEqual(var.getvalue(), u"InVal \u3041 TSI (VAR) \u3042")
 
-    def testUnicodeMaximumReached(self):
-        "test that an error is raised when maximum unicode length exceeded"
-        var = self.cursor.setinputsizes(test = cx_Oracle.UNICODE)["test"]
-        inUnicode = u"1234567890" * 400
-        var.setvalue(0, inUnicode)
-        outUnicode = var.getvalue()
-        self.failUnlessEqual(inUnicode, outUnicode,
-                "output does not match: in was %d, out was %d" % \
-                (len(inUnicode), len(outUnicode)))
-        inUnicode = inUnicode + u"0"
-        self.failUnlessRaises(ValueError, var.setvalue, 0, inUnicode)
-
     def testCursorDescription(self):
         "test cursor description is accurate"
         self.cursor.execute("select * from TestUnicodes")
         self.failUnlessEqual(self.cursor.description,
                 [ ('INTCOL', cx_Oracle.NUMBER, 10, 22, 9, 0, 0),
-                  ('UNICODECOL', cx_Oracle.UNICODE, 20,
-                      self.connection.maxBytesPerCharacter * 20, 0, 0, 0),
-                  ('FIXEDUNICODECOL',
-                      cx_Oracle.FIXED_UNICODE, 40,
-                      self.connection.maxBytesPerCharacter * 40, 0, 0, 0),
-                  ('NULLABLECOL', cx_Oracle.UNICODE, 50,
-                      self.connection.maxBytesPerCharacter * 50, 0, 0, 1) ])
+                  ('UNICODECOL', cx_Oracle.NCHAR, 20, 40, 0, 0, 0),
+                  ('FIXEDUNICODECOL', cx_Oracle.FIXED_NCHAR, 40, 80, 0, 0, 0),
+                  ('NULLABLECOL', cx_Oracle.NCHAR, 50, 100, 0, 0, 1) ])
 
     def testFetchAll(self):
         "test that fetching all of the data returns the correct results"

+ 29 - 29
desktop/core/ext-py/cx_Oracle-5.1.2/test/NumberVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/NumberVar.py

@@ -91,33 +91,33 @@ class TestNumberVar(BaseTestCase):
         array = [r[1] for r in self.rawData]
         statement = """
                 begin
-                  :p_ReturnValue := pkg_TestNumberArrays.TestInArrays(
-                      :p_StartValue, :p_Array);
+                  :returnValue := pkg_TestNumberArrays.TestInArrays(
+                      :startValue, :array);
                 end;"""
         self.cursor.execute(statement,
-                p_ReturnValue = returnValue,
-                p_StartValue = 5,
-                p_Array = array)
+                returnValue = returnValue,
+                startValue = 5,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 73.75)
         array = range(15)
         self.cursor.execute(statement,
-                p_StartValue = 10,
-                p_Array = array)
+                startValue = 10,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 115.0)
 
     def testBindNumberArrayBySizes(self):
         "test binding in a number array (with setinputsizes)"
         returnValue = self.cursor.var(cx_Oracle.NUMBER)
-        self.cursor.setinputsizes(p_Array = [cx_Oracle.NUMBER, 10])
+        self.cursor.setinputsizes(array = [cx_Oracle.NUMBER, 10])
         array = [r[1] for r in self.rawData]
         self.cursor.execute("""
                 begin
-                  :p_ReturnValue := pkg_TestNumberArrays.TestInArrays(
-                      :p_StartValue, :p_Array);
+                  :returnValue := pkg_TestNumberArrays.TestInArrays(
+                      :startValue, :array);
                 end;""",
-                p_ReturnValue = returnValue,
-                p_StartValue = 6,
-                p_Array = array)
+                returnValue = returnValue,
+                startValue = 6,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 74.75)
 
     def testBindNumberArrayByVar(self):
@@ -128,12 +128,12 @@ class TestNumberVar(BaseTestCase):
         array.setvalue(0, [r[1] for r in self.rawData])
         self.cursor.execute("""
                 begin
-                  :p_ReturnValue := pkg_TestNumberArrays.TestInArrays(
-                      :p_IntegerValue, :p_Array);
+                  :returnValue := pkg_TestNumberArrays.TestInArrays(
+                      :integerValue, :array);
                 end;""",
-                p_ReturnValue = returnValue,
-                p_IntegerValue = 7,
-                p_Array = array)
+                returnValue = returnValue,
+                integerValue = 7,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 75.75)
 
     def testBindZeroLengthNumberArrayByVar(self):
@@ -142,12 +142,12 @@ class TestNumberVar(BaseTestCase):
         array = self.cursor.arrayvar(cx_Oracle.NUMBER, 0)
         self.cursor.execute("""
                 begin
-                  :p_ReturnValue := pkg_TestNumberArrays.TestInArrays(
-                      :p_IntegerValue, :p_Array);
+                  :returnValue := pkg_TestNumberArrays.TestInArrays(
+                      :integerValue, :array);
                 end;""",
-                p_ReturnValue = returnValue,
-                p_IntegerValue = 8,
-                p_Array = array)
+                returnValue = returnValue,
+                integerValue = 8,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 8.0)
         self.failUnlessEqual(array.getvalue(), [])
 
@@ -160,10 +160,10 @@ class TestNumberVar(BaseTestCase):
         array.setvalue(0, originalData)
         self.cursor.execute("""
                 begin
-                  pkg_TestNumberArrays.TestInOutArrays(:p_NumElems, :p_Array);
+                  pkg_TestNumberArrays.TestInOutArrays(:numElems, :array);
                 end;""",
-                p_NumElems = 5,
-                p_Array = array)
+                numElems = 5,
+                array = array)
         self.failUnlessEqual(array.getvalue(), expectedData)
 
     def testBindOutNumberArrayByVar(self):
@@ -172,10 +172,10 @@ class TestNumberVar(BaseTestCase):
         expectedData = [i * 100 for i in range(1, 7)]
         self.cursor.execute("""
                 begin
-                  pkg_TestNumberArrays.TestOutArrays(:p_NumElems, :p_Array);
+                  pkg_TestNumberArrays.TestOutArrays(:numElems, :array);
                 end;""",
-                p_NumElems = 6,
-                p_Array = array)
+                numElems = 6,
+                array = array)
         self.failUnlessEqual(array.getvalue(), expectedData)
 
     def testBindOutSetInputSizes(self):

+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/test/ObjectVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/ObjectVar.py


+ 0 - 1
desktop/core/ext-py/cx_Oracle-5.1.2/test/SessionPool.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/SessionPool.py

@@ -23,7 +23,6 @@ class TestConnection(TestCase):
         """test that the pool is created and has the right attributes"""
         pool = cx_Oracle.SessionPool(USERNAME, PASSWORD, TNSENTRY, 2, 8, 3)
         self.failUnlessEqual(pool.username, USERNAME, "user name differs")
-        self.failUnlessEqual(pool.password, PASSWORD, "password differs")
         self.failUnlessEqual(pool.tnsentry, TNSENTRY, "tnsentry differs")
         self.failUnlessEqual(pool.max, 8, "max differs")
         self.failUnlessEqual(pool.min, 2, "min differs")

+ 655 - 0
desktop/core/ext-py/cx_Oracle-5.2.1/test/SetupTest-BooleanArrays.sql

@@ -0,0 +1,655 @@
+/*-----------------------------------------------------------------------------
+ * SetupTest.sql
+ *   Creates a user named "cx_Oracle" and populates its schema with the tables
+ * and packages necessary for performing the test suite.
+ *---------------------------------------------------------------------------*/
+
+whenever sqlerror exit failure
+
+-- drop existing users, if present
+begin
+  for r in
+      ( select username
+        from dba_users
+        where username in ('CX_ORACLE', 'CX_ORACLE_PROXY')
+      ) loop
+    execute immediate 'drop user ' || r.username || ' cascade';
+  end loop;
+end;
+/
+
+alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';
+alter session set nls_numeric_characters='.,';
+
+create user cx_Oracle identified by dev
+quota unlimited on users
+default tablespace users;
+
+create user cx_Oracle_proxy identified by dev;
+alter user cx_Oracle_proxy grant connect through cx_Oracle;
+
+grant create session to cx_Oracle_proxy;
+
+grant
+  create session,
+  create table,
+  create procedure,
+  create type
+to cx_Oracle;
+
+-- create types
+create type cx_Oracle.udt_Object as object (
+  NumberValue           number,
+  StringValue           varchar2(60),
+  FixedCharValue        char(10),
+  DateValue             date,
+  TimestampValue        timestamp
+);
+/
+
+create type cx_Oracle.udt_Array as varray(10) of number;
+/
+
+-- create tables
+create table cx_Oracle.TestNumbers (
+  IntCol                number(9) not null,
+  NumberCol             number(9, 2) not null,
+  FloatCol              float not null,
+  UnconstrainedCol      number not null,
+  NullableCol           number(38)
+) tablespace users;
+
+create table cx_Oracle.TestStrings (
+  IntCol                number(9) not null,
+  StringCol             varchar2(20) not null,
+  RawCol                raw(30) not null,
+  FixedCharCol          char(40) not null,
+  NullableCol           varchar2(50)
+) tablespace users;
+
+create table cx_Oracle.TestUnicodes (
+  IntCol                number(9) not null,
+  UnicodeCol            nvarchar2(20) not null,
+  FixedUnicodeCol       nchar(40) not null,
+  NullableCol           nvarchar2(50)
+) tablespace users;
+
+create table cx_Oracle.TestDates (
+  IntCol                number(9) not null,
+  DateCol               date not null,
+  NullableCol           date
+) tablespace users;
+
+create table cx_Oracle.TestCLOBs (
+  IntCol                number(9) not null,
+  CLOBCol               clob not null
+) tablespace users;
+
+create table cx_Oracle.TestNCLOBs (
+  IntCol                number(9) not null,
+  NCLOBCol              nclob not null
+) tablespace users;
+
+create table cx_Oracle.TestBLOBs (
+  IntCol                number(9) not null,
+  BLOBCol               blob not null
+) tablespace users;
+
+create table cx_Oracle.TestLongs (
+  IntCol                number(9) not null,
+  LongCol               long not null
+) tablespace users;
+
+create table cx_Oracle.TestLongRaws (
+  IntCol                number(9) not null,
+  LongRawCol            long raw not null
+) tablespace users;
+
+create table cx_Oracle.TestExecuteMany (
+  IntCol                number(9) not null,
+  StringCol             varchar2(100),
+  constraint TestExecuteMany_pk primary key (IntCol)
+      using index tablespace users
+) tablespace users;
+
+create table cx_Oracle.TestArrayDML (
+  IntCol                number(9) not null,
+  StringCol             varchar2(100),
+  IntCol2               number(3),
+  constraint TestArrayDML_pk primary key (IntCol)
+      using index tablespace users
+) tablespace users;
+
+create table cx_Oracle.TestObjects (
+  IntCol                number(9) not null,
+  ObjectCol             cx_Oracle.udt_Object,
+  ArrayCol              cx_Oracle.udt_Array
+);
+
+create table cx_Oracle.TestTimestamps (
+  IntCol                number(9) not null,
+  TimestampCol          timestamp not null,
+  NullableCol           timestamp
+) tablespace users;
+
+create table cx_Oracle.TestIntervals (
+  IntCol                number(9) not null,
+  IntervalCol           interval day to second not null,
+  NullableCol           interval day to second
+) tablespace users;
+
+-- populate tables
+begin
+  for i in 1..10 loop
+    insert into cx_Oracle.TestNumbers
+    values (i, i + i * 0.25, i + i * .75, i * i * i + i *.5,
+        decode(mod(i, 2), 0, null, power(143, i)));
+  end loop;
+end;
+/
+
+declare
+
+  t_RawValue            raw(30);
+
+  function ConvertHexDigit(a_Value number) return varchar2 is
+  begin
+    if a_Value between 0 and 9 then
+      return to_char(a_Value);
+    end if;
+    return chr(ascii('A') + a_Value - 10);
+  end;
+
+  function ConvertToHex(a_Value varchar2) return varchar2 is
+    t_HexValue          varchar2(60);
+    t_Digit             number;
+  begin
+    for i in 1..length(a_Value) loop
+      t_Digit := ascii(substr(a_Value, i, 1));
+      t_HexValue := t_HexValue ||
+          ConvertHexDigit(trunc(t_Digit / 16)) ||
+          ConvertHexDigit(mod(t_Digit, 16));
+    end loop;
+    return t_HexValue;
+  end;
+
+begin
+  for i in 1..10 loop
+    t_RawValue := hextoraw(ConvertToHex('Raw ' || to_char(i)));
+    insert into cx_Oracle.TestStrings
+    values (i, 'String ' || to_char(i), t_RawValue,
+        'Fixed Char ' || to_char(i),
+        decode(mod(i, 2), 0, null, 'Nullable ' || to_char(i)));
+  end loop;
+end;
+/
+
+begin
+  for i in 1..10 loop
+    insert into cx_Oracle.TestUnicodes
+    values (i, 'Unicode ' || unistr('\3042') || ' ' || to_char(i),
+        'Fixed Unicode ' || to_char(i),
+        decode(mod(i, 2), 0, null, unistr('Nullable ') || to_char(i)));
+  end loop;
+end;
+/
+
+begin
+  for i in 1..10 loop
+    insert into cx_Oracle.TestDates
+    values (i, to_date(20021209, 'YYYYMMDD') + i + i * .1,
+        decode(mod(i, 2), 0, null,
+        to_date(20021209, 'YYYYMMDD') + i + i + i * .15));
+  end loop;
+end;
+/
+
+begin
+  for i in 1..10 loop
+    insert into cx_Oracle.TestTimestamps
+    values (i, to_timestamp('20021209', 'YYYYMMDD') +
+            to_dsinterval(to_char(i) || ' 00:00:' || to_char(i * 2) || '.' ||
+                    to_char(i * 50)),
+        decode(mod(i, 2), 0, to_timestamp(null, 'YYYYMMDD'),
+        to_timestamp('20021209', 'YYYYMMDD') +
+            to_dsinterval(to_char(i + 1) || ' 00:00:' ||
+                    to_char(i * 3) || '.' || to_char(i * 125))));
+  end loop;
+end;
+/
+
+begin
+  for i in 1..10 loop
+    insert into cx_Oracle.TestIntervals
+    values (i, to_dsinterval(to_char(i) || ' ' || to_char(i) || ':' ||
+            to_char(i * 2) || ':' || to_char(i * 3)),
+            decode(mod(i, 2), 0, to_dsinterval(null),
+            to_dsinterval(to_char(i + 5) || ' ' || to_char(i + 2) || ':' ||
+            to_char(i * 2 + 5) || ':' || to_char(i * 3 + 5))));
+  end loop;
+end;
+/
+
+insert into cx_Oracle.TestObjects values (1,
+    cx_Oracle.udt_Object(1, 'First row', 'First',
+        to_date(20070306, 'YYYYMMDD'),
+        to_timestamp('20080912 16:40:00', 'YYYYMMDD HH24:MI:SS')),
+    cx_Oracle.udt_Array(5, 10, null, 20));
+
+insert into cx_Oracle.TestObjects values (2, null,
+    cx_Oracle.udt_Array(3, null, 9, 12, 15));
+
+insert into cx_Oracle.TestObjects values (3,
+    cx_Oracle.udt_Object(3, 'Third row', 'Third',
+        to_date(20070621, 'YYYYMMDD'),
+        to_timestamp('20071213 07:30:45', 'YYYYMMDD HH24:MI:SS')), null);
+
+commit;
+
+-- create procedures for testing callproc()
+create procedure cx_Oracle.proc_Test (
+  a_InValue             varchar2,
+  a_InOutValue          in out number,
+  a_OutValue            out number
+) as
+begin
+  a_InOutValue := a_InOutValue * length(a_InValue);
+  a_OutValue := length(a_InValue);
+end;
+/
+
+create procedure cx_Oracle.proc_TestNoArgs as
+begin
+  null;
+end;
+/
+
+-- create functions for testing callfunc()
+create function cx_Oracle.func_Test (
+  a_String              varchar2,
+  a_ExtraAmount         number
+) return number as
+begin
+  return length(a_String) + a_ExtraAmount;
+end;
+/
+
+create function cx_Oracle.func_TestNoArgs
+return number as
+begin
+  return 712;
+end;
+/
+
+-- create packages
+create or replace package cx_Oracle.pkg_TestStringArrays as
+
+  type udt_StringList is table of varchar2(100) index by binary_integer;
+
+  function TestInArrays (
+    a_StartingLength    number,
+    a_Array             udt_StringList
+  ) return number;
+
+  procedure TestInOutArrays (
+    a_NumElems          number,
+    a_Array             in out nocopy udt_StringList
+  );
+
+  procedure TestOutArrays (
+    a_NumElems          number,
+    a_Array             out nocopy udt_StringList
+  );
+
+end;
+/
+
+create or replace package body cx_Oracle.pkg_TestStringArrays as
+
+  function TestInArrays (
+    a_StartingLength    number,
+    a_Array             udt_StringList
+  ) return number is
+    t_Length            number;
+  begin
+    t_Length := a_StartingLength;
+    for i in 1..a_Array.count loop
+      t_Length := t_Length + length(a_Array(i));
+    end loop;
+    return t_Length;
+  end;
+
+  procedure TestInOutArrays (
+    a_NumElems          number,
+    a_Array             in out udt_StringList
+  ) is
+  begin
+    for i in 1..a_NumElems loop
+      a_Array(i) := 'Converted element # ' ||
+          to_char(i) || ' originally had length ' ||
+          to_char(length(a_Array(i)));
+    end loop;
+  end;
+
+  procedure TestOutArrays (
+    a_NumElems          number,
+    a_Array             out udt_StringList
+  ) is
+  begin
+    for i in 1..a_NumElems loop
+      a_Array(i) := 'Test out element # ' || to_char(i);
+    end loop;
+  end;
+
+end;
+/
+
+create or replace package cx_Oracle.pkg_TestUnicodeArrays as
+
+  type udt_UnicodeList is table of nvarchar2(100) index by binary_integer;
+
+  function TestInArrays (
+    a_StartingLength    number,
+    a_Array             udt_UnicodeList
+  ) return number;
+
+  procedure TestInOutArrays (
+    a_NumElems          number,
+    a_Array             in out nocopy udt_UnicodeList
+  );
+
+  procedure TestOutArrays (
+    a_NumElems          number,
+    a_Array             out nocopy udt_UnicodeList
+  );
+
+end;
+/
+
+create or replace package body cx_Oracle.pkg_TestUnicodeArrays as
+
+  function TestInArrays (
+    a_StartingLength    number,
+    a_Array             udt_UnicodeList
+  ) return number is
+    t_Length            number;
+  begin
+    t_Length := a_StartingLength;
+    for i in 1..a_Array.count loop
+      t_Length := t_Length + length(a_Array(i));
+    end loop;
+    return t_Length;
+  end;
+
+  procedure TestInOutArrays (
+    a_NumElems          number,
+    a_Array             in out udt_UnicodeList
+  ) is
+  begin
+    for i in 1..a_NumElems loop
+      a_Array(i) := unistr('Converted element ' || unistr('\3042') ||
+          ' # ') || to_char(i) || ' originally had length ' ||
+          to_char(length(a_Array(i)));
+    end loop;
+  end;
+
+  procedure TestOutArrays (
+    a_NumElems          number,
+    a_Array             out udt_UnicodeList
+  ) is
+  begin
+    for i in 1..a_NumElems loop
+      a_Array(i) := unistr('Test out element ') || unistr('\3042') || ' # ' ||
+          to_char(i);
+    end loop;
+  end;
+
+end;
+/
+
+create or replace package cx_Oracle.pkg_TestNumberArrays as
+
+  type udt_NumberList is table of number index by binary_integer;
+
+  function TestInArrays (
+    a_StartingValue     number,
+    a_Array             udt_NumberList
+  ) return number;
+
+  procedure TestInOutArrays (
+    a_NumElems          number,
+    a_Array             in out nocopy udt_NumberList
+  );
+
+  procedure TestOutArrays (
+    a_NumElems          number,
+    a_Array             out nocopy udt_NumberList
+  );
+
+end;
+/
+
+create or replace package body cx_Oracle.pkg_TestNumberArrays as
+
+  function TestInArrays (
+    a_StartingValue     number,
+    a_Array             udt_NumberList
+  ) return number is
+    t_Value             number;
+  begin
+    t_Value := a_StartingValue;
+    for i in 1..a_Array.count loop
+      t_Value := t_Value + a_Array(i);
+    end loop;
+    return t_Value;
+  end;
+
+  procedure TestInOutArrays (
+    a_NumElems          number,
+    a_Array             in out udt_NumberList
+  ) is
+  begin
+    for i in 1..a_NumElems loop
+      a_Array(i) := a_Array(i) * 10;
+    end loop;
+  end;
+
+  procedure TestOutArrays (
+    a_NumElems          number,
+    a_Array             out udt_NumberList
+  ) is
+  begin
+    for i in 1..a_NumElems loop
+      a_Array(i) := i * 100;
+    end loop;
+  end;
+
+end;
+/
+
+create or replace package cx_Oracle.pkg_TestDateArrays as
+
+  type udt_DateList is table of date index by binary_integer;
+
+  function TestInArrays (
+    a_StartingValue     number,
+    a_BaseDate          date,
+    a_Array             udt_DateList
+  ) return number;
+
+  procedure TestInOutArrays (
+    a_NumElems          number,
+    a_Array             in out nocopy udt_DateList
+  );
+
+  procedure TestOutArrays (
+    a_NumElems          number,
+    a_Array             out nocopy udt_DateList
+  );
+
+end;
+/
+
+create or replace package body cx_Oracle.pkg_TestDateArrays as
+
+  function TestInArrays (
+    a_StartingValue     number,
+    a_BaseDate          date,
+    a_Array             udt_DateList
+  ) return number is
+    t_Value             number;
+  begin
+    t_Value := a_StartingValue;
+    for i in 1..a_Array.count loop
+      t_Value := t_Value + a_Array(i) - a_BaseDate;
+    end loop;
+    return t_Value;
+  end;
+
+  procedure TestInOutArrays (
+    a_NumElems          number,
+    a_Array             in out udt_DateList
+  ) is
+  begin
+    for i in 1..a_NumElems loop
+      a_Array(i) := a_Array(i) + 7;
+    end loop;
+  end;
+
+  procedure TestOutArrays (
+    a_NumElems          number,
+    a_Array             out udt_DateList
+  ) is
+  begin
+    for i in 1..a_NumElems loop
+      a_Array(i) := to_date(20021212, 'YYYYMMDD') + i * 1.2;
+    end loop;
+  end;
+
+end;
+/
+
+create or replace package cx_Oracle.pkg_TestOutCursors as
+
+  type udt_RefCursor is ref cursor;
+
+  procedure TestOutCursor (
+    a_MaxIntValue       number,
+    a_Cursor            out udt_RefCursor
+  );
+
+end;
+/
+
+create or replace package body cx_Oracle.pkg_TestOutCursors as
+
+  procedure TestOutCursor (
+    a_MaxIntValue       number,
+    a_Cursor            out udt_RefCursor
+  ) is
+  begin
+    open a_Cursor for
+      select
+        IntCol,
+        StringCol
+      from TestStrings
+      where IntCol <= a_MaxIntValue
+      order by IntCol;
+  end;
+
+end;
+/
+
+create or replace package cx_Oracle.pkg_TestBooleans as
+
+    type udt_BooleanList is table of boolean index by binary_integer;
+
+    function GetStringRep (
+        a_Value             boolean
+    ) return varchar2;
+
+    function IsLessThan10 (
+        a_Value             number
+    ) return boolean;
+
+    function TestInArrays (
+        a_Array             udt_BooleanList
+    ) return number;
+
+    procedure TestInOutArrays (
+        a_NumElems          number,
+        a_Array             in out nocopy udt_BooleanList
+    );
+
+    procedure TestOutArrays (
+        a_NumElems          number,
+        a_Array             out nocopy udt_BooleanList
+    );
+
+end;
+/
+
+create or replace package body cx_Oracle.pkg_TestBooleans as
+
+    function GetStringRep (
+        a_Value             boolean
+    ) return varchar2 is
+    begin
+        if a_Value is null then
+            return 'NULL';
+        elsif a_Value then
+            return 'TRUE';
+        end if;
+        return 'FALSE';
+    end;
+
+    function IsLessThan10 (
+        a_Value             number
+    ) return boolean is
+    begin
+        return a_Value < 10;
+    end;
+
+    function TestInArrays (
+        a_Array             udt_BooleanList
+    ) return number is
+        t_Result            number;
+    begin
+        t_Result := 0;
+        for i in 1..a_Array.count loop
+            if a_Array(i) then
+                t_Result := t_Result + 1;
+            end if;
+        end loop;
+        return t_Result;
+    end;
+
+    procedure TestInOutArrays (
+        a_NumElems          number,
+        a_Array             in out nocopy udt_BooleanList
+    ) is
+    begin
+        for i in 1..a_Array.count loop
+            if i <= a_NumElems then
+                a_Array(i) := not a_Array(i);
+            else
+                a_Array(i) := false;
+            end if;
+        end loop;
+    end;
+
+    procedure TestOutArrays (
+        a_NumElems          number,
+        a_Array             out nocopy udt_BooleanList
+    ) is
+    begin
+        for i in 1..a_Array.count loop
+            a_Array(i) := mod(i, a_NumElems) = 0;
+        end loop;
+    end;
+
+end;
+/
+
+exit
+

+ 53 - 12
desktop/core/ext-py/cx_Oracle-5.1.2/test/SetupTest.sql → desktop/core/ext-py/cx_Oracle-5.2.1/test/SetupTest.sql

@@ -107,7 +107,17 @@ create table cx_Oracle.TestLongRaws (
 
 create table cx_Oracle.TestExecuteMany (
   IntCol                number(9) not null,
-  StringCol             varchar2(100)
+  StringCol             varchar2(100),
+  constraint TestExecuteMany_pk primary key (IntCol)
+      using index tablespace users
+) tablespace users;
+
+create table cx_Oracle.TestArrayDML (
+  IntCol                number(9) not null,
+  StringCol             varchar2(100),
+  IntCol2               number(3),
+  constraint TestArrayDML_pk primary key (IntCol)
+      using index tablespace users
 ) tablespace users;
 
 create table cx_Oracle.TestObjects (
@@ -117,23 +127,17 @@ create table cx_Oracle.TestObjects (
 );
 
 create table cx_Oracle.TestTimestamps (
-  IntCol			    number(9) not null,
+  IntCol                number(9) not null,
   TimestampCol          timestamp not null,
   NullableCol           timestamp
 ) tablespace users;
 
 create table cx_Oracle.TestIntervals (
-  IntCol			    number(9) not null,
+  IntCol                number(9) not null,
   IntervalCol           interval day to second not null,
   NullableCol           interval day to second
 ) tablespace users;
 
-alter table cx_Oracle.testexecutemany
-add constraint testexecutemany_pk
-primary key (
-  intcol
-) using index tablespace users;
-
 -- populate tables
 begin
   for i in 1..10 loop
@@ -146,7 +150,7 @@ end;
 
 declare
 
-  t_RawValue			raw(30);
+  t_RawValue            raw(30);
 
   function ConvertHexDigit(a_Value number) return varchar2 is
   begin
@@ -157,8 +161,8 @@ declare
   end;
 
   function ConvertToHex(a_Value varchar2) return varchar2 is
-    t_HexValue			varchar2(60);
-    t_Digit			number;
+    t_HexValue          varchar2(60);
+    t_Digit             number;
   begin
     for i in 1..length(a_Value) loop
       t_Digit := ascii(substr(a_Value, i, 1));
@@ -556,5 +560,42 @@ create or replace package body cx_Oracle.pkg_TestOutCursors as
 end;
 /
 
+create or replace package cx_Oracle.pkg_TestBooleans as
+
+    function GetStringRep (
+        a_Value             boolean
+    ) return varchar2;
+
+    function IsLessThan10 (
+        a_Value             number
+    ) return boolean;
+
+end;
+/
+
+create or replace package body cx_Oracle.pkg_TestBooleans as
+
+    function GetStringRep (
+        a_Value             boolean
+    ) return varchar2 is
+    begin
+        if a_Value is null then
+            return 'NULL';
+        elsif a_Value then
+            return 'TRUE';
+        end if;
+        return 'FALSE';
+    end;
+
+    function IsLessThan10 (
+        a_Value             number
+    ) return boolean is
+    begin
+        return a_Value < 10;
+    end;
+
+end;
+/
+
 exit
 

+ 55 - 68
desktop/core/ext-py/cx_Oracle-5.1.2/test/StringVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/StringVar.py

@@ -22,8 +22,8 @@ class TestStringVar(BaseTestCase):
         "test binding in a string"
         self.cursor.execute("""
                 select * from TestStrings
-                where StringCol = :p_Value""",
-                p_Value = "String 5")
+                where StringCol = :value""",
+                value = "String 5")
         self.failUnlessEqual(self.cursor.fetchall(), [self.dataByKey[5]])
 
     def testBindDifferentVar(self):
@@ -39,11 +39,11 @@ class TestStringVar(BaseTestCase):
 
     def testBindStringAfterNumber(self):
         "test binding in a string after setting input sizes to a number"
-        self.cursor.setinputsizes(p_Value = cx_Oracle.NUMBER)
+        self.cursor.setinputsizes(value = cx_Oracle.NUMBER)
         self.cursor.execute("""
                 select * from TestStrings
-                where StringCol = :p_Value""",
-                p_Value = "String 6")
+                where StringCol = :value""",
+                value = "String 6")
         self.failUnlessEqual(self.cursor.fetchall(), [self.dataByKey[6]])
 
     def testBindStringArrayDirect(self):
@@ -52,33 +52,33 @@ class TestStringVar(BaseTestCase):
         array = [r[1] for r in self.rawData]
         statement = """
                 begin
-                  :p_ReturnValue := pkg_TestStringArrays.TestInArrays(
-                      :p_IntegerValue, :p_Array);
+                  :returnValue := pkg_TestStringArrays.TestInArrays(
+                      :integerValue, :array);
                 end;"""
         self.cursor.execute(statement,
-                p_ReturnValue = returnValue,
-                p_IntegerValue = 5,
-                p_Array = array)
+                returnValue = returnValue,
+                integerValue = 5,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 86)
         array = [ "String - %d" % i for i in range(15) ]
         self.cursor.execute(statement,
-                p_IntegerValue = 8,
-                p_Array = array)
+                integerValue = 8,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 163)
 
     def testBindStringArrayBySizes(self):
         "test binding in a string array (with setinputsizes)"
         returnValue = self.cursor.var(cx_Oracle.NUMBER)
-        self.cursor.setinputsizes(p_Array = [cx_Oracle.STRING, 10])
+        self.cursor.setinputsizes(array = [cx_Oracle.STRING, 10])
         array = [r[1] for r in self.rawData]
         self.cursor.execute("""
                 begin
-                  :p_ReturnValue := pkg_TestStringArrays.TestInArrays(
-                      :p_IntegerValue, :p_Array);
+                  :returnValue := pkg_TestStringArrays.TestInArrays(
+                      :integerValue, :array);
                 end;""",
-                p_ReturnValue = returnValue,
-                p_IntegerValue = 6,
-                p_Array = array)
+                returnValue = returnValue,
+                integerValue = 6,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 87)
 
     def testBindStringArrayByVar(self):
@@ -88,12 +88,12 @@ class TestStringVar(BaseTestCase):
         array.setvalue(0, [r[1] for r in self.rawData])
         self.cursor.execute("""
                 begin
-                  :p_ReturnValue := pkg_TestStringArrays.TestInArrays(
-                      :p_IntegerValue, :p_Array);
+                  :returnValue := pkg_TestStringArrays.TestInArrays(
+                      :integerValue, :array);
                 end;""",
-                p_ReturnValue = returnValue,
-                p_IntegerValue = 7,
-                p_Array = array)
+                returnValue = returnValue,
+                integerValue = 7,
+                array = array)
         self.failUnlessEqual(returnValue.getvalue(), 88)
 
     def testBindInOutStringArrayByVar(self):
@@ -106,10 +106,10 @@ class TestStringVar(BaseTestCase):
         array.setvalue(0, originalData)
         self.cursor.execute("""
                 begin
-                  pkg_TestStringArrays.TestInOutArrays(:p_NumElems, :p_Array);
+                  pkg_TestStringArrays.TestInOutArrays(:numElems, :array);
                 end;""",
-                p_NumElems = 5,
-                p_Array = array)
+                numElems = 5,
+                array = array)
         self.failUnlessEqual(array.getvalue(), expectedData)
 
     def testBindOutStringArrayByVar(self):
@@ -118,19 +118,19 @@ class TestStringVar(BaseTestCase):
         expectedData = ["Test out element # %d" % i for i in range(1, 7)]
         self.cursor.execute("""
                 begin
-                  pkg_TestStringArrays.TestOutArrays(:p_NumElems, :p_Array);
+                  pkg_TestStringArrays.TestOutArrays(:numElems, :array);
                 end;""",
-                p_NumElems = 6,
-                p_Array = array)
+                numElems = 6,
+                array = array)
         self.failUnlessEqual(array.getvalue(), expectedData)
 
     def testBindRaw(self):
         "test binding in a raw"
-        self.cursor.setinputsizes(p_Value = cx_Oracle.BINARY)
+        self.cursor.setinputsizes(value = cx_Oracle.BINARY)
         self.cursor.execute("""
                 select * from TestStrings
-                where RawCol = :p_Value""",
-                p_Value = "Raw 4")
+                where RawCol = :value""",
+                value = "Raw 4")
         self.failUnlessEqual(self.cursor.fetchall(), [self.dataByKey[4]])
 
     def testBindAndFetchRowid(self):
@@ -143,64 +143,64 @@ class TestStringVar(BaseTestCase):
         self.cursor.execute("""
                 select *
                 from TestStrings
-                where rowid = :p_Value""",
-                p_Value = rowid)
+                where rowid = :value""",
+                value = rowid)
         self.failUnlessEqual(self.cursor.fetchall(), [self.dataByKey[3]])
 
     def testBindNull(self):
         "test binding in a null"
         self.cursor.execute("""
                 select * from TestStrings
-                where StringCol = :p_Value""",
-                p_Value = None)
+                where StringCol = :value""",
+                value = None)
         self.failUnlessEqual(self.cursor.fetchall(), [])
 
     def testBindOutSetInputSizesByType(self):
         "test binding out with set input sizes defined (by type)"
-        vars = self.cursor.setinputsizes(p_Value = cx_Oracle.STRING)
+        vars = self.cursor.setinputsizes(value = cx_Oracle.STRING)
         self.cursor.execute("""
                 begin
-                  :p_Value := 'TSI';
+                  :value := 'TSI';
                 end;""")
-        self.failUnlessEqual(vars["p_Value"].getvalue(), "TSI")
+        self.failUnlessEqual(vars["value"].getvalue(), "TSI")
 
     def testBindOutSetInputSizesByInteger(self):
         "test binding out with set input sizes defined (by integer)"
-        vars = self.cursor.setinputsizes(p_Value = 30)
+        vars = self.cursor.setinputsizes(value = 30)
         self.cursor.execute("""
                 begin
-                  :p_Value := 'TSI (I)';
+                  :value := 'TSI (I)';
                 end;""")
-        self.failUnlessEqual(vars["p_Value"].getvalue(), "TSI (I)")
+        self.failUnlessEqual(vars["value"].getvalue(), "TSI (I)")
 
     def testBindInOutSetInputSizesByType(self):
         "test binding in/out with set input sizes defined (by type)"
-        vars = self.cursor.setinputsizes(p_Value = cx_Oracle.STRING)
+        vars = self.cursor.setinputsizes(value = cx_Oracle.STRING)
         self.cursor.execute("""
                 begin
-                  :p_Value := :p_Value || ' TSI';
+                  :value := :value || ' TSI';
                 end;""",
-                p_Value = "InVal")
-        self.failUnlessEqual(vars["p_Value"].getvalue(), "InVal TSI")
+                value = "InVal")
+        self.failUnlessEqual(vars["value"].getvalue(), "InVal TSI")
 
     def testBindInOutSetInputSizesByInteger(self):
         "test binding in/out with set input sizes defined (by integer)"
-        vars = self.cursor.setinputsizes(p_Value = 30)
+        vars = self.cursor.setinputsizes(value = 30)
         self.cursor.execute("""
                 begin
-                  :p_Value := :p_Value || ' TSI (I)';
+                  :value := :value || ' TSI (I)';
                 end;""",
-                p_Value = "InVal")
-        self.failUnlessEqual(vars["p_Value"].getvalue(), "InVal TSI (I)")
+                value = "InVal")
+        self.failUnlessEqual(vars["value"].getvalue(), "InVal TSI (I)")
 
     def testBindOutVar(self):
         "test binding out with cursor.var() method"
         var = self.cursor.var(cx_Oracle.STRING)
         self.cursor.execute("""
                 begin
-                  :p_Value := 'TSI (VAR)';
+                  :value := 'TSI (VAR)';
                 end;""",
-                p_Value = var)
+                value = var)
         self.failUnlessEqual(var.getvalue(), "TSI (VAR)")
 
     def testBindInOutVarDirectSet(self):
@@ -209,13 +209,14 @@ class TestStringVar(BaseTestCase):
         var.setvalue(0, "InVal")
         self.cursor.execute("""
                 begin
-                  :p_Value := :p_Value || ' TSI (VAR)';
+                  :value := :value || ' TSI (VAR)';
                 end;""",
-                p_Value = var)
+                value = var)
         self.failUnlessEqual(var.getvalue(), "InVal TSI (VAR)")
 
     def testBindLongString(self):
         "test that binding a long string succeeds"
+        self.cursor.setinputsizes(bigString = cx_Oracle.LONG_STRING)
         self.cursor.execute("""
                 declare
                   t_Temp varchar2(10000);
@@ -227,7 +228,6 @@ class TestStringVar(BaseTestCase):
     def testBindLongStringAfterSettingSize(self):
         "test that setinputsizes() returns a long variable"
         var = self.cursor.setinputsizes(test = 90000)["test"]
-        self.failUnlessEqual(type(var), cx_Oracle.LONG_STRING)
         inString = "1234567890" * 9000
         var.setvalue(0, inString)
         outString = var.getvalue()
@@ -235,19 +235,6 @@ class TestStringVar(BaseTestCase):
                 "output does not match: in was %d, out was %d" % \
                 (len(inString), len(outString)))
 
-    def testStringMaximumReached(self):
-        "test that an error is raised when maximum string length exceeded"
-        var = self.cursor.setinputsizes(test = 100)["test"]
-        inString = "1234567890" * 400
-        var.setvalue(0, inString)
-        outString = var.getvalue()
-        self.failUnlessEqual(inString, outString,
-                "output does not match: in was %d, out was %d" % \
-                (len(inString), len(outString)))
-        badStringSize = 4000 * self.connection.maxBytesPerCharacter + 1
-        inString = "X" * badStringSize
-        self.failUnlessRaises(ValueError, var.setvalue, 0, inString)
-
     def testCursorDescription(self):
         "test cursor description is accurate"
         self.cursor.execute("select * from TestStrings")

+ 7 - 1
desktop/core/ext-py/cx_Oracle-5.1.2/test/TestEnv.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/TestEnv.py

@@ -5,10 +5,16 @@ import os
 import sys
 import unittest
 
+lang = os.environ.get("NLS_LANG")
+if lang is None:
+    os.environ["NLS_LANG"] = ".UTF8"
+if sys.version_info[0] < 3:
+    input = raw_input
+
 def GetValue(name, label):
     value = os.environ.get("CX_ORACLE_" + name)
     if value is None:
-        value = raw_input(label + ": ")
+        value = input(label + ": ")
     if hasattr(cx_Oracle, "UNICODE") or sys.version_info[0] >= 3:
         return value
     return unicode(value)

+ 14 - 14
desktop/core/ext-py/cx_Oracle-5.1.2/test/TimestampVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/TimestampVar.py

@@ -42,32 +42,32 @@ class TestTimestampVar(BaseTestCase):
 
     def testBindNull(self):
         "test binding in a null"
-        self.cursor.setinputsizes(p_Value = cx_Oracle.TIMESTAMP)
+        self.cursor.setinputsizes(value = cx_Oracle.TIMESTAMP)
         self.cursor.execute("""
                 select * from TestTimestamps
-                where TimestampCol = :p_Value""",
-                p_Value = None)
+                where TimestampCol = :value""",
+                value = None)
         self.failUnlessEqual(self.cursor.fetchall(), [])
 
     def testBindOutSetInputSizes(self):
         "test binding out with set input sizes defined"
-        vars = self.cursor.setinputsizes(p_Value = cx_Oracle.TIMESTAMP)
+        vars = self.cursor.setinputsizes(value = cx_Oracle.TIMESTAMP)
         self.cursor.execute("""
                 begin
-                  :p_Value := to_timestamp('20021209', 'YYYYMMDD');
+                  :value := to_timestamp('20021209', 'YYYYMMDD');
                 end;""")
-        self.failUnlessEqual(vars["p_Value"].getvalue(),
+        self.failUnlessEqual(vars["value"].getvalue(),
                cx_Oracle.Timestamp(2002, 12, 9))
 
     def testBindInOutSetInputSizes(self):
         "test binding in/out with set input sizes defined"
-        vars = self.cursor.setinputsizes(p_Value = cx_Oracle.TIMESTAMP)
+        vars = self.cursor.setinputsizes(value = cx_Oracle.TIMESTAMP)
         self.cursor.execute("""
                 begin
-                  :p_Value := :p_Value + 5.25;
+                  :value := :value + 5.25;
                 end;""",
-                p_Value = cx_Oracle.Timestamp(2002, 12, 12, 10, 0, 0))
-        self.failUnlessEqual(vars["p_Value"].getvalue(),
+                value = cx_Oracle.Timestamp(2002, 12, 12, 10, 0, 0))
+        self.failUnlessEqual(vars["value"].getvalue(),
                 cx_Oracle.Timestamp(2002, 12, 17, 16, 0, 0))
 
     def testBindOutVar(self):
@@ -75,10 +75,10 @@ class TestTimestampVar(BaseTestCase):
         var = self.cursor.var(cx_Oracle.TIMESTAMP)
         self.cursor.execute("""
                 begin
-                  :p_Value := to_date('20021231 12:31:00',
+                  :value := to_date('20021231 12:31:00',
                       'YYYYMMDD HH24:MI:SS');
                 end;""",
-                p_Value = var)
+                value = var)
         self.failUnlessEqual(var.getvalue(),
                cx_Oracle.Timestamp(2002, 12, 31, 12, 31, 0))
 
@@ -88,9 +88,9 @@ class TestTimestampVar(BaseTestCase):
         var.setvalue(0, cx_Oracle.Timestamp(2002, 12, 9, 6, 0, 0))
         self.cursor.execute("""
                 begin
-                  :p_Value := :p_Value + 5.25;
+                  :value := :value + 5.25;
                 end;""",
-                p_Value = var)
+                value = var)
         self.failUnlessEqual(var.getvalue(),
                 cx_Oracle.Timestamp(2002, 12, 14, 12, 0, 0))
 

+ 29 - 0
desktop/core/ext-py/cx_Oracle-5.2.1/test/t.sql

@@ -0,0 +1,29 @@
+create or replace package           pkg_TestBooleans as
+
+    type udt_BooleanList is table of boolean index by binary_integer;
+
+    function GetStringRep (
+        a_Value             boolean
+    ) return varchar2;
+
+    function IsLessThan10 (
+        a_Value             number
+    ) return boolean;
+
+    function TestInArrays (
+        a_Array             udt_BooleanList
+    ) return number;
+
+    procedure TestInOutArrays (
+        a_NumElems          number,
+        a_Array             in out nocopy udt_BooleanList
+    );
+
+    procedure TestOutArrays (
+        a_NumElems          number,
+        a_Array             out nocopy udt_BooleanList
+    );
+
+end;
+/
+

+ 10 - 3
desktop/core/ext-py/cx_Oracle-5.1.2/test/test.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/test.py

@@ -6,7 +6,10 @@ import os
 import sys
 import unittest
 
-print "Running tests for cx_Oracle version", cx_Oracle.version
+print "Running tests for cx_Oracle version", cx_Oracle.version,
+print cx_Oracle.buildtime
+print "File:", cx_Oracle.__file__
+sys.stdout.flush()
 
 import TestEnv
 
@@ -30,6 +33,7 @@ else:
             "uLobVar",
             "LongVar",
             "uLongVar",
+            "NCharVar",
             "NumberVar",
             "uNumberVar",
             "ObjectVar",
@@ -39,9 +43,12 @@ else:
             "StringVar",
             "uStringVar",
             "TimestampVar",
-            "uTimestampVar",
-            "UnicodeVar"
+            "uTimestampVar"
     ]
+    if cx_Oracle.clientversion()[0] >= 12:
+        moduleNames.insert(0, "uArrayDMLBatchError")
+        moduleNames.insert(0, "ArrayDMLBatchError")
+        moduleNames.append("BooleanVar")
 
 class BaseTestCase(unittest.TestCase):
 

+ 7 - 1
desktop/core/ext-py/cx_Oracle-5.1.2/test/test3k.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/test3k.py

@@ -8,7 +8,10 @@ import unittest
 
 inSetup = (os.path.basename(sys.argv[0]).lower() == "setup.py")
 
-print("Running tests for cx_Oracle version", cx_Oracle.version)
+print("Running tests for cx_Oracle version", cx_Oracle.version,
+        cx_Oracle.buildtime)
+print("File:", cx_Oracle.__file__)
+sys.stdout.flush()
 
 import TestEnv
 
@@ -28,6 +31,9 @@ else:
             "3kStringVar",
             "TimestampVar"
     ]
+    if cx_Oracle.clientversion()[0] >= 12:
+        moduleNames.insert(0, "3kArrayDMLBatchError")
+        moduleNames.append("BooleanVar")
 
 class BaseTestCase(unittest.TestCase):
 

+ 0 - 0
desktop/core/ext-py/cx_Oracle-5.1.2/test/test_dbapi20.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/test_dbapi20.py


+ 166 - 0
desktop/core/ext-py/cx_Oracle-5.2.1/test/uArrayDMLBatchError.py

@@ -0,0 +1,166 @@
+"""Module for testing row count per iteration for DML Array and Batch errors"""
+
+class TestArrayDMLBatchError(BaseTestCase):
+
+    def testArrayDMLRowCountsOff(self):
+        "test executing with arraydmlrowcounts mode disabled"
+        self.cursor.execute(u"truncate table TestArrayDML")
+        rows = [ (1, u"First"),
+                 (2, u"Second") ]
+        sql = u"insert into TestArrayDML (IntCol,StringCol) values (:1,:2)"
+        self.cursor.executemany(sql, rows, arraydmlrowcounts = False)
+        self.failUnlessRaises(cx_Oracle.DatabaseError,
+                self.cursor.getarraydmlrowcounts)
+        rows = [ (3, u"Third"),
+                 (4, u"Fourth") ]
+        self.cursor.executemany(sql, rows)
+        self.failUnlessRaises(cx_Oracle.DatabaseError,
+                self.cursor.getarraydmlrowcounts)
+
+    def testArrayDMLRowCountsOn(self):
+        "test executing with arraydmlrowcounts mode enabled"
+        self.cursor.execute(u"truncate table TestArrayDML")
+        rows = [ ( 1, u"First", 100),
+                 ( 2, u"Second", 200),
+                 ( 3, u"Third", 300),
+                 ( 4, u"Fourth", 300),
+                 ( 5, u"Fifth", 300) ]
+        sql = u"insert into TestArrayDML (IntCol,StringCol,IntCol2) " \
+                u"values (:1,:2,:3)"
+        self.cursor.executemany(sql, rows, arraydmlrowcounts = True)
+        self.connection.commit()
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(),
+                [1L, 1L, 1L, 1L, 1L])
+        self.cursor.execute(u"select count(*) from TestArrayDML")
+        count, = self.cursor.fetchone()
+        self.failUnlessEqual(count, len(rows))
+
+    def testExceptionInIteration(self):
+        "test executing with arraydmlrowcounts with exception"
+        self.cursor.execute(u"truncate table TestArrayDML")
+        rows = [ (1, u"First"),
+                 (2, u"Second"),
+                 (2, u"Third"),
+                 (4, u"Fourth") ]
+        sql = u"insert into TestArrayDML (IntCol,StringCol) values (:1,:2)"
+        self.failUnlessRaises(cx_Oracle.DatabaseError, self.cursor.executemany,
+                sql, rows, arraydmlrowcounts = True)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(), [1L, 1L])
+
+    def testExecutingDelete(self):
+        "test executing delete statement with arraydmlrowcount mode"
+        self.cursor.execute(u"truncate table TestArrayDML")
+        rows = [ (1, u"First", 100),
+                 (2, u"Second", 200),
+                 (3, u"Third", 300),
+                 (4, u"Fourth", 300),
+                 (5, u"Fifth", 300),
+                 (6, u"Sixth", 400),
+                 (7, u"Seventh", 400),
+                 (8, u"Eighth", 500) ]
+        sql = u"insert into TestArrayDML (IntCol,StringCol,IntCol2) " \
+                u"values (:1, :2, :3)"
+        self.cursor.executemany(sql, rows)
+        rows = [ (200,), (300,), (400,) ]
+        statement = u"delete from TestArrayDML where IntCol2 = :1"
+        self.cursor.executemany(statement, rows, arraydmlrowcounts = True)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(), [1L, 3L, 2L])
+
+    def testExecutingUpdate(self):
+        "test executing update statement with arraydmlrowcount mode"
+        self.cursor.execute(u"truncate table TestArrayDML")
+        rows = [ (1, u"First",100),
+                 (2, u"Second",200),
+                 (3, u"Third",300),
+                 (4, u"Fourth",300),
+                 (5, u"Fifth",300),
+                 (6, u"Sixth",400),
+                 (7, u"Seventh",400),
+                 (8, u"Eighth",500) ]
+        sql = u"insert into TestArrayDML (IntCol,StringCol,IntCol2) " \
+                u"values (:1, :2, :3)"
+        self.cursor.executemany(sql, rows)
+        rows = [ (u"One", 100),
+                 (u"Two", 200),
+                 (u"Three", 300),
+                 (u"Four", 400) ]
+        sql = u"update TestArrayDML set StringCol = :1 where IntCol2 = :2"
+        self.cursor.executemany(sql, rows, arraydmlrowcounts = True)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(),
+                [1L, 1L, 3L, 2L])
+
+    def testInsertWithBatchError(self):
+        "test executing insert with multiple distinct batch errors"
+        self.cursor.execute(u"truncate table TestArrayDML")
+        rows = [ (1, u"First", 100),
+                 (2, u"Second", 200),
+                 (2, u"Third", 300),
+                 (4, u"Fourth", 400),
+                 (5, u"Fourth", 1000)]
+        sql = u"insert into TestArrayDML (IntCol, StringCol, IntCol2) " \
+                u"values (:1, :2, :3)"
+        self.cursor.executemany(sql, rows, batcherrors = True,
+                arraydmlrowcounts = True)
+        expectedErrors = [
+                ( 4, 1438, u"ORA-01438: value larger than specified " \
+                        u"precision allowed for this column\n" ),
+                ( 2, 1, u"ORA-00001: unique constraint " \
+                        u"(CX_ORACLE.TESTARRAYDML_PK) violated\n")
+        ]
+        actualErrors = [(e.offset, e.code, e.message) \
+                for e in self.cursor.getbatcherrors()]
+        self.failUnlessEqual(actualErrors, expectedErrors)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(),
+                [1L, 1L, 0L, 1L, 0L])
+
+    def testBatchErrorFalse(self):
+        "test batcherrors mode set to False"
+        self.cursor.execute(u"truncate table TestArrayDML")
+        rows = [ (1, u"First", 100),
+                 (2, u"Second", 200),
+                 (2, u"Third", 300) ]
+        sql = u"insert into TestArrayDML (IntCol, StringCol, IntCol2) " \
+                u"values (:1, :2, :3)"
+        self.failUnlessRaises(cx_Oracle.IntegrityError,
+                self.cursor.executemany, sql, rows, batcherrors = False)
+
+    def testUpdatewithBatchError(self):
+        "test executing in succession with batch error"
+        self.cursor.execute(u"truncate table TestArrayDML")
+        rows = [ (1, u"First", 100),
+                 (2, u"Second", 200),
+                 (3, u"Third", 300),
+                 (4, u"Second", 300),
+                 (5, u"Fifth", 300),
+                 (6, u"Sixth", 400),
+                 (6, u"Seventh", 400),
+                 (8, u"Eighth", 100) ]
+        sql = u"insert into TestArrayDML (IntCol, StringCol, IntCol2) " \
+                u"values (:1, :2, :3)"
+        self.cursor.executemany(sql, rows, batcherrors = True)
+        expectedErrors = [
+                ( 6, 1, u"ORA-00001: unique constraint " \
+                        u"(CX_ORACLE.TESTARRAYDML_PK) violated\n")
+        ]
+        actualErrors = [(e.offset, e.code, e.message) \
+                for e in self.cursor.getbatcherrors()]
+        self.failUnlessEqual(actualErrors, expectedErrors)
+        rows = [ (101, u"First"),
+                 (201, u"Second"),
+                 (3000, u"Third"),
+                 (900, u"Ninth"),
+                 (301, u"Third") ]
+        sql = u"update TestArrayDML set IntCol2 = :1 where StringCol = :2"
+        self.cursor.executemany(sql, rows, arraydmlrowcounts = True,
+                batcherrors = True)
+        expectedErrors = [
+                ( 2, 1438, u"ORA-01438: value larger than specified " \
+                        u"precision allowed for this column\n" )
+        ]
+        actualErrors = [(e.offset, e.code, e.message) \
+                for e in self.cursor.getbatcherrors()]
+        self.failUnlessEqual(actualErrors, expectedErrors)
+        self.failUnlessEqual(self.cursor.getarraydmlrowcounts(),
+                [1L, 2L, 0L, 0L, 1L])
+        self.failUnlessEqual(self.cursor.rowcount, 4)
+

+ 0 - 2
desktop/core/ext-py/cx_Oracle-5.1.2/test/uConnection.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/uConnection.py

@@ -21,8 +21,6 @@ class TestConnection(TestCase):
     def verifyArgs(self, connection):
         self.failUnlessEqual(connection.username, self.username,
                 "user name differs")
-        self.failUnlessEqual(connection.password, self.password,
-                "password differs")
         self.failUnlessEqual(connection.tnsentry, self.tnsentry,
                 "tnsentry differs")
 

+ 12 - 12
desktop/core/ext-py/cx_Oracle-5.1.2/test/uCursor.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/uCursor.py

@@ -26,25 +26,25 @@ class TestCursor(BaseTestCase):
     def testExecuteKeywordArgs(self):
         """test executing a statement with keyword arguments"""
         simpleVar = self.cursor.var(cx_Oracle.NUMBER)
-        result = self.cursor.execute(u"begin :p_Value := 5; end;",
-                p_Value = simpleVar)
+        result = self.cursor.execute(u"begin :value := 5; end;",
+                value = simpleVar)
         self.failUnlessEqual(result, None)
         self.failUnlessEqual(simpleVar.getvalue(), 5)
 
     def testExecuteDictionaryArg(self):
         """test executing a statement with a dictionary argument"""
         simpleVar = self.cursor.var(cx_Oracle.NUMBER)
-        dictArg = { u"p_Value" : simpleVar }
-        result = self.cursor.execute(u"begin :p_Value := 10; end;", dictArg)
+        dictArg = { u"value" : simpleVar }
+        result = self.cursor.execute(u"begin :value := 10; end;", dictArg)
         self.failUnlessEqual(result, None)
         self.failUnlessEqual(simpleVar.getvalue(), 10)
 
     def testExecuteMultipleMethod(self):
         """test executing a statement with both a dict arg and keyword args"""
         simpleVar = self.cursor.var(cx_Oracle.NUMBER)
-        dictArg = { u"p_Value" : simpleVar }
+        dictArg = { u"value" : simpleVar }
         self.failUnlessRaises(cx_Oracle.InterfaceError, self.cursor.execute,
-                u"begin :p_Value := 15; end;", dictArg, p_Value = simpleVar)
+                u"begin :value := 15; end;", dictArg, value = simpleVar)
 
     def testExecuteAndModifyArraySize(self):
         """test executing a statement and then changing the array size"""
@@ -127,8 +127,8 @@ class TestCursor(BaseTestCase):
     def testExecuteManyWithExecption(self):
         """test executing a statement multiple times (with exception)"""
         self.cursor.execute(u"truncate table TestExecuteMany")
-        rows = [ { u"p_Value" : n } for n in (1, 2, 3, 2, 5) ]
-        statement = u"insert into TestExecuteMany (IntCol) values (:p_Value)"
+        rows = [ { u"value" : n } for n in (1, 2, 3, 2, 5) ]
+        statement = u"insert into TestExecuteMany (IntCol) values (:value)"
         self.failUnlessRaises(cx_Oracle.DatabaseError, self.cursor.executemany,
                 statement, rows)
         self.failUnlessEqual(self.cursor.rowcount, 3)
@@ -136,16 +136,16 @@ class TestCursor(BaseTestCase):
     def testPrepare(self):
         """test preparing a statement and executing it multiple times"""
         self.failUnlessEqual(self.cursor.statement, None)
-        statement = u"begin :p_Value := :p_Value + 5; end;"
+        statement = u"begin :value := :value + 5; end;"
         self.cursor.prepare(statement)
         var = self.cursor.var(cx_Oracle.NUMBER)
         self.failUnlessEqual(self.cursor.statement, statement)
         var.setvalue(0, 2)
-        self.cursor.execute(None, p_Value = var)
+        self.cursor.execute(None, value = var)
         self.failUnlessEqual(var.getvalue(), 7)
-        self.cursor.execute(None, p_Value = var)
+        self.cursor.execute(None, value = var)
         self.failUnlessEqual(var.getvalue(), 12)
-        self.cursor.execute(u"begin :p_Value2 := 3; end;", p_Value2 = var)
+        self.cursor.execute(u"begin :value2 := 3; end;", value2 = var)
         self.failUnlessEqual(var.getvalue(), 3)
 
     def testExceptionOnClose(self):

+ 2 - 2
desktop/core/ext-py/cx_Oracle-5.1.2/test/uCursorVar.py → desktop/core/ext-py/cx_Oracle-5.2.1/test/uCursorVar.py

@@ -11,9 +11,9 @@ class TestCursorVar(BaseTestCase):
         self.failUnlessEqual(cursor.description, None)
         self.cursor.execute(u"""
                 begin
-                  open :p_Cursor for select 'X' StringValue from dual;
+                  open :cursor for select 'X' StringValue from dual;
                 end;""",
-                p_Cursor = cursor)
+                cursor = cursor)
         self.failUnlessEqual(cursor.description,
                 [ ('STRINGVALUE', cx_Oracle.FIXED_CHAR, 1, 1, 0, 0, 1) ])
         self.failUnlessEqual(cursor.fetchall(), [('X',)])

Некоторые файлы не были показаны из-за большого количества измененных файлов