diff --git a/packages/cubejs-sqlite-driver/driver/SqliteDriver.js b/packages/cubejs-sqlite-driver/driver/SqliteDriver.js index 858c232222882..516d106b44eec 100644 --- a/packages/cubejs-sqlite-driver/driver/SqliteDriver.js +++ b/packages/cubejs-sqlite-driver/driver/SqliteDriver.js @@ -46,14 +46,23 @@ class SqliteDriver extends BaseDriver { const tables = await this.query(query); return { - default: { - ...(tables.map( - table => ({ - [table.name]: table.sql.match(/\((.*)\)/)[1].split(',') - .map(nameAndType => nameAndType.trim().split(' ')).map(([name, type]) => ({ name, type })) - }) - )).reduce((a, b) => ({ ...a, ...b }), {}) - } + default: tables.reduce((acc, table) => ({ + ...acc, + [table.name]: table.sql + // remove EOL for next .match to read full string + .replace(/\n/g, '') + // extract fields + .match(/\((.*)\)/)[1] + // split fields + .split(',') + .map((nameAndType) => { + const match = nameAndType + .trim() + // obtain "([|`|")?name(]|`|")? type" + .match(/(\[|`|")?([^\[\]"`]+)(\]|`|")?\s+(\w+)/) + return { name: match[2], type: match[4] }; + }) + }), {}), }; } }