Skip to content

Commit 851c9a4

Browse files
Add support for getting/setting raw attributes of objects, as requested
(oracle/odpi#72).
1 parent e988d74 commit 851c9a4

3 files changed

Lines changed: 15 additions & 11 deletions

File tree

test/ObjectVar.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ def testFetchData(self):
123123
('OBJECTCOL', cx_Oracle.OBJECT, None, None, None, None, 1),
124124
('ARRAYCOL', cx_Oracle.OBJECT, None, None, None, None, 1) ])
125125
self.__TestData(1, (1, 'First row', 'First ', 'N First Row',
126-
'N First ', 2, 5, 12.125, 0.5, 12.5, 25.25, 50.125,
127-
cx_Oracle.Timestamp(2007, 3, 6, 0, 0, 0),
126+
'N First ', b'Raw Data 1', 2, 5, 12.125, 0.5, 12.5, 25.25,
127+
50.125, cx_Oracle.Timestamp(2007, 3, 6, 0, 0, 0),
128128
cx_Oracle.Timestamp(2008, 9, 12, 16, 40),
129129
cx_Oracle.Timestamp(2009, 10, 13, 17, 50),
130130
cx_Oracle.Timestamp(2010, 11, 14, 18, 55),
@@ -134,8 +134,8 @@ def testFetchData(self):
134134
[5, 10, None, 20])
135135
self.__TestData(2, None, [3, None, 9, 12, 15])
136136
self.__TestData(3, (3, 'Third row', 'Third ', 'N Third Row',
137-
'N Third ', 4, 10, 6.5, 0.75, 43.25, 86.5, 192.125,
138-
cx_Oracle.Timestamp(2007, 6, 21, 0, 0, 0),
137+
'N Third ', b'Raw Data 3', 4, 10, 6.5, 0.75, 43.25, 86.5,
138+
192.125, cx_Oracle.Timestamp(2007, 6, 21, 0, 0, 0),
139139
cx_Oracle.Timestamp(2007, 12, 13, 7, 30, 45),
140140
cx_Oracle.Timestamp(2017, 6, 21, 23, 18, 45),
141141
cx_Oracle.Timestamp(2017, 7, 21, 8, 27, 13),
@@ -153,7 +153,7 @@ def testGetObjectType(self):
153153
self.assertEqual(typeObj.name, "UDT_OBJECT")
154154
expectedAttributeNames = ["NUMBERVALUE", "STRINGVALUE",
155155
"FIXEDCHARVALUE", "NSTRINGVALUE", "NFIXEDCHARVALUE",
156-
"INTVALUE", "SMALLINTVALUE", "REALVALUE",
156+
"RAWVALUE", "INTVALUE", "SMALLINTVALUE", "REALVALUE",
157157
"DOUBLEPRECISIONVALUE", "FLOATVALUE", "BINARYFLOATVALUE",
158158
"BINARYDOUBLEVALUE", "DATEVALUE", "TIMESTAMPVALUE",
159159
"TIMESTAMPTZVALUE", "TIMESTAMPLTZVALUE", "CLOBVALUE",
@@ -202,6 +202,7 @@ def testRoundTripObject(self):
202202
obj.FIXEDCHARVALUE = "Fixed str"
203203
obj.NSTRINGVALUE = "A NCHAR string"
204204
obj.NFIXEDCHARVALUE = "Fixed N"
205+
obj.RAWVALUE = b"Raw Value"
205206
obj.INTVALUE = 27
206207
obj.SMALLINTVALUE = 13
207208
obj.REALVALUE = 184.875
@@ -228,8 +229,8 @@ def testRoundTripObject(self):
228229
from TestObjects
229230
where IntCol = 4""")
230231
self.__TestData(4, (5, 'A string', 'Fixed str ', 'A NCHAR string',
231-
'Fixed N ', 27, 13, 184.875, 1.375, 23.75, 14.25, 29.1625,
232-
cx_Oracle.Timestamp(2017, 5, 9, 0, 0, 0),
232+
'Fixed N ', b'Raw Value', 27, 13, 184.875, 1.375, 23.75,
233+
14.25, 29.1625, cx_Oracle.Timestamp(2017, 5, 9, 0, 0, 0),
233234
cx_Oracle.Timestamp(2017, 5, 9, 9, 41, 13),
234235
cx_Oracle.Timestamp(1986, 8, 2, 15, 27, 38),
235236
cx_Oracle.Timestamp(1999, 11, 12, 23, 5, 2),

test/sql/SetupTest.sql

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ create type &main_user..udt_Object as object (
7979
FixedCharValue char(10),
8080
NStringValue nvarchar2(60),
8181
NFixedCharValue nchar(10),
82+
RawValue raw(16),
8283
IntValue integer,
8384
SmallIntValue smallint,
8485
RealValue real,
@@ -351,7 +352,8 @@ end;
351352

352353
insert into &main_user..TestObjects values (1,
353354
&main_user..udt_Object(1, 'First row', 'First', 'N First Row', 'N First',
354-
2, 5, 12.125, 0.5, 12.5, 25.25, 50.125, to_date(20070306, 'YYYYMMDD'),
355+
'52617720446174612031', 2, 5, 12.125, 0.5, 12.5, 25.25, 50.125,
356+
to_date(20070306, 'YYYYMMDD'),
355357
to_timestamp('20080912 16:40:00', 'YYYYMMDD HH24:MI:SS'),
356358
to_timestamp_tz('20091013 17:50:00 00:00',
357359
'YYYYMMDD HH24:MI:SS TZH:TZM'),
@@ -370,7 +372,8 @@ insert into &main_user..TestObjects values (2, null,
370372

371373
insert into &main_user..TestObjects values (3,
372374
&main_user..udt_Object(3, 'Third row', 'Third', 'N Third Row', 'N Third',
373-
4, 10, 6.5, 0.75, 43.25, 86.5, 192.125, to_date(20070621, 'YYYYMMDD'),
375+
'52617720446174612033', 4, 10, 6.5, 0.75, 43.25, 86.5, 192.125,
376+
to_date(20070621, 'YYYYMMDD'),
374377
to_timestamp('20071213 07:30:45', 'YYYYMMDD HH24:MI:SS'),
375378
to_timestamp_tz('20170621 23:18:45 00:00',
376379
'YYYYMMDD HH24:MI:SS TZH:TZM'),
@@ -879,7 +882,7 @@ create or replace package body &main_user..pkg_TestBindObject as
879882
begin
880883
a_Object := udt_Object(a_NumberValue, a_StringValue, null, null, null,
881884
null, null, null, null, null, null, null, null, null, null,
882-
null, null, null, null, null, null);
885+
null, null, null, null, null, null, null);
883886
end;
884887

885888
end;

0 commit comments

Comments
 (0)