class ExampleMetadataHandler extends MetadataHandler {

    @Override
    public void getPartitions(BlockWriter writer, GetTableLayoutRequest request, QueryStatusChecker queryStatusChecker)
    {
        logCaller(request);

        /**
         * Now use the constraint that was in the request to do some partition pruning. Here we are just
         * generating some fake values for the partitions but in a real implementation you'd use your metastore
         * or knowledge of the actual table's physical layout to do this.
         */
        for (int year = 1990; year < 2020; year++) {
            for (int month = 0; month < 12; month++) {
                for (int day = 0; day < 30; day++) {
                    final int dayVal = day;
                    final int monthVal = month;
                    final int yearVal = year;
                    writer.writeRows((Block block, int rowNum) -> {
                        //these are our partition columns and were defined by the call to doGetTable(...)
                        boolean matched = true;
                        matched &= block.setValue("day", rowNum, dayVal);
                        matched &= block.setValue("month", rowNum, monthVal);
                        matched &= block.setValue("year", rowNum, yearVal);

                        //these are additional field we added by overriding enhancePartitionSchema(...)
                        matched &= block.setValue(PARTITION_LOCATION, rowNum, "s3://" + request.getPartitionCols());
                        matched &= block.setValue(SERDE, rowNum, "TextInputFormat");

                        //if all fields passed then we wrote 1 row
                        return matched ? 1 : 0;
                    });
                }
            }
        }
    }

    public  ExampleMetadataHandler();
    @VisibleForTesting protected  ExampleMetadataHandler(EncryptionKeyFactory keyFactory,
            AWSSecretsManager awsSecretsManager,
            AmazonAthena athena,
            String spillBucket,
            String spillPrefix);

}