public CqlSessionSelectResult tableDetail(String clusterId, TableDTO.ClusterTableGetArgs args) {
        CqlSession session = cqlSessionFactory.get(clusterId);

        int limit = 1;
        SimpleStatement statement = ClusterUtils.getSchemaTables(session, args.getKeyspace())
            .all()
            .whereColumn(CassandraSystemTablesColumn.TABLES_KEYSPACE_NAME.getColumnName()).isEqualTo(bindMarker())
            .whereColumn(CassandraSystemTablesColumn.TABLES_TABLE_NAME.getColumnName()).isEqualTo(bindMarker())
            .limit(limit)
            .build(args.getKeyspace(), args.getTable())
            .setPageSize(limit)
            .setTimeout(Duration.ofSeconds(3));

        ResultSet resultSet = session.execute(statement);
        ColumnDefinitions definitions = resultSet.getColumnDefinitions();
        Row row = resultSet.one();
        if (row == null) {
            throw new ClusterTableException.ClusterTableNotFoundException(String.format("not found table(%s)", args.getTable()));
        }

        return CqlSessionSelectResult.builder()
            .row(convertRow(session.getContext().getCodecRegistry(), definitions, row))
            .rowHeader(CassdioColumnDefinition.makes(definitions))
            .build();
    }
@Test
    void when_get_not_exists_table_throw_not_exists_exception() {
        // given
        TableDTO.ClusterTableGetArgs args = TableDTO.ClusterTableGetArgs.builder()
            .keyspace(keyspaceName)
            .table("not_exists_table")
            .build();

        // when & then
        assertThatThrownBy(() -> clusterTableGetCommander.tableDetail(CLUSTER_ID, args)).isInstanceOf(ClusterTableNotFoundException.class);

    }