\set ECHO none
\pset format unaligned

/* The min-max m-semiring: ⊕ = enum-min, ⊗ = enum-max.
   Security shape: alternative derivations combine to the least sensitive
   label, joins combine to the most sensitive label. The carrier is the
   classification_level enum from add_provenance.sql. */
SELECT create_provenance_mapping('personnel_level', 'personnel', 'classification');

CREATE TABLE result_minmax AS SELECT
  p1.city,
  sr_minmax(provenance(),'personnel_level','unclassified'::classification_level) AS clearance
FROM personnel p1, personnel p2
WHERE p1.city = p2.city AND p1.id < p2.id
GROUP BY p1.city
ORDER BY p1.city;

SELECT remove_provenance('result_minmax');
SELECT * FROM result_minmax;

DROP TABLE result_minmax;
