The query displayed is just the query currently executing, but if the connection is in a transaction the problematic lock could have been acquired by any previously executed query. Did you check in pg_stat_activity if the connection is in a transaction (e.g. query_start != xact_start)?
Oh, I see. Thank you. I modified query from wiki and it shows that blocking session actually runs for ~12 hours already. Only last COPY command started recently. So maybe golang library did not close session properly and reused it in another completely different task? Although I defer db.Close() everywhere...