Skip to content

Commit

Permalink
feat(oracle): add width support for numerictype (#16073)
Browse files Browse the repository at this point in the history
Co-authored-by: Hasan Jamil <jarvis@dhcp-10-191-201-165.vpn.oracle.com>
Co-authored-by: Rik Smale <13023439+WikiRik@users.noreply.github.com>
  • Loading branch information
3 people committed Jun 1, 2023
1 parent e07eefb commit af4f0ae
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 31 deletions.
17 changes: 11 additions & 6 deletions src/dialects/oracle/data-types.js
Expand Up @@ -218,11 +218,6 @@ module.exports = BaseTypes => {
DATE.prototype.escape = false;

class DECIMAL extends BaseTypes.DECIMAL {
constructor() {
super();
this.key = 'DECIMAL';
}

toSql() {
let result = '';
if (this._length) {
Expand Down Expand Up @@ -261,7 +256,10 @@ module.exports = BaseTypes => {

class SMALLINT extends BaseTypes.SMALLINT {
toSql() {
return 'NUMBER(5)';
if (this._length) {
return `NUMBER(${this._length},0)`;
}
return 'SMALLINT';
}

_getBindDef(oracledb) {
Expand Down Expand Up @@ -319,6 +317,13 @@ module.exports = BaseTypes => {
}

class INTEGER extends BaseTypes.INTEGER {
toSql() {
if (this._length) {
return `NUMBER(${this._length},0)`;
}
return 'INTEGER';
}

_getBindDef(oracledb) {
return { type: oracledb.DB_TYPE_NUMBER };
}
Expand Down
57 changes: 32 additions & 25 deletions test/unit/sql/data-types.test.js
Expand Up @@ -376,61 +376,69 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
postgres: 'INTEGER',
db2: 'INTEGER',
mssql: 'INTEGER',
sqlite: 'INTEGER'
sqlite: 'INTEGER',
oracle: 'INTEGER'
});

testsql('INTEGER.UNSIGNED.ZEROFILL', DataTypes.INTEGER.UNSIGNED.ZEROFILL, {
default: 'INTEGER UNSIGNED ZEROFILL',
postgres: 'INTEGER',
db2: 'INTEGER',
mssql: 'INTEGER',
sqlite: 'INTEGER'
sqlite: 'INTEGER',
oracle: 'INTEGER'
});

testsql('INTEGER(11)', DataTypes.INTEGER(11), {
default: 'INTEGER(11)',
postgres: 'INTEGER',
db2: 'INTEGER',
mssql: 'INTEGER'
mssql: 'INTEGER',
oracle: 'NUMBER(11,0)'
});

testsql('INTEGER({ length: 11 })', DataTypes.INTEGER({ length: 11 }), {
default: 'INTEGER(11)',
postgres: 'INTEGER',
db2: 'INTEGER',
mssql: 'INTEGER'
mssql: 'INTEGER',
oracle: 'NUMBER(11,0)'
});

testsql('INTEGER(11).UNSIGNED', DataTypes.INTEGER(11).UNSIGNED, {
default: 'INTEGER(11) UNSIGNED',
sqlite: 'INTEGER(11)',
postgres: 'INTEGER',
db2: 'INTEGER',
mssql: 'INTEGER'
mssql: 'INTEGER',
oracle: 'NUMBER(11,0)'
});

testsql('INTEGER(11).UNSIGNED.ZEROFILL', DataTypes.INTEGER(11).UNSIGNED.ZEROFILL, {
default: 'INTEGER(11) UNSIGNED ZEROFILL',
sqlite: 'INTEGER(11)',
postgres: 'INTEGER',
db2: 'INTEGER',
mssql: 'INTEGER'
mssql: 'INTEGER',
oracle: 'NUMBER(11,0)'
});

testsql('INTEGER(11).ZEROFILL', DataTypes.INTEGER(11).ZEROFILL, {
default: 'INTEGER(11) ZEROFILL',
sqlite: 'INTEGER(11)',
postgres: 'INTEGER',
db2: 'INTEGER',
mssql: 'INTEGER'
mssql: 'INTEGER',
oracle: 'NUMBER(11,0)'
});

testsql('INTEGER(11).ZEROFILL.UNSIGNED', DataTypes.INTEGER(11).ZEROFILL.UNSIGNED, {
default: 'INTEGER(11) UNSIGNED ZEROFILL',
sqlite: 'INTEGER(11)',
postgres: 'INTEGER',
db2: 'INTEGER',
mssql: 'INTEGER'
mssql: 'INTEGER',
oracle: 'NUMBER(11,0)'
});

describe('validate', () => {
Expand Down Expand Up @@ -620,7 +628,6 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
title: 'SMALLINT',
dataType: DataTypes.SMALLINT,
expect: {
oracle: 'NUMBER(5)',
default: 'SMALLINT'
}
},
Expand All @@ -629,7 +636,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
dataType: DataTypes.SMALLINT(4),
expect: {
default: 'SMALLINT(4)',
oracle: 'NUMBER(5)',
oracle: 'NUMBER(4,0)',
postgres: 'SMALLINT',
db2: 'SMALLINT',
mssql: 'SMALLINT'
Expand All @@ -640,7 +647,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
dataType: DataTypes.SMALLINT({ length: 4 }),
expect: {
default: 'SMALLINT(4)',
oracle: 'NUMBER(5)',
oracle: 'NUMBER(4,0)',
postgres: 'SMALLINT',
db2: 'SMALLINT',
mssql: 'SMALLINT'
Expand All @@ -651,7 +658,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
dataType: DataTypes.SMALLINT.UNSIGNED,
expect: {
default: 'SMALLINT UNSIGNED',
oracle: 'NUMBER(5)',
oracle: 'SMALLINT',
postgres: 'SMALLINT',
db2: 'SMALLINT',
mssql: 'SMALLINT',
Expand All @@ -663,7 +670,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
dataType: DataTypes.SMALLINT(4).UNSIGNED,
expect: {
default: 'SMALLINT(4) UNSIGNED',
oracle: 'NUMBER(5)',
oracle: 'NUMBER(4,0)',
sqlite: 'SMALLINT(4)',
postgres: 'SMALLINT',
db2: 'SMALLINT',
Expand All @@ -675,7 +682,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
dataType: DataTypes.SMALLINT.UNSIGNED.ZEROFILL,
expect: {
default: 'SMALLINT UNSIGNED ZEROFILL',
oracle: 'NUMBER(5)',
oracle: 'SMALLINT',
postgres: 'SMALLINT',
db2: 'SMALLINT',
mssql: 'SMALLINT',
Expand All @@ -687,7 +694,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
dataType: DataTypes.SMALLINT(4).UNSIGNED.ZEROFILL,
expect: {
default: 'SMALLINT(4) UNSIGNED ZEROFILL',
oracle: 'NUMBER(5)',
oracle: 'NUMBER(4,0)',
sqlite: 'SMALLINT(4)',
postgres: 'SMALLINT',
db2: 'SMALLINT',
Expand All @@ -699,7 +706,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
dataType: DataTypes.SMALLINT.ZEROFILL,
expect: {
default: 'SMALLINT ZEROFILL',
oracle: 'NUMBER(5)',
oracle: 'SMALLINT',
postgres: 'SMALLINT',
db2: 'SMALLINT',
mssql: 'SMALLINT',
Expand All @@ -711,7 +718,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
dataType: DataTypes.SMALLINT(4).ZEROFILL,
expect: {
default: 'SMALLINT(4) ZEROFILL',
oracle: 'NUMBER(5)',
oracle: 'NUMBER(4,0)',
sqlite: 'SMALLINT(4)',
postgres: 'SMALLINT',
db2: 'SMALLINT',
Expand All @@ -723,7 +730,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
dataType: DataTypes.SMALLINT.ZEROFILL.UNSIGNED,
expect: {
default: 'SMALLINT UNSIGNED ZEROFILL',
oracle: 'NUMBER(5)',
oracle: 'SMALLINT',
postgres: 'SMALLINT',
db2: 'SMALLINT',
mssql: 'SMALLINT',
Expand All @@ -735,7 +742,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
dataType: DataTypes.SMALLINT(4).ZEROFILL.UNSIGNED,
expect: {
default: 'SMALLINT(4) UNSIGNED ZEROFILL',
oracle: 'NUMBER(5)',
oracle: 'NUMBER(4,0)',
sqlite: 'SMALLINT(4)',
postgres: 'SMALLINT',
db2: 'SMALLINT',
Expand Down Expand Up @@ -1362,7 +1369,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {

testsql('NUMERIC(15,5)', DataTypes.NUMERIC(15, 5), {
default: 'DECIMAL(15,5)',
oracle: 'NUMBER'
oracle: 'NUMBER(15,5)'
});
}

Expand All @@ -1374,22 +1381,22 @@ describe(Support.getTestDialectTeaser('SQL'), () => {

testsql('DECIMAL(10, 2)', DataTypes.DECIMAL(10, 2), {
default: 'DECIMAL(10,2)',
oracle: 'NUMBER'
oracle: 'NUMBER(10,2)'
});

testsql('DECIMAL({ precision: 10, scale: 2 })', DataTypes.DECIMAL({ precision: 10, scale: 2 }), {
default: 'DECIMAL(10,2)',
oracle: 'NUMBER'
oracle: 'NUMBER(10,2)'
});

testsql('DECIMAL(10)', DataTypes.DECIMAL(10), {
default: 'DECIMAL(10)',
oracle: 'NUMBER'
oracle: 'NUMBER(10)'
});

testsql('DECIMAL({ precision: 10 })', DataTypes.DECIMAL({ precision: 10 }), {
default: 'DECIMAL(10)',
oracle: 'NUMBER'
oracle: 'NUMBER(10)'
});

testsql('DECIMAL.UNSIGNED', DataTypes.DECIMAL.UNSIGNED, {
Expand All @@ -1410,7 +1417,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
mariadb: 'DECIMAL(10,2) UNSIGNED',
mysql: 'DECIMAL(10,2) UNSIGNED',
default: 'DECIMAL(10,2)',
oracle: 'NUMBER'
oracle: 'NUMBER(10,2)'
});

describe('validate', () => {
Expand Down

0 comments on commit af4f0ae

Please sign in to comment.