!&׊)      !"#$%&'(None %2HVXUHpersistent-postgresql@Information required to connect to a PostgreSQL database using  persistentE's generic facilities. These values are the same that are given to .persistent-postgresqlThe connection string.persistent-postgresql;How many connections should be held in the connection pool.)persistent-postgresqlAvoid orphan instances.*persistent-postgresql}PostgresServerVersionError exception. This is thrown when persistent is unable to find the version of the postgreSQL server.persistent-postgresqlA libpqE 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  Ahttps://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 +^ outside the action since it may already have been released. The provided action should use , and *not* -P because the former brackets the database action with transaction begin/commit.persistent-postgresqlSame as withPostgresPoola, but takes a callback for obtaining the server version (to work around an Amazon Redshift bug).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: Ahttps://groups.google.com/d/msg/yesodweb/qUXrEN_swEo/O0pFwqwQIdcJ persistent-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 p, but instead of opening a pool of connections, only one connection is opened. The provided action should use , and *not* -P because the former brackets the database action with transaction begin/commit. persistent-postgresqlSame as  a, but takes a callback for obtaining the server version (to work around an Amazon Redshift bug)..persistent-postgresql"Gets the PostgreSQL server version/persistent-postgresqlChoose upsert sql generation function based on postgresql version. PostgreSQL version >= 9.5 supports native upsert feature, so depending upon that we have to choose how the sql query is generated. upsertFunction :: Double -> Maybe (EntityDef -> Text -> Text) persistent-postgresql Generate a 0 from a 1. persistent-postgresql Generate a 0 from a 19, but takes a callback for obtaining the server version.2persistent-postgresqleCreate the backend given a logging function, server version, mutable statement cell, and connection.3persistent-postgresqlISQL for inserting multiple rows at once and returning their primary keys.4persistent-postgresqlHReturns all of the columns in the given table currently in the database.5persistent-postgresqlMCheck if a column name is listed as the "safe to remove" in the entity list.6persistent-postgresqlPIntelligent comparison of SQL types, to account for SqlInt32 vs SqlOther integer7persistent-postgresql?Get the references to be added to a table for the given column.persistent-postgresql]Get the SQL string for the table that a PeristEntity represents. Useful for raw SQL queries.persistent-postgresql]Get the SQL string for the field that an EntityField represents. Useful for raw SQL queries.persistent-postgresqljMock a migration even when the database is not present. This function performs the same functionality of 8< 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"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.9persistent-postgresql table name:;<=>?@ABCDEFGHI8JKLMNOPQRSTUVWXYZ[\]^,_`abcdefghijklmnopqrstuvwxyz{|}~+0      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    None!persistent-postgresqlrThis 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 H[] @> [] == 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. d[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 p[1,2,"hi",[false,3],{"a":null}] @> {} == False [1,2,"hi",[false,3],{"a":null}] @> {"a":null} == False  Other valuesWFor any other JSON values the `(@>.)` operator functions like an equivalence operator. b"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-postgresqlVThis operator takes a column and a string to find a top-level key/field in an object. column ?. stringrN.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 ArraysmThis 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 valuesfThis 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 anyH of the elements of the list are matching string elements of the array. 9["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 valueseThis operator functions much like an equivalence operator on strings only. If a string matches with anyK 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 allH 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 persistent-postgresql6Haskell type, should match Haskell name exactly, e.g. Int64persistent-postgresqlODatabase type(s), should appear different from Haskell name, e.g. "integer" or INT, not Int.persistent-postgresqlIncorrect valuepersistent-postgresql Error messagepersistent-postgresql6Haskell type, should match Haskell name exactly, e.g. Int64persistent-postgresqlReceived valuepersistent-postgresqlAdditional errorpersistent-postgresql Error message!"#$%!"#$%!4"4#4$4%4      !"#$%&'()*+,-./01/2345678/9:;<=>?@ABC/DEF/GH/GI/GJ/GK/DL/DM/DN/DO/DP/DQ/DR/DS/DT/DU/DV/DW/DX/DY/Z[/Z\/Z]/^_/^`/^a/^b/^c/^d/^e/2f/2g/2h/2i/2j/2k/2l/2m/2n/2o/2p/qr/qs/qt/qu/qv/qw/xy/xz/x{/x|/x}/x~/////////////////////0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9:/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9/9///////////////////////////////////////////////// / / / / ////^/^/^/^/^/^////////// /!/"/#/$/%/&/'/(/)*/)+/),/)-/)./)//)0/)1/)2/)3/)4/)5/)6/)7/)8/)9/):/);/)</)=/)>/)?/)@/)A/)B/)B/)C/)D/)E/)F/)G/)H/)I/)J/)K/)L/)M/)M/)N/)O/)P/)Q/)R/)S/)T/)T/)U/)V/)W/)W/)X/)Y/Z[/Z\/Z]/Z^/Z_/Z_/`a/`b/`c/`d/`e/`f/`g/`h/`i/`j/`k/`l/`m/`n/`o/`o/`p/`q/`r/`s/`t/`u/`v/`w/`x/`y/`z/`{/`|/`|/`}/`~/`~/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`/`L/`/`/`/`/`/`/`/`/`/`/`/`A///////3persistent-postgresql-2.10.1-JzdMRNKEmKH28GPREhFULE Database.Persist.Postgresql.JSONDatabase.Persist.Postgresql$aeson-1.4.5.0-9WciqreC8Dh4Ox91K72izuData.Aeson.Types.InternalValue PostgresConf pgConnStr pgPoolSizeConnectionStringwithPostgresqlPoolwithPostgresqlPoolWithVersioncreatePostgresqlPoolcreatePostgresqlPoolModified'createPostgresqlPoolModifiedWithVersionwithPostgresqlConnwithPostgresqlConnWithVersionopenSimpleConnopenSimpleConnWithVersion tableName fieldName mockMigrationmigrateEnableExtension%$fExceptionPostgresServerVersionError $fShowPostgresServerVersionError$fToFieldUnknown$fFromFieldUnknown $fToFieldP$fPersistConfigPostgresConf$fFromJSONPostgresConf $fEqUnknown $fShowUnknown $fReadUnknown $fOrdUnknown$fShowPostgresConf$fReadPostgresConf$fDataPostgresConf@>.<@.?.?|.?&.$fPersistFieldSqlValue$fPersistFieldValue$fPersistFieldPostgresArrayPPostgresServerVersionError(persistent-2.10.4-46xgHsOpj143FNGNwCZRVZDatabase.Persist.Sql.TypesConnectionPoolDatabase.Persist.Sql.Run runSqlConntransformers-0.5.5.0Control.Monad.Trans.Reader runReaderTgetServerVersionupsertFunction#Database.Persist.Sql.Types.Internal SqlBackend.postgresql-simple-0.6.2-HrAesFeJ1Q88BOFdkhYIHC#Database.PostgreSQL.Simple.Internal Connection createBackendinsertManySql' getColumns safeToRemove sqlTypeEqgetAddReferenceDatabase.Persist.Sql.MigrationprintMigrationdoesTableExistDatabase.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' withSqlConn askLogFunc createSqlPool withSqlPoolliftSqlPersistMPoolrunSqlPersistMPoolrunSqlPersistMrunSqlConnWithIsolationrunSqlPoolWithIsolation runSqlPoolDatabase.Persist.Sql.RawrawSql getStmtConnrawExecuteCount rawExecute rawQueryResrawQueryDatabase.Persist.Sql.ClassRawSql rawSqlColsrawSqlColCountReasonrawSqlProcessRowPersistFieldSqlsqlTypeDatabase.PersistlimitOffsetOrder toJsonText mapToJSON listToJSON||./<-.<-.>=.>.<=.<.!=.==./=.*=.-=.+=.=.Database.Persist.Sql.Internal mkColumnsdefaultAttributeColumncNamecNullcSqlTypecDefaultcDefaultConstraintNamecMaxLen cReferencePersistentSqlExceptionStatementAlreadyFinalizedCouldn'tGetSQLConnection SqlPersistT SqlPersistMSqlCautiousMigration MigrationSingleunSingle readToUnknown readToWritewriteToUnknownLogFuncInsertSqlResult ISRSingle ISRInsertGet ISRManyKeys Statement stmtFinalize stmtReset stmtExecute stmtQueryIsolationLevelReadUncommitted ReadCommittedRepeatableRead Serializable connPrepare connInsertSqlconnInsertManySql connUpsertSqlconnPutManySql connStmtMap connCloseconnMigrateSql connBegin connCommit connRollbackconnEscapeName connNoLimit connRDBMSconnLimitOffset connLogFunc connMaxParamsconnRepsertManySqlSqlReadBackendunSqlReadBackendSqlWriteBackendunSqlWriteBackendSqlBackendCanReadSqlBackendCanWriteSqlReadT SqlWriteT IsSqlBackendDatabase.Persist.Class PersistUnique PersistQuery PersistStore$Database.Persist.Class.DeleteCascadedeleteCascadeWhere DeleteCascade deleteCascade#Database.Persist.Class.PersistQueryselectKeysList selectList selectKeys selectSourcePersistQueryReadcountselectSourceRes selectFirst selectKeysResPersistQueryWrite updateWhere deleteWhere$Database.Persist.Class.PersistUnique checkUnique replaceUnique getByValue onlyUniqueinsertUniqueEntityinsertByPersistUniqueReadgetByPersistUniqueWritedeleteBy insertUniqueupsertupsertByputManyOnlyOneUniqueKey onlyUniquePNoUniqueKeysErrorMultipleUniqueKeysErrorAtLeastOneUniqueKeyrequireUniquesP#Database.Persist.Class.PersistStore insertRecord getEntity insertEntity belongsToJust belongsTo getJustEntitygetJust liftPersistHasPersistBackend BaseBackendpersistBackendIsPersistBackendBackendCompatibleprojectBackendPersistRecordBackend ToBackendKey toBackendKeyfromBackendKeySqlWriteBackendKeySqlReadBackendKey SqlBackendKeyunSqlWriteBackendKeyunSqlReadBackendKeyunSqlBackendKey PersistCore BackendKeyPersistStoreReadgetgetManyPersistStoreWritedeleteinsertupdateinsert_ insertMany insertMany_insertEntityMany insertKeyrepsert repsertManyreplace updateGet$Database.Persist.Class.PersistEntityfromPersistValueJSONtoPersistValueJSONentityIdFromJSONentityIdToJSONkeyValueEntityFromJSONkeyValueEntityToJSON entityValues PersistEntityUniqueKeyPersistEntityBackend EntityField keyToValues keyFromValuespersistIdField entityDefpersistFieldDeftoPersistFieldsfromPersistValuespersistUniqueKeyspersistUniqueToFieldNamespersistUniqueToValues fieldLensBackendSpecificUpdateUpdate BackendUpdate updateField updateValue updateUpdate SelectOptAscDescOffsetByLimitToBackendSpecificFilterFilter FilterAndFilterOr BackendFilter filterField filterValue filterFilter FilterValue FilterValues UnsafeValueEntity entityKey entityVal#Database.Persist.Class.PersistField getPersistMap PersistFieldtoPersistValuefromPersistValueSomePersistFieldDatabase.Persist.Types.BasefromPersistValueTexttoEmbedEntityDefkeyAndEntityFieldsentityKeyFields entityPrimary CheckmarkActiveInactive IsNullableNullable NotNullable WhyNullable ByMaybeAttrByNullableAttr EntityDef entityHaskellentityDBentityId entityAttrs entityFields entityUniquesentityForeigns entityDerives entityExtra entitySumentityComments ExtraLine HaskellName unHaskellNameDBNameunDBNameAttr FieldType FTTypeConFTAppFTListFieldDef fieldHaskellfieldDB fieldType fieldSqlType fieldAttrs fieldStrictfieldReference fieldComments ReferenceDef NoReference ForeignRefEmbedRef CompositeRef SelfReferenceEmbedEntityDefembeddedHaskellembeddedFields EmbedFieldDef emFieldDB emFieldEmbed emFieldCycle UniqueDef uniqueHaskell uniqueDBName uniqueFields uniqueAttrs CompositeDefcompositeFieldscompositeAttrsForeignFieldDef ForeignDefforeignRefTableHaskellforeignRefTableDBNameforeignConstraintNameHaskellforeignConstraintNameDBName foreignFields foreignAttrsforeignNullablePersistException PersistErrorPersistMarshalErrorPersistInvalidFieldPersistForeignConstraintUnmetPersistMongoDBErrorPersistMongoDBUnsupported PersistValue PersistTextPersistByteString PersistInt64 PersistDoublePersistRational PersistBool PersistDayPersistTimeOfDayPersistUTCTime PersistNull PersistList PersistMapPersistObjectId PersistArrayPersistDbSpecificSqlType SqlStringSqlInt32SqlInt64SqlReal SqlNumericSqlBoolSqlDaySqlTime SqlDayTimeSqlBlobSqlOther PersistFilterEqNeGtLtGeLeInNotInUpdateException KeyNotFound UpsertErrorOnlyUniqueException PersistUpdateAssignAddSubtractMultiplyDivide$Database.Persist.Class.PersistConfig PersistConfigPersistConfigBackendPersistConfigPool loadConfigapplyEnvcreatePoolConfigrunPoolfromPersistValueErrorfromPersistValueParseError