@@ -90,7 +90,8 @@ Main Options:
9090 -c|--create Run in create mode (default)
9191 -S|--style=FILE The Lua config file (same as for osm2pgsql)
9292 -j|--jobs=NUM Number of parallel jobs (default 1)
93- --middle-schema=SCHEMA Database schema for middle tables
93+ --middle-schema=SCHEMA Database schema for middle tables (default set with --schema)
94+ --schema=SCHEMA Default database schema (default: 'public')
9495
9596Help/Version Options:
9697 -h|--help Print this help text and stop
@@ -127,6 +128,7 @@ static std::array<option, 20> const long_options = {
127128 {" style" , required_argument, nullptr , ' S' },
128129 {" log-sql" , no_argument, nullptr , 201 },
129130 {" middle-schema" , required_argument, nullptr , 202 },
131+ {" schema" , required_argument, nullptr , 203 },
130132 {nullptr , 0 , nullptr , 0 }}};
131133
132134struct tile_extent
@@ -178,9 +180,10 @@ static tile_extent get_extent_from_db(pg_conn_t const &db_connection,
178180}
179181
180182static tile_extent get_extent_from_db (pg_conn_t const &db_connection,
183+ std::string const &default_schema,
181184 params_t const ¶ms, uint32_t zoom)
182185{
183- auto const schema = params.get_string (" schema" , " public " );
186+ auto const schema = params.get_string (" schema" , default_schema );
184187 std::string table;
185188 if (params.has (" src_table" )) {
186189 table = params.get_string (" src_table" );
@@ -267,8 +270,9 @@ void run_tile_gen(std::string const &conninfo, gen_base_t *master_generalizer,
267270class genproc_t
268271{
269272public:
270- genproc_t (std::string const &filename, std::string conninfo, bool append,
271- bool updatable, uint32_t jobs);
273+ genproc_t (std::string const &filename, std::string conninfo,
274+ std::string dbschema, bool append, bool updatable,
275+ uint32_t jobs);
272276
273277 int app_define_table ()
274278 {
@@ -281,12 +285,13 @@ class genproc_t
281285#endif
282286
283287 return setup_flex_table (m_lua_state.get (), &m_tables, &m_expire_outputs,
284- true , m_append);
288+ m_dbschema, true , m_append);
285289 }
286290
287291 int app_define_expire_output ()
288292 {
289- return setup_flex_expire_output (m_lua_state.get (), &m_expire_outputs);
293+ return setup_flex_expire_output (m_lua_state.get (), m_dbschema,
294+ &m_expire_outputs);
290295 }
291296
292297 int app_run_gen ()
@@ -308,6 +313,10 @@ class genproc_t
308313
309314 auto params = parse_params ();
310315
316+ if (!params.has (" schema" )) {
317+ params.set (" schema" , m_dbschema);
318+ }
319+
311320 write_to_debug_log (params, " Params (config):" );
312321
313322 log_debug (" Connecting to database..." );
@@ -440,7 +449,8 @@ class genproc_t
440449 log_debug (" Truncating table '{}'..." , table);
441450 db_connection.exec (" TRUNCATE {}" , table);
442451 } else {
443- auto const extent = get_extent_from_db (db_connection, params, zoom);
452+ auto const extent =
453+ get_extent_from_db (db_connection, m_dbschema, params, zoom);
444454
445455 if (extent.valid ) {
446456 auto const num_tiles = (extent.xmax - extent.xmin + 1 ) *
@@ -493,6 +503,7 @@ class genproc_t
493503 std::vector<expire_output_t > m_expire_outputs;
494504
495505 std::string m_conninfo;
506+ std::string m_dbschema;
496507 std::size_t m_gen_run = 0 ;
497508 uint32_t m_jobs;
498509 bool m_append;
@@ -505,9 +516,10 @@ TRAMPOLINE(app_run_gen, run_gen)
505516TRAMPOLINE(app_run_sql, run_sql)
506517
507518genproc_t::genproc_t(std::string const &filename, std::string conninfo,
508- bool append, bool updatable, uint32_t jobs)
509- : m_conninfo(std::move(conninfo)), m_jobs(jobs), m_append(append),
510- m_updatable(updatable)
519+ std::string dbschema, bool append, bool updatable,
520+ uint32_t jobs)
521+ : m_conninfo(std::move(conninfo)), m_dbschema(std::move(dbschema)),
522+ m_jobs(jobs), m_append(append), m_updatable(updatable)
511523{
512524 setup_lua_environment (lua_state (), filename, append);
513525
@@ -587,7 +599,8 @@ int main(int argc, char *argv[])
587599{
588600 try {
589601 database_options_t database_options;
590- std::string schema{" public" };
602+ std::string dbschema{" public" };
603+ std::string middle_dbschema{};
591604 std::string log_level;
592605 std::string style;
593606 uint32_t jobs = 1 ;
@@ -641,12 +654,20 @@ int main(int argc, char *argv[])
641654 get_logger ().enable_sql ();
642655 break ;
643656 case 202 : // --middle-schema
644- schema = optarg;
645- if (schema.empty ()) {
657+ middle_dbschema = optarg;
658+ if (middle_dbschema.empty ()) {
659+ log_error (" Schema must not be empty" );
660+ return 2 ;
661+ }
662+ check_identifier (middle_dbschema, " --middle-schema" );
663+ break ;
664+ case 203 : // --schema
665+ dbschema = optarg;
666+ if (dbschema.empty ()) {
646667 log_error (" Schema must not be empty" );
647668 return 2 ;
648669 }
649- check_identifier (schema , " --middle -schema" );
670+ check_identifier (dbschema , " --schema" );
650671 break ;
651672 default :
652673 log_error (" Unknown argument" );
@@ -674,6 +695,10 @@ int main(int argc, char *argv[])
674695 return 2 ;
675696 }
676697
698+ if (middle_dbschema.empty ()) {
699+ middle_dbschema = dbschema;
700+ }
701+
677702 util::timer_t timer_overall;
678703
679704 log_info (" osm2pgsql-gen version {}" , get_osm2pgsql_version ());
@@ -704,7 +729,7 @@ int main(int argc, char *argv[])
704729 init_database_capabilities (db_connection);
705730 }
706731
707- properties_t properties{conninfo, schema };
732+ properties_t properties{conninfo, middle_dbschema };
708733 properties.load ();
709734
710735 if (style.empty ()) {
@@ -716,7 +741,7 @@ int main(int argc, char *argv[])
716741 }
717742
718743 bool const updatable = properties.get_bool (" updatable" , false );
719- genproc_t gen{style, conninfo, append, updatable, jobs};
744+ genproc_t gen{style, conninfo, dbschema, append, updatable, jobs};
720745 gen.run ();
721746
722747 osmium::MemoryUsage const mem;
0 commit comments