A trip into the debugger leads me to believe that the slot name |addr:city| in the dao-class defclass gets rewritten as "addr_city",
If colons are safe in SQL field names, you can change s-sql::to-sql-name to leave them intact (there seems to already by an exception for * characters).
p.s., and then there are the database column names (e.g., "type") that are locked in various CL packages...
Slot names can be locked? I've never heard of that. How?