Maybe there's something wrong with my "map" configuration, which led to the improper syntax (see original email), but it's Dovecot that generated the syntax.
I have not used dictionaries and do not have first hand working knowledge. Until someone else more knowledgeable chimes in, this is my educated guess...
On the Dictionary manual page (https://wiki.dovecot.org/Dictionary) it talks about using fields{}, or not, having different requirements and syntax. It looks like you are mixing the two which might be leading to the issue.
If you are using fields{} it looks like you shouldn't have username_field defined. It also says that value_field should be "dummy" which i don't understand how that works. The fields{} is for using multiple primary key columns. If you are using only one column (attr_name) then maybe you should try doing the non fields{} example.
If you have not looked at this manual page before it might give you more hints on trouble shooting.