code: @Override
      public Optional<List<String>> getPartitionNamesByParts(String databaseName, String tableName, List<String> parts)
      {
          Table table = getTableOrElseThrow(databaseName, tableName);
          String expression = buildGlueExpression(table.getPartitionColumns(), parts);
          List<Partition> partitions = getPartitions(databaseName, tableName, expression);
          return Optional.of(buildPartitionNames(table.getPartitionColumns(), partitions));
      }
docs: <pre>
  Ex: Partition keys = ['a', 'b', 'c']
  Valid partition values:
  ['1','2','3'] or
  ['', '2', '']
  </pre>
  
  @param parts Full or partial list of partition values to filter on. Keys without filter will be empty strings.
  @return a list of partition names.