mirror of
https://github.com/mariadb-corporation/mariadb-connector-nodejs.git
synced 2025-08-17 19:26:07 +00:00
adding metadata test
This commit is contained in:
@ -52,7 +52,8 @@ install:
|
||||
- cmd: echo [mysqld] > c:\projects\server\data\my.ini
|
||||
- cmd: echo datadir=C:/projects/server/data >> c:\projects\server\data\my.ini
|
||||
- cmd: echo port=3306 >> c:\projects\server\data\my.ini
|
||||
- cmd: echo innodb_buffer_pool_size=195M >> c:\projects\server\data\my.ini
|
||||
- cmd: echo innodb_log_file_size=50M >> c:\projects\server\data\my.ini
|
||||
- cmd: echo innodb_buffer_pool_size=200M >> c:\projects\server\data\my.ini
|
||||
- cmd: echo character-set-server=utf8mb4 >> c:\projects\server\data\my.ini
|
||||
- cmd: echo collation-server=utf8mb4_unicode_ci >> c:\projects\server\data\my.ini
|
||||
- cmd: type c:\projects\server\data\my.ini
|
||||
|
@ -224,11 +224,14 @@ connection.query({rowsAsArray:true, sql:'select * from animals'}, (err, res, fie
|
||||
|
||||
### Field metadata
|
||||
properties
|
||||
* `schema`: field schema
|
||||
* `db`: database schema name (alias `schema` exists for compatibilit with mysql2)
|
||||
* `table`: field table alias
|
||||
* `orgTable`: field table
|
||||
* `name`: field alias
|
||||
* `orgName`: field name
|
||||
* `columnLength`: column length
|
||||
* `columnType`: column type (see FieldType)
|
||||
* `decimals`: decimal length (for DECIMAL field type)
|
||||
|
||||
methods
|
||||
* `isUnsigned()`: indicate if field type is unsigned
|
||||
|
@ -22,31 +22,31 @@ class ColumnDefinition {
|
||||
}
|
||||
|
||||
isUnsigned() {
|
||||
return this._flags & FieldDetail.UNSIGNED;
|
||||
return (this._flags & FieldDetail.UNSIGNED) > 0;
|
||||
}
|
||||
|
||||
canBeNull() {
|
||||
return this._flags & FieldDetail.NOT_NULL;
|
||||
return (this._flags & FieldDetail.NOT_NULL) === 0;
|
||||
}
|
||||
|
||||
isPrimaryKey() {
|
||||
return this._flags & FieldDetail.PRIMARY_KEY;
|
||||
return (this._flags & FieldDetail.PRIMARY_KEY) > 0;
|
||||
}
|
||||
|
||||
isUniqueKey() {
|
||||
return this._flags & FieldDetail.UNIQUE_KEY;
|
||||
return (this._flags & FieldDetail.UNIQUE_KEY) > 0;
|
||||
}
|
||||
|
||||
isMultipleKey() {
|
||||
return this._flags & FieldDetail.MULTIPLE_KEY;
|
||||
return (this._flags & FieldDetail.MULTIPLE_KEY) > 0;
|
||||
}
|
||||
|
||||
isBlob() {
|
||||
return this._flags & FieldDetail.BLOB;
|
||||
return (this._flags & FieldDetail.BLOB) > 0;
|
||||
}
|
||||
|
||||
isZeroFill() {
|
||||
return this._flags & FieldDetail.ZEROFILL_FLAG;
|
||||
return (this._flags & FieldDetail.ZEROFILL_FLAG) > 0;
|
||||
}
|
||||
|
||||
isBinary() {
|
||||
@ -55,7 +55,7 @@ class ColumnDefinition {
|
||||
return this.collation.index === 63;
|
||||
}
|
||||
isAutoIncrement() {
|
||||
return this._flags & FieldDetail.AUTO_INCREMENT;
|
||||
return (this._flags & FieldDetail.AUTO_INCREMENT) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -112,6 +112,6 @@ for (let i = 0; i < props.length; i++) {
|
||||
addProperty(props[i], i);
|
||||
}
|
||||
//add alias for mysql2 compatibility
|
||||
addProperty("schema", 1);
|
||||
addProperty("schema", 0);
|
||||
|
||||
module.exports = ColumnDefinition;
|
||||
|
86
test/integration/test-metadata.js
Normal file
86
test/integration/test-metadata.js
Normal file
@ -0,0 +1,86 @@
|
||||
"use strict";
|
||||
|
||||
const base = require("../base.js");
|
||||
const assert = require("chai").assert;
|
||||
const Collations = require("../../src/const/collations.js");
|
||||
const FieldType = require("../../src/const/field-type");
|
||||
|
||||
describe("metadata", () => {
|
||||
|
||||
it("result metadata values", function(done) {
|
||||
shareConn.query(
|
||||
"CREATE TEMPORARY TABLE metadatatable (id BIGINT not null primary key auto_increment, t varchar(32) UNIQUE, d DECIMAL(10,4) UNSIGNED ZEROFILL) COLLATE='utf8mb4_unicode_ci'"
|
||||
);
|
||||
shareConn.query("SELECT id as id1, t as t1, d as d1 FROM metadatatable as tm", (err, rows, meta) => {
|
||||
assert.equal(meta.length, 3);
|
||||
|
||||
assert.equal(meta[0].db, 'testn');
|
||||
assert.equal(meta[0].schema, 'testn');
|
||||
assert.equal(meta[0].table, 'tm');
|
||||
assert.equal(meta[0].orgTable, 'metadatatable');
|
||||
assert.equal(meta[0].name, 'id1');
|
||||
assert.equal(meta[0].orgName, 'id');
|
||||
assert.equal(meta[0].collation, Collations.fromName("BINARY"));
|
||||
assert.equal(meta[0].columnLength, 20);
|
||||
assert.equal(meta[0].columnType, FieldType.LONGLONG);
|
||||
assert.equal(meta[0].decimals, 0);
|
||||
assert.equal(meta[0].isUnsigned(), false);
|
||||
assert.equal(meta[0].canBeNull(), false);
|
||||
assert.equal(meta[0].isPrimaryKey(), true);
|
||||
assert.equal(meta[0].isUniqueKey(), false);
|
||||
assert.equal(meta[0].isMultipleKey(), false);
|
||||
assert.equal(meta[0].isBlob(), false);
|
||||
assert.equal(meta[0].isZeroFill(), false);
|
||||
assert.equal(meta[0].isBinary(), true);
|
||||
assert.equal(meta[0].isAutoIncrement(), true);
|
||||
assert.equal(meta[0].getPrecision(), 20);
|
||||
assert.equal(meta[0].getDisplaySize(), 20);
|
||||
|
||||
assert.equal(meta[1].db, 'testn');
|
||||
assert.equal(meta[1].schema, 'testn');
|
||||
assert.equal(meta[1].table, 'tm');
|
||||
assert.equal(meta[1].orgTable, 'metadatatable');
|
||||
assert.equal(meta[1].name, 't1');
|
||||
assert.equal(meta[1].orgName, 't');
|
||||
assert.equal(meta[1].collation, Collations.fromName("UTF8MB4_UNICODE_CI"));
|
||||
assert.equal(meta[1].columnLength, 128);
|
||||
assert.equal(meta[1].columnType, FieldType.VAR_STRING);
|
||||
assert.equal(meta[1].decimals, 0);
|
||||
assert.equal(meta[1].isUnsigned(), false);
|
||||
assert.equal(meta[1].canBeNull(), true);
|
||||
assert.equal(meta[1].isPrimaryKey(), false);
|
||||
assert.equal(meta[1].isUniqueKey(), true);
|
||||
assert.equal(meta[1].isMultipleKey(), false);
|
||||
assert.equal(meta[1].isBlob(), false);
|
||||
assert.equal(meta[1].isZeroFill(), false);
|
||||
assert.equal(meta[1].isBinary(), false);
|
||||
assert.equal(meta[1].isAutoIncrement(), false);
|
||||
assert.equal(meta[1].getPrecision(), 128);
|
||||
assert.equal(meta[1].getDisplaySize(), 32);
|
||||
|
||||
assert.equal(meta[2].db, 'testn');
|
||||
assert.equal(meta[2].schema, 'testn');
|
||||
assert.equal(meta[2].table, 'tm');
|
||||
assert.equal(meta[2].orgTable, 'metadatatable');
|
||||
assert.equal(meta[2].name, 'd1');
|
||||
assert.equal(meta[2].orgName, 'd');
|
||||
assert.equal(meta[2].collation, Collations.fromName("BINARY"));
|
||||
assert.equal(meta[2].columnLength, 11);
|
||||
assert.equal(meta[2].columnType, FieldType.NEWDECIMAL);
|
||||
assert.equal(meta[2].decimals, 4);
|
||||
assert.equal(meta[2].isUnsigned(), true);
|
||||
assert.equal(meta[2].canBeNull(), true);
|
||||
assert.equal(meta[2].isPrimaryKey(), false);
|
||||
assert.equal(meta[2].isUniqueKey(), false);
|
||||
assert.equal(meta[2].isMultipleKey(), false);
|
||||
assert.equal(meta[2].isBlob(), false);
|
||||
assert.equal(meta[2].isZeroFill(), true);
|
||||
assert.equal(meta[2].isBinary(), true);
|
||||
assert.equal(meta[2].isAutoIncrement(), false);
|
||||
assert.equal(meta[2].getPrecision(), 11);
|
||||
assert.equal(meta[2].getDisplaySize(), 11);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
Reference in New Issue
Block a user