PostGIS 3.0.6dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ _PG_init()

void _PG_init ( void  )

Definition at line 421 of file rtpostgis.c.

421 {
422
423 bool boot_postgis_enable_outdb_rasters = false;
424 MemoryContext old_context;
425
426 /*
427 * Change to context for memory allocation calls like palloc() in the
428 * extension initialization routine
429 */
430 old_context = MemoryContextSwitchTo(TopMemoryContext);
431
432 /*
433 use POSTGIS_GDAL_ENABLED_DRIVERS to set the bootValue
434 of GUC postgis.gdal_enabled_drivers
435 */
436 env_postgis_gdal_enabled_drivers = getenv("POSTGIS_GDAL_ENABLED_DRIVERS");
438 size_t sz = sizeof(char) * (strlen(GDAL_DISABLE_ALL) + 1);
441 }
442 else {
445 );
446 }
448 4,
449 "boot_postgis_gdal_enabled_drivers = %s",
451 );
452
453 /*
454 use POSTGIS_ENABLE_OUTDB_RASTERS to set the bootValue
455 of GUC postgis.enable_outdb_rasters
456 */
457 env_postgis_enable_outdb_rasters = getenv("POSTGIS_ENABLE_OUTDB_RASTERS");
460
461 /* out of memory */
462 if (env == NULL) {
463 elog(ERROR, "_PG_init: Cannot process environmental variable: POSTGIS_ENABLE_OUTDB_RASTERS");
464 return;
465 }
466
467 if (strcmp(env, "1") == 0)
468 boot_postgis_enable_outdb_rasters = true;
469
471 pfree(env);
472 }
474 4,
475 "boot_postgis_enable_outdb_rasters = %s",
476 boot_postgis_enable_outdb_rasters ? "TRUE" : "FALSE"
477 );
478
479 /* Install liblwgeom handlers */
480 pg_install_lwgeom_handlers();
481
482 /* Install rtcore handlers */
484
485 /* Define custom GUC variables. */
486 if ( postgis_guc_find_option("postgis.gdal_datapath") )
487 {
488 /* In this narrow case the previously installed GUC is tied to the callback in */
489 /* the previously loaded library. Probably this is happening during an */
490 /* upgrade, so the old library is where the callback ties to. */
491 elog(WARNING, "'%s' is already set and cannot be changed until you reconnect", "postgis.gdal_datapath");
492 }
493 else
494 {
495 DefineCustomStringVariable(
496 "postgis.gdal_datapath", /* name */
497 "Path to GDAL data files.", /* short_desc */
498 "Physical path to directory containing GDAL data files (sets the GDAL_DATA config option).", /* long_desc */
499 &gdal_datapath, /* valueAddr */
500 NULL, /* bootValue */
501 PGC_SUSET, /* GucContext context */
502 0, /* int flags */
503 NULL, /* GucStringCheckHook check_hook */
504 rtpg_assignHookGDALDataPath, /* GucStringAssignHook assign_hook */
505 NULL /* GucShowHook show_hook */
506 );
507 }
508
509 if ( postgis_guc_find_option("postgis.gdal_enabled_drivers") )
510 {
511 /* In this narrow case the previously installed GUC is tied to the callback in */
512 /* the previously loaded library. Probably this is happening during an */
513 /* upgrade, so the old library is where the callback ties to. */
514 elog(WARNING, "'%s' is already set and cannot be changed until you reconnect", "postgis.gdal_enabled_drivers");
515 }
516 else
517 {
518 DefineCustomStringVariable(
519 "postgis.gdal_enabled_drivers", /* name */
520 "Enabled GDAL drivers.", /* short_desc */
521 "List of enabled GDAL drivers by short name. To enable/disable all drivers, use 'ENABLE_ALL' or 'DISABLE_ALL' (sets the GDAL_SKIP config option).", /* long_desc */
522 &gdal_enabled_drivers, /* valueAddr */
523 boot_postgis_gdal_enabled_drivers, /* bootValue */
524 PGC_SUSET, /* GucContext context */
525 0, /* int flags */
526 NULL, /* GucStringCheckHook check_hook */
527 rtpg_assignHookGDALEnabledDrivers, /* GucStringAssignHook assign_hook */
528 NULL /* GucShowHook show_hook */
529 );
530 }
531
532 if ( postgis_guc_find_option("postgis.enable_outdb_rasters") )
533 {
534 /* In this narrow case the previously installed GUC is tied to the callback in */
535 /* the previously loaded library. Probably this is happening during an */
536 /* upgrade, so the old library is where the callback ties to. */
537 elog(WARNING, "'%s' is already set and cannot be changed until you reconnect", "postgis.enable_outdb_rasters");
538 }
539 else
540 {
541 DefineCustomBoolVariable(
542 "postgis.enable_outdb_rasters", /* name */
543 "Enable Out-DB raster bands", /* short_desc */
544 "If true, rasters can access data located outside the database", /* long_desc */
545 &enable_outdb_rasters, /* valueAddr */
546 boot_postgis_enable_outdb_rasters, /* bootValue */
547 PGC_SUSET, /* GucContext context */
548 0, /* int flags */
549 NULL, /* GucStringCheckHook check_hook */
550 rtpg_assignHookEnableOutDBRasters, /* GucBoolAssignHook assign_hook */
551 NULL /* GucShowHook show_hook */
552 );
553 }
554
555 /* Revert back to old context */
556 MemoryContextSwitchTo(old_context);
557}
#define GDAL_DISABLE_ALL
Definition librtcore.h:2049
void rt_set_handlers(rt_allocator allocator, rt_reallocator reallocator, rt_deallocator deallocator, rt_message_handler error_handler, rt_message_handler info_handler, rt_message_handler warning_handler)
This function is called when the PostgreSQL backend is taking care of the memory and we want to use p...
Definition rt_context.c:151
char * rtpg_trim(const char *input)
static void * rt_pg_alloc(size_t size)
Definition rtpostgis.c:166
static char * env_postgis_enable_outdb_rasters
Definition rtpostgis.c:257
static void rtpg_assignHookGDALDataPath(const char *newpath, void *extra)
Definition rtpostgis.c:261
static void rt_pg_error(const char *fmt, va_list ap) __attribute__((format(printf
Definition rtpostgis.c:204
bool enable_outdb_rasters
Definition rt_band.c:417
static void rt_pg_notice(const char *fmt, va_list ap) __attribute__((format(printf
Definition rtpostgis.c:218
static char * env_postgis_gdal_enabled_drivers
Definition rtpostgis.c:255
static char * boot_postgis_gdal_enabled_drivers
Definition rtpostgis.c:256
static void rtpg_assignHookGDALEnabledDrivers(const char *enabled_drivers, void *extra)
Definition rtpostgis.c:278
static void rt_pg_free(void *ptr)
Definition rtpostgis.c:194
char * gdal_enabled_drivers
Definition rt_util.c:377
static void rtpg_assignHookEnableOutDBRasters(bool enable, void *extra)
Definition rtpostgis.c:415
static void rt_pg_debug(const char *fmt, va_list ap) __attribute__((format(printf
Definition rtpostgis.c:232
static char * gdal_datapath
Definition rtpostgis.c:247
static void * rt_pg_realloc(void *mem, size_t size)
Definition rtpostgis.c:178
#define POSTGIS_RT_DEBUGF(level, msg,...)
Definition rtpostgis.h:65

References boot_postgis_gdal_enabled_drivers, enable_outdb_rasters, env_postgis_enable_outdb_rasters, env_postgis_gdal_enabled_drivers, gdal_datapath, GDAL_DISABLE_ALL, gdal_enabled_drivers, POSTGIS_RT_DEBUGF, rt_pg_alloc(), rt_pg_debug(), rt_pg_error(), rt_pg_free(), rt_pg_notice(), rt_pg_realloc(), rt_set_handlers(), rtpg_assignHookEnableOutDBRasters(), rtpg_assignHookGDALDataPath(), rtpg_assignHookGDALEnabledDrivers(), and rtpg_trim().

Here is the call graph for this function: