Comments (5)
It's not zhat easy: insert 191/200 in Oracle DB into a num NUMBER column.
That's 0.955.
Then SELECT num-0.955 FROM table.
That will be 10^-39.
I don't think that hiding this in a driver would do any good...
from odpi.
@tgulacsi
Could you post details? What programming language or tool did you use? How did you insert and fetch numbers?
I cannot reproduce it by sqlplus and rust-oracle.
I think that the inserted value is not 0.955.
If it is exactly 0.955, SELECT dump(num) FROM table
is Typ=2 Len=3: 192,96,51
.
I guess that dump(num)
is Typ=2 Len=21: 192,96,51,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,??
(0.95500000000000000000000000000000000000??
) in the your table because num-0.955
is 10^-39.
from odpi.
You're right, it depends on the column's data type - NUMBER works as expected,
but if you specify a precision, it degrades to using floating-point:
CREATE TABLE w_gt_test_n (n NUMBER, n38 NUMBER(38,38)) TABLESPACE DATA;
INSERT INTO W_gt_test_n VALUES (0.955, 0.955);
INSERT INTO W_gt_test_n VALUES (191/200, 191/200);
SELECT n, DUMP(n), n38, DUMP(n38), DUMP(n-n38) FROM w_gt_test_n;
DROP TABLE w_gt_test_n;
PL/SQL Developer (Delphi):
N DUMP(N) N38 DUMP(N38) DUMP(N-N38)
0,955 Typ=2 Len=3: 192,96,51 0,95500000000000013 Typ=2 Len=3: 192,96,51 Typ=2 Len=1: 128
0,955 Typ=2 Len=3: 192,96,51 0,95500000000000013 Typ=2 Len=3: 192,96,51 Typ=2 Len=1: 128
SQL*Plus:
N
----------
DUMP(N)
--------------------------------------------------------------------------------
N38
----------
DUMP(N38)
--------------------------------------------------------------------------------
DUMP(N-N38)
--------------------------------------------------------------------------------
,955
Typ=2 Len=3: 192,96,51
,955
Typ=2 Len=3: 192,96,51
Typ=2 Len=1: 128
,955
Typ=2 Len=3: 192,96,51
,955
Typ=2 Len=3: 192,96,51
Typ=2 Len=1: 128
So yes, I've also fallen: it's only the displaying library's error.
from odpi.
I think that the feature is useful for node-oracledb. But it isn't for cx_Oracle (if I don't misunderstand this) and rust-oracle because they use DPI_NATIVE_TYPE_BYTES
for numbers and access numbers via strings.
If it isn't useful for drivers other than what I checked, feel free to close it. If only one driver needs it, it is almost dead code.
Well, I thought that cx_Python also used DPI_NATIVE_TYPE_DOUBLE
for numbers as node-oracledb did and it was worth to add the feature. But cx_Python have used DPI_NATIVE_TYPE_BYTES
for numbers since this commit. I'm not sure now whether it is worth or not.
from odpi.
We'll definitely evaluate it.
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
- 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.