code: private Optional<ThriftTableMetadata> getTableMetadataInternal(SchemaTableName schemaTableName)
      {
          requireNonNull(schemaTableName, "schemaTableName is null");
          PrestoThriftNullableTableMetadata thriftTableMetadata = getTableMetadata(schemaTableName);
          if (thriftTableMetadata.getTableMetadata() == null) {
              return Optional.empty();
          }
          ThriftTableMetadata tableMetadata = new ThriftTableMetadata(thriftTableMetadata.getTableMetadata(), typeManager);
          if (!Objects.equals(schemaTableName, tableMetadata.getSchemaTableName())) {
              throw new PrestoException(THRIFT_SERVICE_INVALID_RESPONSE, "Requested and actual table names are different");
          }
          return Optional.of(tableMetadata);
      }
docs: this method makes actual thrift request and should be called only by cache load method