One of the limitations with both RDS and Heroku is that you can only install the extensions they've approved and made available to you. Except ... you can install "SQL-only" extensions which don't have a binary component. Like pg_partman.
pg_partman is a set of functions and tables which help you manage your partitioned tables, including creating new partitions and triggers on the partition master. I love it because it means I never have to write ad-hoc code for a client to do that again. So of course I want to install it on our clients who are running on Heroku and RDS and need partitioning. However, I have no access to "create extension partman" on the RDS command line, so how do I make it work? Mostly by loading the extension the old way.
1) create a new schema on the target database called "partman".
2) Install PostgreSQL 9.3 on my laptop, including the development files.
3) git clone pg_partman.
4) make & make install pg_partman on my laptop. Inside the pg_partman source directory, that will create a file in the "sql" directory called (currently): pg_partman--1.7.2.sql.
5) Since that file is designed to be installed as an extension, I need to alter it. First, I replace all occurances of "@extschema@" with "partman". Second, I delete the line "SELECT pg_catalog.pg_extension_config_dump('part_config', '');"
6) Load partman into your database by using "psql -f pg_partman--1.7.2.sql YOUR_DB_NAME -h YOUR_HOST". In the RDS case, this needs to be done as the instance superuser.
pg_partman can now be used in the target database by calling all of the functions as "partman.function", or by putting the partman schema in your search_path.
Now, this has the major drawback that upgrading pg_partman once 1.7.3 comes out will be a very manual process. But that's better than not using it at all.
pg_partman is a set of functions and tables which help you manage your partitioned tables, including creating new partitions and triggers on the partition master. I love it because it means I never have to write ad-hoc code for a client to do that again. So of course I want to install it on our clients who are running on Heroku and RDS and need partitioning. However, I have no access to "create extension partman" on the RDS command line, so how do I make it work? Mostly by loading the extension the old way.
1) create a new schema on the target database called "partman".
2) Install PostgreSQL 9.3 on my laptop, including the development files.
3) git clone pg_partman.
4) make & make install pg_partman on my laptop. Inside the pg_partman source directory, that will create a file in the "sql" directory called (currently): pg_partman--1.7.2.sql.
5) Since that file is designed to be installed as an extension, I need to alter it. First, I replace all occurances of "@extschema@" with "partman". Second, I delete the line "SELECT pg_catalog.pg_extension_config_dump('part_config', '');"
6) Load partman into your database by using "psql -f pg_partman--1.7.2.sql YOUR_DB_NAME -h YOUR_HOST". In the RDS case, this needs to be done as the instance superuser.
pg_partman can now be used in the target database by calling all of the functions as "partman.function", or by putting the partman schema in your search_path.
Now, this has the major drawback that upgrading pg_partman once 1.7.3 comes out will be a very manual process. But that's better than not using it at all.