I wonder if we wouldn't be better advised to require exactly one dot. This isn't a feature that we really encourage users to use, and the further we move the goalposts for it, the harder it will be to replace it. In particular I doubt the long-stalled session-variables patch could support such names, since it needs the names to conform to normal SQL rules.
If I understand correctly, session variables don't even intersect with custom parameters.
Also, they seems to work fine with FQDN:
postgres=# create database testdb; CREATE DATABASE postgres=# \c testdb You are now connected to database "testdb" as user "akukushkin". testdb=# create schema testschema; CREATE SCHEMA testdb=# create variable testdb.testschema.testvar int; CREATE VARIABLE testdb=# let testdb.testschema.testvar = 1; LET testdb=# select testdb.testschema.testvar; testvar --------- 1 (1 row)