Skip to content

Commit eb80b7a

Browse files
committed
Minor bug fixes for vector datatype
1 parent 9fd8218 commit eb80b7a

File tree

4 files changed

+25
-6
lines changed

4 files changed

+25
-6
lines changed

lib/connection.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ const constants = require('./constants.js');
4343
const settings = require('./settings.js');
4444
const transformer = require('./transformer.js');
4545
const types = require('./types.js');
46-
const oson = require('impl/datahandlers/oson.js');
46+
const oson = require('./impl/datahandlers/oson.js');
4747

4848
// global mapping of subscriptions; these cannot be tied to a particular
4949
// connection or pool since subscriptions can be created with one connection

lib/settings.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const constants = require('./constants.js');
3030
const errors = require('./errors.js');
3131
const types = require('./types.js');
3232
const nodbUtil = require("./util.js");
33-
const vector = require('impl/datahandlers/vector.js');
33+
const vector = require('./impl/datahandlers/vector.js');
3434

3535
class Settings {
3636

src/njsVariable.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -757,11 +757,9 @@ bool njsVariable_setScalarValue(njsVariable *var, uint32_t pos, napi_env env,
757757
void *buffer;
758758
njsLob *lob;
759759
bool check;
760-
napi_value arrBuf;
761760
napi_typedarray_type type;
762761
void *rawdata = NULL;
763762
size_t numElem = 0;
764-
size_t byteOffset = 0;
765763

766764
// initialization
767765
data = &var->buffer->dpiVarData[pos];
@@ -793,7 +791,7 @@ bool njsVariable_setScalarValue(njsVariable *var, uint32_t pos, napi_env env,
793791
if (var->varTypeNum == DPI_ORACLE_TYPE_VECTOR) {
794792
// only typed arrays are sent
795793
NJS_CHECK_NAPI(env, napi_get_typedarray_info(env, value, &type,
796-
&numElem, &rawdata, &arrBuf, &byteOffset))
794+
&numElem, &rawdata, NULL, NULL))
797795
vectorInfo.numDimensions = (uint32_t)numElem;
798796
switch (type) {
799797
case napi_float64_array:
@@ -808,7 +806,7 @@ bool njsVariable_setScalarValue(njsVariable *var, uint32_t pos, napi_env env,
808806
default:
809807
break;
810808
}
811-
vectorInfo.dimensions.asPtr = rawdata + byteOffset;
809+
vectorInfo.dimensions.asPtr = rawdata;
812810
if (dpiVector_setValue(data->value.asVector, &vectorInfo) < 0) {
813811
return njsBaton_setErrorDPI(baton);
814812
}

test/dataTypeVector1.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1584,4 +1584,25 @@ describe('294. dataTypeVector1.js', function() {
15841584
assert.strictEqual(clobData, arr2.toString('utf8'));
15851585
await connection.execute(testsUtil.sqlDropTable(table));
15861586
}); // 294.59
1587+
1588+
it('294.60 insert a float64 typed array created from ArrayBuffer', async function() {
1589+
const elements = [8.1, 7.2, 6.3, 5.4, 4.5, 3.6, 2.7, 1.8, 9.9, 0.0];
1590+
const arrBuf = new ArrayBuffer(128);
1591+
1592+
// Create typed array of 10 elements from byteOffset 8
1593+
const float64Arr = new Float64Array(arrBuf, 8, 10);
1594+
1595+
// initialize
1596+
elements.forEach((element, index) => {
1597+
float64Arr[index] = element;
1598+
});
1599+
1600+
// insert and verify.
1601+
const binds = { emdbedding: { dir: oracledb.BIND_IN, type: oracledb.DB_TYPE_VECTOR, val: float64Arr } };
1602+
const sql = `insert into ${tableName} (IntCol, Vector64Col)
1603+
values(2, :emdbedding)`;
1604+
await connection.execute(sql, binds);
1605+
const result = await connection.execute(`select Vector64Col from ${tableName}`);
1606+
assert.deepStrictEqual(result.rows[0][0], Array.from(float64Arr));
1607+
}); // 294.60
15871608
});

0 commit comments

Comments
 (0)