úÎ!ūæĩĪ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢNone "#%047;<X_6O tmp-postgresN is the low level configuration necessary for creating a database starting postgres@ and creating a database. There is no validation done on the E. It is recommend that one use the higher level functions such as . which will generate plans that are valid. ^s are used internally but are exposed if the higher level plan generation is not sufficent. tmp-postgresThe output of calling %.  tmp-postgresConnection options  tmp-postgrespostgres process handle  tmp-postgresPostgresPlan is used be % to start the postgres& and then attempt to connect to it. tmp-postgresThe process config for postgres tmp-postgres(Connection options. Used to verify that postgres is ready. tmp-postgresc contains the configuration necessary for starting a process. It is essentially a stripped down Ī. tmp-postgresEnvironment variables tmp-postgresCommand line arguements tmp-postgresThe Ĩ for standard input tmp-postgresThe Ĩ for standard output tmp-postgresThe Ĩ for standard error tmp-postgresA way to log internal s tmp-postgres’A list of failures that can occur when starting. This is not and exhaustive list but covers the errors that the system catches for the user. tmp-postgrespostgresZ failed before a connection succeeded. Most likely this is due to invalid configuration tmp-postgresinitdbV failed. This can be from invalid configuration or using a non-empty data directory tmp-postgrescreatedbW failed. This can be from invalid configuration or the database might already exist. tmp-postgresThe ! was missing info and a complete  could not be created. tmp-postgresInternal events for debugging  tmp-postgrespostgres< is not ready until we are able to successfully connect.  ^ attempts to connect over and over again and returns after the first successful connection.! tmp-postgres-Start a process interactively and return the Ķ" tmp-postgres7Start a process and block until it finishes return the §.# tmp-postgresForce all connections to the database to close. Can be useful in some testing situations. Called during shutdown as well.$ tmp-postgres Stop the postgres> process after attempting to terminate all the connections.% tmp-postgres Start the postgresq process and block until a successful connection occurs. A separate thread we continously check to see if the postgres process has& tmp-postgresA simple helper to throw §s when they are Ļ.' tmp-postgres' optionally calls initdb, optionally calls createdb and unconditionally calls postgresQ. Additionally it writes a "postgresql.conf" and does not return until the postgres process is ready. See % for more details.( tmp-postgres Stop the postgres process. See $ for more details.! tmp-postgres Process name tmp-postgresProcess config" tmp-postgres Process name tmp-postgresProcess config)  !"#$%&'() !"  #$%&'(None "#%047;<X_ƒX10 tmp-postgres7The high level options for overriding default behavior.2 tmp-postgresEExtend or replace any of the configuration used to create a final 3 tmp-postgresOverride the default J by setting this.4 tmp-postgresROverride the default temporary data directory by passing in 'Permanent DIRECTORY'5 tmp-postgres_A monoid for using an existing port (via 'Just PORT_NUMBER') or requesting a free port (via a Đ)6 tmp-postgres6[ holds a description of the temporary folders (if there are any) and includes the final  that can be used with ' . See n# for an example of how to create a 6.8 tmp-postgresFinal . See ' for information on s9 tmp-postgresThe JL. Used to track if a temporary directory was made as the socket location.: tmp-postgresDThe data directory. Used to track if a temporary directory was used.; tmp-postgresThe monoidial version of B. Used to combine overrides with defaults when creating a plan.C tmp-postgresPartialPostgresPlanE tmp-postgresMonoid for the postgres ProcessConfig.F tmp-postgresMonoid for the postgres client connection options.G tmp-postgresThe monoidial version of J=. Used to combine overrides with defaults when creating a J8. The monoid instance treats 'PUnixSocket mempty' as Š and combines theH tmp-postgres1The monoid for combining IP address configurationI tmp-postgres2The monoid for combining UNIX socket configurationJ tmp-postgres4A type for configuring the listening address of the postgres process. postgresĪ can listen on several types of sockets simulatanously but we don't support that behavior. One can either listen on a IP based socket or a UNIX domain socket.K tmp-postgresIP socket type. The ŦG is either an IP address or a host that will resolve to an IP address.L tmp-postgresUNIX domain socketM tmp-postgresThe monoidial version of P=. Used to combine overrides with defaults when creating a P . The monoid instance treats O as Š and takes the last N value.N tmp-postgres.A permanent file that should not be generated.O tmp-postgres)A temporary file that needs to generated.P tmp-postgresGA type to track whether a file is temporary and needs to be cleaned up.S tmp-postgresThe monoidial version of =. Used to combine overrides with defaults when creating a .U tmp-postgres<A monoid for combine environment variables or replacing themV tmp-postgres=A monoid for combine command line arguments or replacing themW tmp-postgres,A monoid for configuring the standard input ĨX tmp-postgres-A monoid for configuring the standard output ĨY tmp-postgres,A monoid for configuring the standard error ĨZ tmp-postgresZ5 is helper for overriding configuration values. It's Ž' instance let's one either combine the a of two Zs using ­ via the \O constructor or one can wholly replace the value with the last value using the [ constructor. Roughly u x <> Replace y = Replace y Replace x <> Mappend y = Replace (x <> y) Mappend x <> Mappend y = Mappend (x <> y) ] tmp-postgresGet the value of a Z regardless if it is a [ or a \.^ tmp-postgresThe ^ sets the handles to Ū, Ŋ and °D and inherits the environment variables from the calling process._ tmp-postgres4A helper to add more info to all the error messages.` tmp-postgres$A helper for creating an error if a ą is not defined.a tmp-postgresTurn a S into a %. Fails if any values are missing.b tmp-postgresGet the file path of a P, regardless if it is a Q or R type.c tmp-postgresEither create aR directory or do nothing to a Q one.d tmp-postgres1Either create a temporary directory or do nothinge tmp-postgresEither remove a R directory or do nothing to a Q one.f tmp-postgres9Create the extra config lines for listening based on the Jg tmp-postgresFMany processes require a "host" flag. We can generate one from the J.h tmp-postgresFGet the IP address, host name or UNIX domain socket directory as a Ŧi tmp-postgresTurn a G to a J . If the H is Đ% default to "127.0.0.1". If the is a ID optionally create a temporary directory if configured to do so.j tmp-postgres?Cleanup the UNIX socket temporary directory if one was created.k tmp-postgresTurn a C into a  %. Fails if any values are missing.l tmp-postgresTurn a ; into a ". Fails if any values are missing.m tmp-postgres Create a ;9 that sets the command line options of all processes (initdb, postgres and createdb ) using an tmp-postgres*Create all the temporary resources from a 0. This also combines the ; from m with the  extraConfig passed in.o tmp-postgres(Free the temporary resources created by nm tmp-postgresport tmp-postgres7Whether to listen on a IP address or UNIX domain socket tmp-postgresThe postgres data directoryn tmp-postgres extraConfig to ē after the default config@01543267:98;<BA@?>=CDFEGIHJLKMONPRQSTYXWVUZ\[]^_`abcdefghijklmno@Z\[]STYXWVU^_`aPRQbMONcdeJLKfghGIHijCDFEk;<BA@?>=l67:98015432mnoNone "#%047;<X_ąL“ tmp-postgres,Handle for holding temporary resources, the postgres< process handle and postgres connection information. The “ also includes the final  that was used to start initdb, createdb and postgres.• tmp-postgres"Temporary resources and the final .– tmp-postgrespostgres+ process handle and the connection options.— tmp-postgres Convert a “= to a connection string. Alternatively one can access the ģ using /postgresProcessClientConfig . dbPostgresProcess˜ tmp-postgresDefault postgres options™ tmp-postgresĸThe default configuration. This will create a database called "test" and create a temporary directory for the data and a temporary directory for a unix socket on a random port. If you would like to customize this behavior you can start with the ™% and overwrite fields or combine the 0 with another config using ­ (ē>). If you would like complete control over the behavior of initdb, postgres and createdb$ you can call the internal function '3 directly although this should not be necessary.š tmp-postgresš makes a default config with ^D. It is used by default but can be overriden by the extra config.› tmp-postgres2Create temporary resources and use them to make a 0. The generated 0 is combined with the passed in extraConfiguration to create a 2 that is used to create a database. The output “‰ includes references to the temporary resources for cleanup and the final plan that was used to generate the database and processesœ tmp-postgres.Default start behavior. Equivalent to calling › with the ™ tmp-postgres Stop the postgresO process and cleanup any temporary directories that might have been created.ž tmp-postgresOnly stop the postgresu process but leave any temporary resources. Useful for testing backup strategies when used in conjunction with Ÿ or Ģ.Ÿ tmp-postgres Restart the postgres using the  from the “ (e.g. resourcesPlan . dbResources)  tmp-postgres>Reload the configuration file without shutting down. Calls pg_reload_conf().Ą tmp-postgres1Exception safe default database create. Takes an action" continuation which is given a “" it can use to connect to (see — or  q). All of the database resources are automatically cleaned up on completion even in the face of exceptions.Ē tmp-postgres2Default expectation safe interface. Equivalent to Ą the ™Ģ tmp-postgresException safe version of Ÿ› tmp-postgresextraConfiguration that is ēed to the generated 0. The extra config is ēed second, e.g. %generatedConfig <> extraConfigurationĄ tmp-postgresextraConfiguration. Combined with the generated 0. See › for more info tmp-postgresaction continuationĒ tmp-postgresaction continuation.“”–•—˜™š›œžŸ ĄĒĢ“”–•—˜™š›œžŸ ĄĒĢNone "#%047;<X_ējS 012345;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\“”•–—™›œžŸ ĄĒĢS“”•–ĒĄœ›™ŸžĢ —012345Z[\PQRMNOJKLGHISTUVWXYCDEF  ;<=>?@ABī      !"#$%&'()*+,-./012344567899:;<=>?@ABCCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘‘’“”•–—˜™š›œžŸ ĄĒĢĪĨ ĄĶ̧Ļ̧ĐĢŠŦĢŽ­ĢŽŪĢŽŊĢŽ°ĢąēĢąģĢąīĢĩķĢŽ·ļđšŧ+tmp-postgres-1.0.0.1-DqV0xipN2BgJPZRGQTXaRx$Database.Postgres.Temp.Internal.Core'Database.Postgres.Temp.Internal.PartialDatabase.Postgres.Temp.InternalDatabase.Postgres.TempstartDatabase.Postgres.Temp.Partial PartialPlanPlan planLogger planInitDb planCreateDb planPostgres planConfigplanDataDirectoryPostgresProcesspostgresProcessClientConfigpostgresProcessHandle PostgresPlanpostgresPlanProcessConfigpostgresPlanClientConfig ProcessConfigprocessConfigEnvVarsprocessConfigCmdLineprocessConfigStdInprocessConfigStdOutprocessConfigStdErrLogger StartErrorStartPostgresFailed InitDbFailedCreateDbFailedCompletePlanFailedEvent StartPostgres WaitForDB waitForDB startProcessexecuteProcessterminateConnectionsstopPostgresProcessstartPostgresProcessthrowIfNotSuccessinitPlan shutdownPlan$fExceptionStartError $fShowEvent $fEqEvent $fOrdEvent$fShowStartError$fEqStartError$fOrdStartErrorConfig configPlan configSocket configDataDir configPort Resources resourcesPlanresourcesSocketresourcesDataDirpartialPlanLoggerpartialPlanInitDbpartialPlanCreateDbpartialPlanPostgrespartialPlanConfigpartialPlanDataDirectoryPartialPostgresPlan partialPostgresPlanProcessConfigpartialPostgresPlanClientConfigPartialSocketClass PIpSocket PUnixSocket SocketClassIpSocket UnixSocketPartialDirectoryType PPermanent PTemporary DirectoryType Permanent TemporaryPartialProcessConfigpartialProcessConfigEnvVarspartialProcessConfigCmdLinepartialProcessConfigStdInpartialProcessConfigStdOutpartialProcessConfigStdErrLastoidReplaceMappend getLastoidstandardProcessConfigaddErrorContext getOptioncompleteProcessConfig toFilePathinitDirectoryTypermDirIgnoreErrorsshutdownDirectoryTypesocketClassToConfigsocketClassToHostFlagsocketClassToHostinitPartialSocketClassshutdownSocketConfigcompletePostgresPlan completePlantoPlan initConfigshutdownResources$fMonoidLastoid$fSemigroupLastoid$fMonoidPartialDirectoryType$fSemigroupPartialDirectoryType$fMonoidPartialSocketClass$fSemigroupPartialSocketClass $fShowLastoid $fEqLastoid$fFunctorLastoid$fGenericPartialProcessConfig$fSemigroupPartialProcessConfig$fMonoidPartialProcessConfig$fShowDirectoryType$fEqDirectoryType$fOrdDirectoryType$fShowPartialDirectoryType$fEqPartialDirectoryType$fOrdPartialDirectoryType$fShowSocketClass$fEqSocketClass$fOrdSocketClass$fGenericSocketClass$fShowPartialSocketClass$fEqPartialSocketClass$fOrdPartialSocketClass$fGenericPartialSocketClass$fGenericPartialPostgresPlan$fSemigroupPartialPostgresPlan$fMonoidPartialPostgresPlan$fGenericPartialPlan$fSemigroupPartialPlan$fMonoidPartialPlan$fGenericConfig$fSemigroupConfig$fMonoidConfigDB dbResourcesdbPostgresProcesstoConnectionStringdefaultPostgresConfig defaultConfigstandardConfig startWithstop stopPostgresrestart reloadConfigwithPlanwith withRestartprocess-1.6.3.0System.Process.Common CreateProcessbaseGHC.IO.Handle.TypesHandle ProcessHandleGHC.IO.ExceptionExitCode ExitFailure GHC.MaybeNothingGHC.BasememptyString Semigroup<>GHC.IO.Handle.FDstdinstdoutstderr Data.MonoidLastmappend/postgres-options-0.1.0.1-2ZKcSl3UUyxKvpG7uKvgdi"Database.PostgreSQL.Simple.OptionsOptions