Skip to content

Commit

Permalink
Fixed "tinyint(1) to boolean" type conversion error
Browse files Browse the repository at this point in the history
  • Loading branch information
manyuanrong committed Jun 15, 2019
1 parent 953a9ed commit b5b6d29
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 21 deletions.
27 changes: 13 additions & 14 deletions src/packets/parsers/result.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,25 @@
import { BufferReader } from "../../buffer.ts";
import {
MYSQL_TYPE_DATE,
MYSQL_TYPE_DATETIME,
MYSQL_TYPE_DATETIME2,
MYSQL_TYPE_DECIMAL,
MYSQL_TYPE_DOUBLE,
MYSQL_TYPE_FLOAT,
MYSQL_TYPE_DATETIME2,
MYSQL_TYPE_NEWDECIMAL,
MYSQL_TYPE_TINY,
MYSQL_TYPE_SHORT,
MYSQL_TYPE_INT24,
MYSQL_TYPE_LONG,
MYSQL_TYPE_LONGLONG,
MYSQL_TYPE_INT24,
MYSQL_TYPE_YEAR,
MYSQL_TYPE_VARCHAR,
MYSQL_TYPE_VAR_STRING,
MYSQL_TYPE_NEWDATE,
MYSQL_TYPE_NEWDECIMAL,
MYSQL_TYPE_SHORT,
MYSQL_TYPE_STRING,
MYSQL_TYPE_DATE,
MYSQL_TYPE_TIMESTAMP,
MYSQL_TYPE_TIME,
MYSQL_TYPE_DATETIME,
MYSQL_TYPE_NEWDATE,
MYSQL_TYPE_TIME2,
MYSQL_TYPE_TIMESTAMP,
MYSQL_TYPE_TIMESTAMP2,
MYSQL_TYPE_TIME2
MYSQL_TYPE_TINY,
MYSQL_TYPE_VARCHAR,
MYSQL_TYPE_VAR_STRING
} from "../../consttants/mysql_types.ts";

/** @ignore */
Expand Down Expand Up @@ -86,7 +85,7 @@ export function parseRow(reader: BufferReader, fileds: FieldInfo[]): any {
function convertType(field: FieldInfo, val: string): any {
const { fieldType, fieldLen } = field;
if (fieldType === MYSQL_TYPE_TINY && fieldLen === 1) {
return !!val;
return !!parseInt(val);
}
switch (fieldType) {
case MYSQL_TYPE_DECIMAL:
Expand Down
17 changes: 10 additions & 7 deletions test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import { assertEquals, assertThrowsAsync } from "https://deno.land/x/testing/asserts.ts";
import {
assertEquals,
assertThrowsAsync
} from "https://deno.land/x/testing/asserts.ts";
import { runTests, test } from "https://deno.land/x/testing/mod.ts";
import { Client } from "./mod.ts";

Expand All @@ -14,6 +17,7 @@ test(async function testCreateTable() {
CREATE TABLE users (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
is_top tinyint(1) default 0,
created_at timestamp not null default current_timestamp,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Expand Down Expand Up @@ -42,12 +46,11 @@ test(async function testUpdate() {
});

test(async function testQuery() {
let result = await client.query("select ??,name from ?? where id = ?", [
"id",
"users",
1
]);
assertEquals(result, [{ id: 1, name: "MYR" }]);
let result = await client.query(
"select ??,`is_top`,`name` from ?? where id = ?",
["id", "users", 1]
);
assertEquals(result, [{ id: 1, name: "MYR", is_top: false }]);
});

test(async function testQueryErrorOccurred() {
Expand Down

0 comments on commit b5b6d29

Please sign in to comment.