@Override
    public Prepare.PreparingTable getTable(List<String> names) {
        Prepare.PreparingTable originRelOptTable = super.getTable(names);
        if (originRelOptTable == null) {
            return null;
        } else {
            // Wrap as FlinkPreparingTableBase to use in query optimization.
            CatalogSchemaTable table = originRelOptTable.unwrap(CatalogSchemaTable.class);
            if (table != null) {
                return toPreparingTable(
                        originRelOptTable.getRelOptSchema(),
                        originRelOptTable.getQualifiedName(),
                        originRelOptTable.getRowType(),
                        table);
            } else {
                return originRelOptTable;
            }
        }
    }
@Test
    void testGetNonFlinkPreparingTableBase() {
        Table nonFlinkTableMock = mock(Table.class);
        when(nonFlinkTableMock.getRowType(typeFactory)).thenReturn(mock(RelDataType.class));
        rootSchemaPlus.add(tableMockName, nonFlinkTableMock);
        Prepare.PreparingTable resultTable =
                catalogReader.getTable(Collections.singletonList(tableMockName));
        assertThat(resultTable).isNotInstanceOf(FlinkPreparingTableBase.class);
    }