From 6e01f0f2e7194284341f89a44839d16398358f9b Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Thu, 6 Jul 2023 12:06:32 +0200 Subject: [PATCH] fix: unable to copy as sql inserts with BIT fileds, fixes #613 --- src/common/libs/sqlUtils.ts | 4 ++-- src/renderer/components/WorkspaceTabQueryTableRow.vue | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/common/libs/sqlUtils.ts b/src/common/libs/sqlUtils.ts index 08d4d26b..a80a77ab 100644 --- a/src/common/libs/sqlUtils.ts +++ b/src/common/libs/sqlUtils.ts @@ -72,7 +72,7 @@ export const escapeAndQuote = (val: string, client: ClientCode) => { export const valueToSqlString = (args: { val: any; client: ClientCode; - field: {type: string; datePrecision: number; isArray?: boolean}; + field: {type: string; datePrecision?: number; precision?: number | false; isArray?: boolean}; }): string => { let parsedValue; const { val, client, field } = args; @@ -105,7 +105,7 @@ export const valueToSqlString = (args: { else if (TEXT_SEARCH.includes(field.type)) parsedValue = `'${val.replaceAll('\'', '\'\'')}'`; else if (BIT.includes(field.type)) - parsedValue = `b'${hexToBinary(Buffer.from(val).toString('hex') as undefined as HexChar[])}'`; + parsedValue = `b'${hexToBinary(Buffer.from(new Uint8Array(Object.values(val))).toString('hex') as undefined as HexChar[])}'`; else if (BLOB.includes(field.type)) { let buffer: Buffer; if (val instanceof Uint8Array) diff --git a/src/renderer/components/WorkspaceTabQueryTableRow.vue b/src/renderer/components/WorkspaceTabQueryTableRow.vue index 98af44ff..7d20c907 100644 --- a/src/renderer/components/WorkspaceTabQueryTableRow.vue +++ b/src/renderer/components/WorkspaceTabQueryTableRow.vue @@ -293,7 +293,7 @@ const inputProps = computed(() => { let timeMask = '##:##:##'; const precision = props.fields[editingField.value].length; - for (let i = 0; i < precision; i++) + for (let i = 0; i < Number(precision); i++) timeMask += i === 0 ? '.#' : '#'; if (HAS_TIMEZONE.includes(editingType.value)) @@ -309,7 +309,7 @@ const inputProps = computed(() => { let datetimeMask = '####-##-## ##:##:##'; const precision = props.fields[editingField.value].length; - for (let i = 0; i < precision; i++) + for (let i = 0; i < Number(precision); i++) datetimeMask += i === 0 ? '.#' : '#'; if (HAS_TIMEZONE.includes(editingType.value)) @@ -582,7 +582,7 @@ const typeFormat = (val: string | number | Date | number[], type: string, precis return val; let datePrecision = ''; - for (let i = 0; i < precision; i++) + for (let i = 0; i < Number(precision); i++) datePrecision += i === 0 ? '.S' : 'S'; return moment(val).isValid() ? moment(val).format(`YYYY-MM-DD HH:mm:ss${datePrecision}`) : val;