@Override
    public List<String> getInsertColumns() {
        List<SQLExpr> columnSQLExprs = ast.getColumns();
        if (columnSQLExprs.isEmpty()) {
            // INSERT INTO ta VALUES (...), without fields clarified
            return null;
        }
        List<String> list = new ArrayList<>(columnSQLExprs.size());
        for (SQLExpr expr : columnSQLExprs) {
            if (expr instanceof SQLIdentifierExpr) {
                list.add(((SQLIdentifierExpr) expr).getName());
            } else {
                wrapSQLParsingException(expr);
            }
        }
        return list;
    }
@Test
    public void testGetInsertColumns() {

        //test for no column
        String sql = "insert into t values (?)";
        SQLStatement ast = getSQLStatement(sql);

        SqlServerInsertRecognizer recognizer = new SqlServerInsertRecognizer(sql, ast);
        List<String> insertColumns = recognizer.getInsertColumns();
        Assertions.assertNull(insertColumns);

        //test for normal
        sql = "insert into t(a) values (?)";
        ast = getSQLStatement(sql);

        recognizer = new SqlServerInsertRecognizer(sql, ast);
        insertColumns = recognizer.getInsertColumns();
        Assertions.assertEquals(1, insertColumns.size());
        Assertions.assertEquals(Collections.singletonList("a"), insertColumns);

        //test for exception
        Assertions.assertThrows(SQLParsingException.class, () -> {
            String s = "insert into t(a) values (?)";
            SQLStatement sqlStatement = getSQLStatement(s);
            SQLInsertStatement sqlInsertStatement = (SQLInsertStatement) sqlStatement;
            sqlInsertStatement.getColumns().add(new SQLDateExpr());

            SqlServerInsertRecognizer sqlServerInsertRecognizer = new SqlServerInsertRecognizer(s, sqlInsertStatement);
            sqlServerInsertRecognizer.getInsertColumns();
        });
    }