500 natural-language questions across 11 real databases, loaded into one PostgreSQL instance. Each database carries one mechanically generated access policy — no hand-picking, which is what stops a benchmark being a demo.

Questions
500
BIRD Mini-Dev, with human-written reference SQL for each
Real databases
11
75 tables in one PostgreSQL instance
Rows under policy
1.71M
1,194,691 authorized · 519,452 off-limits
Access roles
147
across 17 distinct rule shapes

The policy on each database

DatabaseProtected tableAccess ruleAuthorizedOf totalVisible
european_football_2matchseason = '2008/2009'3,32625,97912.8%
superherohero_attributeattribute_id = 16233,73816.7%
formula_1pitstopsstop = 12,5525,81543.9%
codebase_communitypostsposttypeid = 247,75591,96651.9%
financialtranstype = 'VYDAJ'634,5711,056,32060.1%
california_schoolsschoolsstatustype = 'Active'11,70817,68666.2%
student_clubzip_codetype = 'Standard'29,97341,87771.6%
thrombosis_predictionpatientsex = 'F'1,0231,23882.6%
toxicologybondbond_type = '-'7,7439,15684.6%
debit_card_specializingcustomerscurrency = 'CZK'30,45932,46193.8%
card_gameslegalitiesstatus = 'Legal'424,958427,90799.3%
Across all 111,194,6911,714,14369.7%

Policies span the full range deliberately: from european_football_2, where a principal sees one season in eight, to card_games, where almost everything is permitted. A benchmark that only tested narrow policies would overstate how often enforcement matters.

How the correct answer is produced

For each policy the database builds a copy of the protected table containing only the permitted rows — a plain CREATE TABLE AS SELECT. BIRD's own human-written reference SQL is then run against that copy. Whatever it returns is the correct answer for that principal.

Our engine plays no part in producing it. That is what makes the scoring independent: we are graded against a result we did not compute.