Comments (5)
@vrogier OCILIB is a great API - thanks for pinging.
To address a couple of questions, ODPI-C is a new API so supporting the 11.2 client is the way forward. It lets us work with the current technical features of 11.2, 12.1 and 12.2 clients, and lets us focus our development and testing efforts. Users can still connect back to 9i databases.
When we get the cx_Oracle driver updated to ODPI-C, you'll see the object support. @anthony-tuininga may have other comments.
@anthony-tuininga was doing a bit of UTF16 investigation during development. If you have testcases/bug numbers for the OCI UTF16 issues you mention, email me (see my profile). General ODPI-C testing is ongoing. The initial focus is on making sure the cx_Oracle and node-oracledb drivers are stable.
ODPI-C is an open project, so features can be added as priorities arise. I don't want to see the API creep too much from its focus on scripting drivers, and I don't want to see it replicate OCI. It should add value on top of OCI. Anthony is working on adding some 12.2 features at the moment, e.g. Sharded DB support. Yell out with your wish list.
Overall I suspect you will want to keep OCILB on OCI but it's definitely worthwhile doing a proper evaluation.
from odpi.
@vrogier Chris already discussed the fact that 11g R2 clients are capable of connecting to 9i databases so the limitation to an 11g R2 or higher client shouldn't be too onerous. I certainly haven't experienced any issues with limiting support for the cx_Oracle driver to 11g R2 and higher!
I have tested with UTF-16. Using the new cx_Oracle driver based on ODPI-C I have been able to run the complete test suite perfectly using the UTF-16 encoding (and UTF-8 encoding). Some effort has been made to compensate for issues in OCI when managing UTF-16. I can look at the memory leak issue with OCIObjectSetAttr() and OCIObjectGetAttr() -- if you have an example that demonstrates the problem that would be helpful. And if there are other known issues, please let me know!
There is already support for all SQL and PL/SQL types and collections -- including varrays, nested tables, records and collections of records. There are no samples currently for these but, as Chris mentioned, the cx_Oracle driver based on ODPI-C does support it so you can look at those when it is released.
Regarding the other features (direct path and user callbacks) it would be useful to have examples that demonstrate their use so that we can evaluate whether or not such support should be added into ODPI-C. If you have other suggestions we'd love to hear them!
from odpi.
@cjbj n @anthony-tuininga , Thanks for your replies!
About OCI version support, your position make sense regarding server side versions. My concern was more about the fact that sometimes, applications cannot deploy their required Oracle Client versions and must rely on existing deployed client installations. I still encountering people deploying applications using OCILIB in Oracle 8i/9i client environments! Even if they are out-dated legacy environment, is there any reasons (other than internal code complexity) for restricting older versions ? Maybe because odpi does not support runtime loading of OCI shared libraries ?
About UTF16 issues:
- leak in describing column name: oracle bug #9838993 (not resolved so far in 12cR1)
- OCIObjectSetAttr() crash: oracle bug #66885036 (still present in 11gR2, don't know about 12c)
- OCIDBStartup() failed in UTF16 mode (at least using 10gR2)
When odpi-c based cx_Oracle driver will be released ?
I will definitely have a look at it :)
User callbacks is a nice way to add tracing capabilities, providing testing capabilities and moreover the ability to connect to other db backend by providing OCI calls remplacement. I'm currently working on its usage in OCILIB (tracing and replacement).
OCILIB code base is now 10 years old, and although it brings to users a full-futured and easy API on top of OCI, making evolutions to it is not straightforward. It heavily relies internally on macros to minimize code base size, some design errors made years ago are a pain to maintain (for backward compatibility reasons).
Thus i'm currently thinking about planning a full rewrite for its next major version. First idea is a C++ implementation with a C binding on top (As I'm already aslso providing a C++ OCILIB API).
That's when i found ODPI and its interesting idea of mutualized driver code base that I cannot ignore.
Thus i'm really interested in it and will try to analyze the gap in current odpi scope and OCILIB OCI coverage. If he gap is not too big and addressable, I might try to make a PoC based on ODPI.
Best regards,
Vincent
from odpi.
@vrogier If you want to email us (see my profile), we can set up a call - this would be higher bandwidth than GitHub issue updates! There's a lot we could discuss on both sides.
Re UTF16
- 9838993 was determined to be an application coding problem.
- 66885036 doesn't exist; can you check the number?
- a quick scan for OCIDBStartup issues didn't pop up anything open.
from odpi.
Closing this topic as we continued by email.
from odpi.
Related Issues (20)
- XMLTYPE as "real" XML HOT 3
- Ability to set OCI_ATTR_LOBPREFETCH_SIZE HOT 7
- "ORA-03106: fatal two-task communication protocol error" when CLOB is fetched as strings and then lob locators HOT 3
- core dumps generated in libclntsh when timeouts are configured HOT 10
- Any plan to support Apple's M1 plat? HOT 1
- Is there a reference example dequeue message with message ID dequeue option HOT 9
- When ODPI tries to translate a variable to a temporary LOB, and there is inadequate TEMP tablespace, ODPI segfaults when the cursor is closed HOT 6
- M1 Mac issue ( incompatible architecture) HOT 2
- How to use ODPI-C with Oracle Times Ten? HOT 9
- Column Alias Error HOT 7
- Add an option to convert numbers between double and decimal in the same way as node.js, python3, ruby, rust or so HOT 5
- Oracle Rust driver HOT 2
- Option to get json float as float. It is got as double now. HOT 8
- Bytes after nul in members of dpiXid are zeroed. HOT 2
- Is DPI_TPC_END_SUSPEND an undocumented flag in the OCI manual? HOT 3
- dpiEnqOptions_setVisibility and dpiLob_getType are listed not in round_trips.rst HOT 2
- Get column name for position HOT 2
- `dpiStmt_execute` with `DPI_MODE_EXEC_PARSE_ONLY` will create a table. HOT 4
- Retrieving CLOB from an OUT parameter of an Store Procedure HOT 1
- ERROR: DPI-1047: Cannot locate a 32-bit Oracle Client library HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from odpi.