This table, taken from the pgpool-II docs, shows whether a SELECT query will replicate, be sent to master only, or be load balanced based on three conditions:
|SELECT is inside a transaction block||Y||Y||Y||N||N||N||Y||N|
|replicate_select is true||Y||Y||N||N||Y||Y||N||N|
|load_balance_mode is true||Y||N||N||N||Y||N||Y||Y|
|results(R:replication, M: send only to master, L: load balance)||R||R||M||M||R||R||M||L|
It's absolutely clear that I have replicate_select set to false and load_balance_mode set to true. I seem to be getting a result of "M", which must mean my SELECT is in a transaction block. It doesn't appear to be though, acc. to my pg logs - at least, I don't see any BEGIN before the SELECT. Hmm!
If I fiddle with my two values of backend_weight and restart pgpool, it will switch to the node with the greater weight. Doesn't help me much, but it shows it's doing...something.