@Override
    public List<DBTableMetaInfo> getMeta() throws SQLException {
        List<DBTableMetaInfo> result = new LinkedList<>();
        Statement tablesStatement = connection.createStatement();
        PreparedStatement columnsStatement = connection.prepareStatement("SELECT COLUMNNAME, COLUMNDATATYPE " +
                "FROM SYS.SYSCOLUMNS " +
                "WHERE REFERENCEID = ?");

        ResultSet tables = tablesStatement.executeQuery("SELECT tablename, tableid " +
                "FROM SYS.SYSTABLES" + (allTables ? "" : " WHERE tabletype = \'T\'"));
        while (tables.next()) {
            List<DBColumnMetaInfo> columnsMeta = new LinkedList<>();

            columnsStatement.setString(1, tables.getString(2));
            ResultSet columns = columnsStatement.executeQuery();
            while (columns.next()) {
                columnsMeta.add(new DBColumnMetaInfo(columns.getString(1), columns.getString(2)));
            }

            result.add(new DBTableMetaInfo(tables.getString(1), columnsMeta));
        }
        return result;
    }