taozhi8833998 / node-sql-parser

Parse simple SQL statements into an abstract syntax tree (AST) with the visited tableList and convert it back to SQL
https://taozhi8833998.github.io/node-sql-parser/
Apache License 2.0
750 stars 172 forks source link

TypeError: r2.map is not a function #1990

Open 747500 opened 4 days ago

747500 commented 4 days ago

PostgreSQL:

SELECT
    sumIf(
        engineering_networks.realizaciya,
        engineering_networks.company = 'blah-blah"'
        AND
        engineering_networks.obem_realizacii_tip = 'uslugi'
      ) - sumif(
        engineering_networks.zatratnaya_chast,
        engineering_networks.company = 'blah-blah'
            AND
            engineering_networks.obem_realizacii_tip = 'uslugi'
      ) AS var0,
      If(var0 > 0, '2', '1') AS fontColor
     FROM engineering_networks AS engineering_networks
     WHERE
        engineering_networks.company = 'blah-blah' AND
        engineering_networks.month IN ('April') AND
        engineering_networks.year IN ('2024')
     LIMIT 1;

Result:
TypeError: r2.map is not a function

Expected: valid ast or query syntax error

taozhi8833998 commented 4 days ago

@747500 Sorry for that, but I can't reproduce it, can you show me the codes?

747500 commented 4 days ago

It's my inaccuracy

failed on sqlify

import pkg from 'node-sql-parser';
const { Parser, AST } = pkg;

const query = `
SELECT
    somefunc(
        engineering_networks.realizaciya,
        engineering_networks.company = 'blah-blah'
        AND
        engineering_networks.obem_realizacii_tip = 'uslugi'
      ) AS var0,
      If(var0 > 0, '2', '1') AS fontColor
     FROM engineering_networks AS engineering_networks
     WHERE
        engineering_networks.company = 'blah-blah' AND
        engineering_networks.month IN ('April') AND
        engineering_networks.year IN ('2024')
     LIMIT 1;
`;

const parser = new Parser()
const ast = parser.astify(query, { database: 'postgresql'});
const queryRe = parser.sqlify(ast, { database: 'postgresql'});

console.log(ast);
console.log(queryRe);