Skip to content

Commit f1f5ead

Browse files
Update ODPI-C.
1 parent d1b5428 commit f1f5ead

File tree

4 files changed

+36
-32
lines changed

4 files changed

+36
-32
lines changed

src/Cursor.c

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -419,21 +419,21 @@ static int Cursor_PerformDefine(udt_Cursor *self, uint32_t numQueryColumns)
419419
// get query information for the column position
420420
if (dpiStmt_getQueryInfo(self->handle, pos, &queryInfo) < 0)
421421
return Error_RaiseAndReturnInt();
422-
if (queryInfo.sizeInChars)
423-
size = queryInfo.sizeInChars;
424-
else size = queryInfo.clientSizeInBytes;
422+
if (queryInfo.typeInfo.sizeInChars)
423+
size = queryInfo.typeInfo.sizeInChars;
424+
else size = queryInfo.typeInfo.clientSizeInBytes;
425425

426426
// determine object type, if applicable
427427
objectType = NULL;
428-
if (queryInfo.objectType) {
428+
if (queryInfo.typeInfo.objectType) {
429429
objectType = ObjectType_New(self->connection,
430-
queryInfo.objectType);
430+
queryInfo.typeInfo.objectType);
431431
if (!objectType)
432432
return -1;
433433
}
434434

435435
// determine the default type
436-
varType = VarType_FromQueryInfo(&queryInfo);
436+
varType = VarType_FromDataTypeInfo(&queryInfo.typeInfo);
437437
if (!varType)
438438
return -1;
439439

@@ -450,8 +450,8 @@ static int Cursor_PerformDefine(udt_Cursor *self, uint32_t numQueryColumns)
450450
if (outputTypeHandler) {
451451
result = PyObject_CallFunction(outputTypeHandler, "Os#Oiii",
452452
self, queryInfo.name, queryInfo.nameLength,
453-
varType->pythonType, size, queryInfo.precision,
454-
queryInfo.scale);
453+
varType->pythonType, size, queryInfo.typeInfo.precision,
454+
queryInfo.typeInfo.scale);
455455
if (!result) {
456456
Py_XDECREF(objectType);
457457
return -1;
@@ -512,30 +512,30 @@ static PyObject *Cursor_ItemDescription(udt_Cursor *self, uint32_t pos)
512512
// get information about the column position
513513
if (dpiStmt_getQueryInfo(self->handle, pos, &queryInfo) < 0)
514514
return NULL;
515-
varType = VarType_FromQueryInfo(&queryInfo);
515+
varType = VarType_FromDataTypeInfo(&queryInfo.typeInfo);
516516
if (!varType)
517517
return NULL;
518518

519519
// set display size based on data type
520-
switch (queryInfo.oracleTypeNum) {
520+
switch (queryInfo.typeInfo.oracleTypeNum) {
521521
case DPI_ORACLE_TYPE_VARCHAR:
522522
case DPI_ORACLE_TYPE_NVARCHAR:
523523
case DPI_ORACLE_TYPE_CHAR:
524524
case DPI_ORACLE_TYPE_NCHAR:
525525
case DPI_ORACLE_TYPE_ROWID:
526-
displaySize = (int) queryInfo.sizeInChars;
526+
displaySize = (int) queryInfo.typeInfo.sizeInChars;
527527
break;
528528
case DPI_ORACLE_TYPE_RAW:
529-
displaySize = (int) queryInfo.clientSizeInBytes;
529+
displaySize = (int) queryInfo.typeInfo.clientSizeInBytes;
530530
break;
531531
case DPI_ORACLE_TYPE_NATIVE_FLOAT:
532532
case DPI_ORACLE_TYPE_NATIVE_DOUBLE:
533533
case DPI_ORACLE_TYPE_NATIVE_INT:
534534
case DPI_ORACLE_TYPE_NUMBER:
535-
if (queryInfo.precision) {
536-
displaySize = queryInfo.precision + 1;
537-
if (queryInfo.scale > 0)
538-
displaySize += queryInfo.scale + 1;
535+
if (queryInfo.typeInfo.precision) {
536+
displaySize = queryInfo.typeInfo.precision + 1;
537+
if (queryInfo.typeInfo.scale > 0)
538+
displaySize += queryInfo.typeInfo.scale + 1;
539539
}
540540
else displaySize = 127;
541541
break;
@@ -563,16 +563,20 @@ static PyObject *Cursor_ItemDescription(udt_Cursor *self, uint32_t pos)
563563
Py_INCREF(Py_None);
564564
PyTuple_SET_ITEM(tuple, 2, Py_None);
565565
}
566-
if (queryInfo.clientSizeInBytes)
566+
if (queryInfo.typeInfo.clientSizeInBytes)
567567
PyTuple_SET_ITEM(tuple, 3,
568-
PyInt_FromLong(queryInfo.clientSizeInBytes));
568+
PyInt_FromLong(queryInfo.typeInfo.clientSizeInBytes));
569569
else {
570570
Py_INCREF(Py_None);
571571
PyTuple_SET_ITEM(tuple, 3, Py_None);
572572
}
573-
if (queryInfo.precision || queryInfo.scale) {
574-
PyTuple_SET_ITEM(tuple, 4, PyInt_FromLong(queryInfo.precision));
575-
PyTuple_SET_ITEM(tuple, 5, PyInt_FromLong(queryInfo.scale));
573+
if (queryInfo.typeInfo.precision || queryInfo.typeInfo.scale ||
574+
queryInfo.typeInfo.fsPrecision) {
575+
PyTuple_SET_ITEM(tuple, 4,
576+
PyInt_FromLong(queryInfo.typeInfo.precision));
577+
PyTuple_SET_ITEM(tuple, 5,
578+
PyInt_FromLong(queryInfo.typeInfo.scale +
579+
queryInfo.typeInfo.fsPrecision));
576580
} else {
577581
Py_INCREF(Py_None);
578582
PyTuple_SET_ITEM(tuple, 4, Py_None);

src/ObjectType.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,11 @@ static int ObjectType_Initialize(udt_ObjectType *self,
205205
if (!self->name)
206206
return -1;
207207
self->isCollection = info.isCollection;
208-
self->elementOracleTypeNum = info.elementOracleTypeNum;
209-
self->elementNativeTypeNum = info.elementDefaultNativeTypeNum;
210-
if (info.elementObjectType) {
208+
self->elementOracleTypeNum = info.elementTypeInfo.oracleTypeNum;
209+
self->elementNativeTypeNum = info.elementTypeInfo.defaultNativeTypeNum;
210+
if (info.elementTypeInfo.objectType) {
211211
self->elementType = (PyObject*) ObjectType_New(connection,
212-
info.elementObjectType);
212+
info.elementTypeInfo.objectType);
213213
if (!self->elementType)
214214
return -1;
215215
}
@@ -404,14 +404,14 @@ static int ObjectAttribute_Initialize(udt_ObjectAttribute *self,
404404

405405
if (dpiObjectAttr_getInfo(self->handle, &info) < 0)
406406
return Error_RaiseAndReturnInt();
407-
self->oracleTypeNum = info.oracleTypeNum;
408-
self->nativeTypeNum = info.defaultNativeTypeNum;
407+
self->oracleTypeNum = info.typeInfo.oracleTypeNum;
408+
self->nativeTypeNum = info.typeInfo.defaultNativeTypeNum;
409409
self->name = cxString_FromEncodedString(info.name, info.nameLength,
410410
connection->encodingInfo.encoding);
411411
if (!self->name)
412412
return -1;
413-
if (info.objectType) {
414-
self->type = ObjectType_New(connection, info.objectType);
413+
if (info.typeInfo.objectType) {
414+
self->type = ObjectType_New(connection, info.typeInfo.objectType);
415415
if (!self->type)
416416
return -1;
417417
}

src/Variable.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,11 @@ static PyMethodDef g_VariableMethods[] = {
117117

118118

119119
//-----------------------------------------------------------------------------
120-
// VarType_FromQueryInfo()
120+
// VarType_FromDataTypeInfo()
121121
// Return a variable type given query metadata, or NULL indicating that the
122122
// data indicated by the query metadata is not supported.
123123
//-----------------------------------------------------------------------------
124-
static udt_VariableType *VarType_FromQueryInfo(dpiQueryInfo *info)
124+
static udt_VariableType *VarType_FromDataTypeInfo(dpiDataTypeInfo *info)
125125
{
126126
char message[120];
127127

0 commit comments

Comments
 (0)