I’ve been evaluating PostgreSQL’s hstore functionality (9.2) and the only thing the fine manual isn’t explicit about is how to rename keys. For instance, how could I rename the key c to ai_count?
"c"=>"3", "ai_voltage"=>"3", "ai_temperature"=>"28"
I’m thinking there is no direct way to do this and that it involves duplicating the c key to a ai_count key, then dropping the c key. How can I do this, ideally as a one-liner which can be applied to multiple records?
I think you’re right that you have to pull the old pair out and put the new pair (with the renamed key) back in.
You could do it with a one-liner:
where
his the hstore,from_keyis the key you want to change andto_keyis what you want to change it to. That will return a new hstore with the desired change but it assumes thatfrom_keyis inh; iffrom_keyisn’t inhthen you’ll end up with ato_key -> NULLin your hstore. If you, like all sane people, don’t want the stray NULL then I’d wrap the logic in a simple function to make it easier to add an existence check; something like this:Then you can say both of these and get the expected results: