postgres: locks around shared state in internal provider implementation
postgres: locks around shared state in internal provider implementation

If multiple threads call methods like "GetCollumns" it could end up adding
the same key multiple times to the dictionary cause an exception.

s952163/SQLProvider,bennylynch/SQLProvider,mFingers/SQLProvider