h$I{:      !"#$%&'()*+,-./0123456789:;<=>?@ABCNone  #$%&3 persistent-postgresql?Hooks for configuring the Persistent/its connection to Postgres persistent-postgresql'Function to get the version of PostgresThe default implementation queries the server with "show server_version". Some variants of Postgres, such as Redshift, don't support showing the version. It's recommended you return a hardcoded version in those cases. persistent-postgresql0Action to perform after a connection is created.Typical uses of this are modifying the connection (e.g. to set the schema) or logging a connection being created.(The default implementation does nothing.persistent-postgresqlInformation required to connect to a PostgreSQL database using  persistent's generic facilities. These values are the same that are given to .persistent-postgresqlThe connection string.persistent-postgresql.How many stripes to divide the pool into. See  Data.Pool for details. @since 2.11.0.0 persistent-postgresqlHow long connections can remain idle before being disposed of, in seconds. @since 2.11.0.0 persistent-postgresql;How many connections should be held in the connection pool.  persistent-postgresql1Represent Postgres interval using NominalDiffTimepersistent-postgresqlA libpq connection string. A simple example of connection string would be ?"host=localhost port=5432 user=test dbname=test password=test"*. Please read libpq's documentation at  https://www.postgresql.org/docs/current/static/libpq-connect.html1 for more details on how to create such strings.persistent-postgresqlCreate a PostgreSQL connection pool and run the given action. The pool is properly released after the action finishes using it. Note that you should not use the given D outside the action since it may already have been released. The provided action should use E and *not* F because the former brackets the database action with transaction begin/commit.persistent-postgresqlSame as withPostgresPool, but takes a callback for obtaining the server version (to work around an Amazon Redshift bug). persistent-postgresqlSame as , but can be configured with  and .persistent-postgresqlCreate a PostgreSQL connection pool. Note that it's your responsibility to properly close the connection pool when unneeded. Use $ for an automatic resource control.persistent-postgresqlSame as , but additionally takes a callback function for some connection-specific tweaking to be performed after connection creation. This could be used, for example, to change the schema. For more information, see: https://groups.google.com/d/msg/yesodweb/qUXrEN_swEo/O0pFwqwQIdcJpersistent-postgresqlSame as other similarly-named functions in this module, but takes callbacks for obtaining the server version (to work around an Amazon Redshift bug) and connection-specific tweaking (to change the schema). persistent-postgresqlSame as , but can be configured with  and .persistent-postgresqlSame as , but instead of opening a pool of connections, only one connection is opened. The provided action should use E and *not* F because the former brackets the database action with transaction begin/commit.persistent-postgresqlSame as , but takes a callback for obtaining the server version (to work around an Amazon Redshift bug).persistent-postgresql Generate a G from a H. persistent-postgresql Generate a G from a H9, but takes a callback for obtaining the server version.persistent-postgresqlGet the SQL string for the table that a PeristEntity represents. Useful for raw SQL queries.persistent-postgresqlGet the SQL string for the field that an EntityField represents. Useful for raw SQL queries. persistent-postgresqlDefault settings for . See the individual fields of  for the default values.persistent-postgresqlMock a migration even when the database is not present. This function performs the same functionality of I< with the difference that an actual database is not needed.persistent-postgresql!Enable a Postgres extension. See  ;https://www.postgresql.org/docs/current/static/contrib.html for a list.persistent-postgresql"Connection string to the database.persistent-postgresql3Number of connections to be kept open in the pool.persistent-postgresql5Action to be executed that uses the connection pool.persistent-postgresql,Action to perform to get the server version.persistent-postgresql"Connection string to the database.persistent-postgresql3Number of connections to be kept open in the pool.persistent-postgresql5Action to be executed that uses the connection pool.persistent-postgresql(Configuration for connecting to Postgrespersistent-postgresqlRecord of callback functionspersistent-postgresql5Action to be executed that uses the connection pool.persistent-postgresql"Connection string to the database.persistent-postgresql3Number of connections to be kept open in the pool.persistent-postgresql.Action to perform after connection is created.persistent-postgresql"Connection string to the database.persistent-postgresql2Number of connections to be kept open in the pool.persistent-postgresql,Action to perform to get the server version.persistent-postgresql.Action to perform after connection is created.persistent-postgresql"Connection string to the database.persistent-postgresql2Number of connections to be kept open in the pool.persistent-postgresql(Configuration for connecting to Postgrespersistent-postgresqlRecord of callback functionsJKLMNOPQRSTUVWXYIZ[\]^_`abcdefghijklmnoEpqrstuvwxyz{|}~DG  None :f<persistent-postgresqlThis operator checks inclusion of the JSON value on the right hand side in the JSON value on the left hand side.Objects"An empty Object matches any object {} @> {} == True {"a":1,"b":false} @> {} == True 'Any key-value will be matched top-level {"a":1,"b":{"c":true"}} @> {"a":1} == True {"a":1,"b":{"c":true"}} @> {"b":1} == False {"a":1,"b":{"c":true"}} @> {"b":{}} == True {"a":1,"b":{"c":true"}} @> {"c":true} == False {"a":1,"b":{"c":true"}} @> {"b":{c":true}} == True Arrays An empty Array matches any array [] @> [] == True [1,2,"hi",false,null] @> [] == True Any array has to be a sub-set. Any object or array will also be compared as being a subset of. [1,2,"hi",false,null] @> [1] == True [1,2,"hi",false,null] @> [null,"hi"] == True [1,2,"hi",false,null] @> ["hi",true] == False [1,2,"hi",false,null] @> ["hi",2,null,false,1] == True [1,2,"hi",false,null] @> [1,2,"hi",false,null,{}] == False Arrays and objects inside arrays match the same way they'd be matched as being on their own. [1,"hi",[false,3],{"a":[null]}] @> [{}] == True [1,"hi",[false,3],{"a":[null]}] @> [{"a":[]}] == True [1,"hi",[false,3],{"a":[null]}] @> [{"b":[null]}] == False [1,"hi",[false,3],{"a":[null]}] @> [[]] == True [1,"hi",[false,3],{"a":[null]}] @> [[3]] == True [1,"hi",[false,3],{"a":[null]}] @> [[true,3]] == False "A regular value has to be a member [1,2,"hi",false,null] @> 1 == True [1,2,"hi",false,null] @> 5 == False [1,2,"hi",false,null] @> "hi" == True [1,2,"hi",false,null] @> false == True [1,2,"hi",false,null] @> "2" == False (An object will never match with an array [1,2,"hi",[false,3],{"a":null}] @> {} == False [1,2,"hi",[false,3],{"a":null}] @> {"a":null} == False  Other valuesFor any other JSON values the (\@>.)2 operator functions like an equivalence operator. "hello" @> "hello" == True "hello" @> "Hello" == False "hello" @> "h" == False "hello" @> {"hello":1} == False "hello" @> ["hello"] == False 5 @> 5 == True 5 @> 5.00 == True 5 @> 1 == False 5 @> 7 == False 12345 @> 1234 == False 12345 @> 2345 == False 12345 @> "12345" == False 12345 @> [1,2,3,4,5] == False true @> true == True true @> false == False false @> true == False true @> "true" == False null @> null == True null @> 23 == False null @> "null" == False null @> {} == False =persistent-postgresqlSame as < except the inclusion check is reversed. i.e. is the JSON value on the left hand side included in the JSON value of the right hand side.> persistent-postgresqlThis operator takes a column and a string to find a top-level key/field in an object. column ?. stringN.B. This operator might have some unexpected interactions with non-object values. Please reference the examples.Objects {"a":null} ? "a" == True {"test":false,"a":500} ? "a" == True {"b":{"a":[]}} ? "a" == False {} ? "a" == False {} ? "{}" == False {} ? "" == False {"":9001} ? "" == True ArraysThis operator will match an array if the string to be matched is an element of that array, but nothing else. ["a"] ? "a" == True [["a"]] ? "a" == False [9,false,"1",null] ? "1" == True [] ? "[]" == False [{"a":true}] ? "a" == False  Other valuesThis operator functions like an equivalence operator on strings only. Any other value does not match. "a" ? "a" == True "1" ? "1" == True "ab" ? "a" == False 1 ? "1" == False null ? "null" == False true ? "true" == False 1.5 ? "1.5" == False ? persistent-postgresqlThis operator takes a column and a list of strings to test whether ANY of the elements of the list are top level fields in an object. column ?|. listN.B. An empty list will never match anything . Also, this 5operator might have some unexpected interactions with 1non-object values. Please reference the examples.Objects {"a":null} ?| ["a","b","c"] == True {"test":false,"a":500} ?| ["a","b","c"] == True {} ?| ["a","{}"] == False {"b":{"a":[]}} ?| ["a","c"] == False {"b":{"a":[]},"test":null} ?| [] == False Arrays%This operator will match an array if any of the elements of the list are matching string elements of the array. ["a"] ?| ["a","b","c"] == True [["a"]] ?| ["a","b","c"] == False [9,false,"1",null] ?| ["a","false"] == False [] ?| ["a","b","c"] == False [] ?| [] == False [{"a":true}] ?| ["a","b","c"] == False [null,4,"b",[]] ?| ["a","b","c"] == True  Other valuesThis operator functions much like an equivalence operator on strings only. If a string matches with any element of the given list, the comparison matches. No other values match. "a" ?| ["a","b","c"] == True "1" ?| ["a","b","1"] == True "ab" ?| ["a","b","c"] == False 1 ?| ["a","1"] == False null ?| ["a","null"] == False true ?| ["a","true"] == False "a" ?| [] == False @ persistent-postgresqlThis operator takes a column and a list of strings to test whether ALL of the elements of the list are top level fields in an object. column ?&. listN.B. An empty list will match anything . Also, this 5operator might have some unexpected interactions with 1non-object values. Please reference the examples.Objects {"a":null} ?& ["a"] == True {"a":null} ?& ["a","a"] == True {"test":false,"a":500} ?& ["a"] == True {"test":false,"a":500} ?& ["a","b"] == False {} ?& ["{}"] == False {"b":{"a":[]}} ?& ["a"] == False {"b":{"a":[]},"c":false} ?& ["a","c"] == False {"a":1,"b":2,"c":3,"d":4} ?& ["b","d"] == True {} ?& [] == True {"b":{"a":[]},"test":null} ?& [] == True Arrays%This operator will match an array if all of the elements of the list are matching string elements of the array. ["a"] ?& ["a"] == True ["a"] ?& ["a","a"] == True [["a"]] ?& ["a"] == False ["a","b","c"] ?& ["a","b","d"] == False [9,"false","1",null] ?& ["1","false"] == True [] ?& ["a","b"] == False [{"a":true}] ?& ["a"] == False ["a","b","c","d"] ?& ["b","c","d"] == True [null,4,{"test":false}] ?& [] == True [] ?& [] == True  Other valuesThis operator functions much like an equivalence operator on strings only. If a string matches with all elements of the given list, the comparison matches. "a" ?& ["a"] == True "1" ?& ["a","1"] == False "b" ?& ["b","b"] == True "ab" ?& ["a","b"] == False 1 ?& ["1"] == False null ?& ["null"] == False true ?& ["true"] == False 31337 ?& [] == True true ?& [] == True null ?& [] == True <=>?@<=>?@<4=4>4?4@4       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHFIJKLMFNOPQRFSTFUVFUWFUXFUYFSZFS[FS\FS]FS^FS_FS`FSaFSbFScFSdFSeFSfFSgFhiFhjFhkFlmFlnFloFlpFlqFlrFlsFItFIuFIvFIwFIxFIyFIzFI{FI|FI}FI~FIFIFIFIFIFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNOFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFNFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFlFlFlFlFlFlFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5persistent-postgresql-2.12.0.0-Duvp4sYD5Rg2Aa96holWrM Database.Persist.Postgresql.JSONDatabase.Persist.Postgresql$aeson-1.5.6.0-Etu9qoyqcph4yv4479G5rqData.Aeson.Types.InternalValuePostgresConfHookspgConfHooksGetServerVersionpgConfHooksAfterCreate PostgresConf pgConnStr pgPoolStripespgPoolIdleTimeout pgPoolSize PgInterval getPgIntervalConnectionStringwithPostgresqlPoolwithPostgresqlPoolWithVersionwithPostgresqlPoolWithConfcreatePostgresqlPoolcreatePostgresqlPoolModified'createPostgresqlPoolModifiedWithVersioncreatePostgresqlPoolWithConfwithPostgresqlConnwithPostgresqlConnWithVersionopenSimpleConnopenSimpleConnWithVersion tableName fieldNamedefaultPostgresConfHooks mockMigrationmigrateEnableExtension%$fExceptionPostgresServerVersionError $fShowPostgresServerVersionError$fPersistFieldSqlPgInterval$fPersistFieldPgInterval$fFromFieldPgInterval$fToFieldPgInterval$fToFieldUnknown$fFromFieldUnknown$fToFieldUnknownLiteral$fFromFieldUnknownLiteral $fToFieldP$fPersistConfigPostgresConf$fFromJSONPostgresConf$fShowPostgresConf$fReadPostgresConf$fDataPostgresConf $fShowAlterDB$fShowAlterTable$fShowAlterColumn$fEqUnknownLiteral$fShowUnknownLiteral$fReadUnknownLiteral$fOrdUnknownLiteral $fEqUnknown $fShowUnknown $fReadUnknown $fOrdUnknown$fEqPgInterval$fShowPgInterval@>.<@.?.?|.?&.$fPersistFieldSqlValue$fPersistFieldValue$fPersistFieldPostgresArray*persistent-2.12.0.1-AyO2oxwdWyN7UfeRm3Gr5IDatabase.Persist.Sql.TypesConnectionPoolDatabase.Persist.Sql.Run runSqlConntransformers-0.5.6.2Control.Monad.Trans.Reader runReaderT#Database.Persist.Sql.Types.Internal SqlBackend.postgresql-simple-0.6.4-3MmGtLTNoTf2Fv6Xq9TnxI#Database.PostgreSQL.Simple.Internal ConnectionDatabase.Persist.Sql.MigrationprintMigrationDatabase.Persist.SqltransactionUndoWithIsolationtransactionUndotransactionSaveWithIsolationtransactionSave addMigrations addMigration reportErrors reportErrormigraterunMigrationUnsafeQuietrunMigrationUnsaferunMigrationSilentrunMigrationQuiet runMigration getMigration showMigrationparseMigration'parseMigration(Database.Persist.Sql.Orphan.PersistQuerydecorateSQLWithLimitOffsetupdateWhereCountdeleteWhereCount(Database.Persist.Sql.Orphan.PersistStore fieldDBName getFieldName tableDBName getTableName fromSqlKeytoSqlKey withRawQueryclose' withSqlConncreateSqlPoolWithConfig createSqlPoolwithSqlPoolWithConfig withSqlPoolliftSqlPersistMPoolrunSqlPersistMPoolrunSqlPersistMrunSqlConnWithIsolationacquireSqlConnWithIsolationacquireSqlConnrunSqlPoolWithHooksrunSqlPoolNoTransactionrunSqlPoolWithIsolation runSqlPoolDatabase.Persist.Sql.RawrawSql getStmtConnrawExecuteCount rawExecute rawQueryResrawQueryDatabase.Persist.Sql.ClassunPrefixRawSqlrawSqlProcessRow rawSqlColsrawSqlColCountReasonEntityWithPrefixunEntityWithPrefixPersistFieldSqlsqlTypeDatabase.PersistlimitOffsetOrder toJsonText mapToJSON listToJSON||./<-.<-.>=.>.<=.<.!=.==./=.*=.-=.+=.=.Database.Persist.Sql.Internal mkColumnsdefaultAttributeemptyBackendSpecificOverridesBackendSpecificOverridesbackendSpecificForeignKeyNamedefaultConnectionPoolConfigColumn cReferencecMaxLencDefaultConstraintName cGeneratedcDefaultcSqlTypecNamecNullColumnReferencecrFieldCascade crTableNamecrConstraintNamePersistentSqlExceptionStatementAlreadyFinalizedCouldn'tGetSQLConnection SqlPersistT SqlPersistMSqlCautiousMigration MigrationConnectionPoolConfigconnectionPoolConfigSizeconnectionPoolConfigStripesconnectionPoolConfigIdleTimeoutSingleunSinglePersistUnsafeMigrationException readToUnknown readToWritewriteToUnknownLogFuncInsertSqlResult ISRManyKeys ISRSingle ISRInsertGet Statement stmtQuery stmtExecute stmtFinalize stmtResetIsolationLevel SerializableRepeatableReadReadUncommitted ReadCommittedconnRepsertManySql connMaxParams connLogFuncconnLimitOffset connRDBMS connNoLimitconnEscapeRawNameconnEscapeTableNameconnEscapeFieldName connRollback connCommit connBeginconnMigrateSql connClose connStmtMapconnPutManySql connUpsertSqlconnInsertManySql connPrepare connInsertSqlSqlReadBackendunSqlReadBackendSqlWriteBackendunSqlWriteBackendSqlBackendCanReadSqlBackendCanWriteSqlReadT SqlWriteT IsSqlBackendDatabase.Persist.Class PersistUnique PersistQuery PersistStore$Database.Persist.Class.DeleteCascadedeleteCascadeWhere DeleteCascade deleteCascade#Database.Persist.Class.PersistQueryselectKeysList selectList selectKeys selectSourcePersistQueryReadexists selectKeysRes selectFirstcountselectSourceResPersistQueryWrite updateWhere deleteWhere$Database.Persist.Class.PersistUniquecheckUniqueUpdateable checkUnique replaceUnique getByValue onlyUniqueinsertUniqueEntityinsertByPersistUniqueReadgetByPersistUniqueWriteputManyupsertByupsertdeleteBy insertUniqueOnlyOneUniqueKey onlyUniquePNoUniqueKeysErrorMultipleUniqueKeysErrorAtLeastOneUniqueKeyrequireUniquesP#Database.Persist.Class.PersistStore insertRecord getEntity insertEntity belongsToJust belongsTo getJustEntitygetJust liftPersistwithCompatibleBackendwithBaseBackend BaseBackendHasPersistBackendpersistBackendIsPersistBackendBackendCompatibleprojectBackendPersistRecordBackend ToBackendKey toBackendKeyfromBackendKey BackendKey SqlBackendKeySqlWriteBackendKeySqlReadBackendKeyunSqlBackendKeyunSqlWriteBackendKeyunSqlReadBackendKey PersistCorePersistStoreReadgetgetManyPersistStoreWrite updateGetreplace repsertManyrepsert insertKeyinsertEntityMany insertMany_ insertManyinsert_updatedeleteinsert$Database.Persist.Class.PersistEntityfromPersistValueJSONtoPersistValueJSONentityIdFromJSONentityIdToJSONkeyValueEntityFromJSONkeyValueEntityToJSON entityValuesUnique EntityFieldKeyPersistEntityBackend PersistEntitykeyFromRecordM fieldLenspersistUniqueToValuespersistUniqueToFieldNamespersistUniqueKeysfromPersistValuestoPersistFieldspersistFieldDef entityDefpersistIdField keyFromValues keyToValuesBackendSpecificUpdateUpdate BackendUpdate updateUpdate updateField updateValue SelectOptLimitToOffsetByAscDescBackendSpecificFilterFilter BackendFilterFilterOr FilterAnd filterFilter filterField filterValue FilterValue UnsafeValue FilterValuesEntity entityKey entityVal SymbolToField symbolToField#Database.Persist.Class.PersistField getPersistMap PersistFieldtoPersistValuefromPersistValueOverflowNaturalunOverflowNaturalSomePersistFieldDatabase.Persist.Types.BasefromPersistValueTextrenderCascadeActionrenderFieldCascade noCascadetoEmbedEntityDefisFieldNotGeneratedparseFieldAttrskeyAndEntityFieldsentityKeyFields entityPrimaryentitiesPrimary CheckmarkActiveInactive IsNullableNullable NotNullable WhyNullable ByMaybeAttrByNullableAttr DatabaseName escapeWith EntityNameDBunEntityNameDB EntityNameHSunEntityNameHS EntityDefentityComments entitySum entityExtra entityDerivesentityForeigns entityUniques entityFields entityAttrsentityId entityHaskellentityDB ExtraLineAttr FieldAttrFieldAttrOtherFieldAttrMaxlenFieldAttrSqltypeFieldAttrDefaultFieldAttrConstraintFieldAttrReferenceFieldAttrNoreferenceFieldAttrSafeToRemoveFieldAttrMigrationOnlyFieldAttrMaybeFieldAttrNullable FieldTypeFTList FTTypeConFTApp FieldNameDB unFieldNameDB FieldNameHS unFieldNameHSFieldDeffieldGenerated fieldComments fieldCascadefieldReference fieldStrict fieldAttrs fieldSqlType fieldType fieldHaskellfieldDB ReferenceDef SelfReference CompositeRefEmbedRef NoReference ForeignRefEmbedEntityDefembeddedHaskellembeddedFields EmbedFieldDef emFieldCycle emFieldDB emFieldEmbedConstraintNameDBunConstraintNameDBConstraintNameHSunConstraintNameHS UniqueDef uniqueAttrs uniqueFields uniqueHaskell uniqueDBName CompositeDefcompositeFieldscompositeAttrsForeignFieldDef ForeignDefforeignToPrimaryforeignNullable foreignAttrs foreignFieldsforeignFieldCascadeforeignConstraintNameDBNameforeignConstraintNameHaskellforeignRefTableHaskellforeignRefTableDBName FieldCascade fcOnUpdate fcOnDelete CascadeAction SetDefaultSetNullCascadeRestrictPersistExceptionPersistMongoDBUnsupportedPersistMongoDBErrorPersistForeignConstraintUnmetPersistInvalidField PersistErrorPersistMarshalError PersistValuePersistDbSpecificPersistLiteralEscapedPersistLiteralPersistLiteral_ PersistArrayPersistObjectId PersistMap PersistList PersistNullPersistUTCTimePersistTimeOfDay PersistDay PersistBoolPersistRational PersistDouble PersistInt64 PersistTextPersistByteString LiteralType DbSpecificEscaped UnescapedSqlTypeSqlOtherSqlBlob SqlDayTimeSqlTimeSqlDaySqlBool SqlNumericSqlRealSqlInt64 SqlStringSqlInt32 PersistFilterNotInLeGeLtGtNeEqInUpdateException KeyNotFound UpsertErrorOnlyUniqueException PersistUpdateDivideMultiplySubtractAssignAdd$Database.Persist.Class.PersistConfigPersistConfigPoolPersistConfigBackend PersistConfigrunPoolcreatePoolConfigapplyEnv loadConfig