!&}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None=>?@AHVX Lgroundhog-postgresqlAvoid orphan instances.groundhog-postgresqlTable name and a list of field names and according delete statements assume that this function is called only for ephemeral fieldsgroundhog-postgresqlgudt_name, character_maximum_length, numeric_precision, numeric_scale, datetime_precision, interval_typegroundhog-postgresqlIPut explicit type for expression. It is useful for values which are defaulted to a wrong type. For example, a literal Int from a 64bit machine can be defaulted to a 32bit int by Postgresql. Also a value entered as an external string (geometry, arrays and other complex types have this representation) may need an explicit type.groundhog-postgresqlCasts expression to a type. castType value "INT" results in  value::INT. groundhog-postgresql=Distinct only on certain fields or expressions. For example, select $ CondEmpty   (lower EmailField, IpField).groundhog-postgresqlxconnection string in keyword/value format like "host=localhost port=5432 dbname=mydb". For more details and options see Phttp://www.postgresql.org/docs/9.4/static/libpq-connect.html#LIBPQ-PARAMKEYWORDSgroundhog-postgresqlnumber of connections to opengroundhog-postgresqlconnection stringgroundhog-postgresqlconnection stringgroundhog-postgresqlnumber of connections to openm      !"#$%&'()*+,-./0123456789:;<  None =>?HV+ groundhog-postgresqlRepresents PostgreSQL arrays!groundhog-postgresqlVConcatenates array elements using supplied delimiter. array_to_string(ARRAY[1, 2, 3], ~^~ ) = 1~^~2~^~3"groundhog-postgresqlLSplits string into array elements using supplied delimiter. string_to_array('xx~^~yy~^~zz', ~^~) = {xx,yy,zz}%groundhog-postgresql(Contains. ARRAY[1,4,3] @> ARRAY[3,1] = t&groundhog-postgresql3Is contained by. ARRAY[2,7] <@ ARRAY[1,7,4,2,6] = t'groundhog-postgresqlAOverlap (have elements in common). ARRAY[1,4,3] && ARRAY[2,1] = t !"#$%&' !"#$%&'None>@AHVT;groundhog-postgresql\It is not fully implemented in PostgreSQL yet. It is kept just to match all geometric types.?groundhog-postgresql Translation 9box '((0,0),(1,1))' + point '(2.0,0)' = box '(3,1),(2,0)'@groundhog-postgresql Translation ;box '((0,0),(1,1))' - point '(2.0,0)' = box '(-1,1),(-2,0)'Agroundhog-postgresqlScaling/rotation 9box '((0,0),(1,1))' * point '(2.0,0)' = box '(2,2),(0,0)'Bgroundhog-postgresqlScaling/rotation 9box '((0,0),(2,2))' / point '(2.0,0)' = box '(1,1),(0,0)'Cgroundhog-postgresqlPoint or box of intersection :lseg '((1,-1),(-1,1))' # '((1,1),(-1,-1))' = point '(0,0)' ?box '((1,-1),(-1,1))' # '((1,1),(-1,-1))' = box '(1,1),(-1,-1)'Dgroundhog-postgresql0Closest point to first operand on second operand 5point '(0,0)' ## lseg '((2,0),(0,2))' = point '(1,1)'Egroundhog-postgresqlDistance between circle '((0,0),1)'  - circle '((5,0),1)' = 3Fgroundhog-postgresql Overlaps? 1box '((0,0),(1,1))' && box '((0,0),(2,2))' = trueGgroundhog-postgresqlIs strictly left of? /circle '((0,0),1)' << circle '((5,0),1)' = trueHgroundhog-postgresqlIs strictly right of? /circle '((5,0),1)' >> circle '((0,0),1)' = trueIgroundhog-postgresqlODoes not extend to the right of? box '((0,0),(1,1))' &< box '((0,0),(2,2))' = tJgroundhog-postgresqlDoes not extend to the left of? 1box '((0,0),(3,3))' &> box '((0,0),(2,2))' = trueKgroundhog-postgresqlIs strictly below? 2box '((0,0),(3,3))' <<| box '((3,4),(5,5))' = trueLgroundhog-postgresqlIs strictly above? +box '((3,4),(5,5))' |>> box '((0,0),(3,3))'Mgroundhog-postgresqlDoes not extend above? 2box '((0,0),(1,1))' &<| box '((0,0),(2,2))' = trueNgroundhog-postgresqlDoes not extend below? 2box '((0,0),(3,3))' |&> box '((0,0),(2,2))' = trueOgroundhog-postgresqlIs below (allows touching)? /circle '((0,0),1)' <^ circle '((0,5),1)' = truePgroundhog-postgresqlIs above (allows touching)? /circle '((0,5),1)' >^ circle '((0,0),1)' = trueQgroundhog-postgresql Intersects? 5lseg '((-1,0),(1,0))' ?# box '((-2,-2),(2,2))' = trueRgroundhog-postgresqlAre horizontally aligned? %point '(1,0)' ?- point '(0,0)' = trueSgroundhog-postgresqlAre vertically aligned? %point '(0,1)' ?| point '(0,0)' = trueTgroundhog-postgresqlIs perpendicular? 4lseg '((0,0),(0,1))' ?-| lseg '((0,0),(1,0))' = trueUgroundhog-postgresql Are parallel? 6lseg '((-1,0),(1,0))' ?|| lseg '((-1,2),(1,2))' = trueVgroundhog-postgresql Contains? *circle '((0,0),2)' @> point '(1,1)' = trueWgroundhog-postgresqlContained in or on? *point '(1,1)' <@ circle '((0,0),2)' = trueXgroundhog-postgresqlSame as? 9polygon '((0,0),(1,1))' ~= polygon '((1,1),(0,0))' = true)0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX)=>;<9:784562301?@ABCDEFGHIJKLMNOPQRSTUVWX?6@6A7B7None&'>}groundhog-postgresql'Get value for key (NULL if not present) 'a=>x, b=>y'::hstore -> a == xgroundhog-postgresql/Get values for keys array (NULL if not present) $'a=>x, b=>y, c=>z'::hstore == ARRAY[c,a ] {"z","x"}groundhog-postgresqlConcatenate hstores L'a=>b, c=>d'::hstore || 'c=>x, d=>q'::hstore == "a"=>"b", "c"=>"x", "d"=>"q"groundhog-postgresql7Does hstore contain key? Same as postgresql operator ?. 'a=>1' ::hstore ? a == Truegroundhog-postgresql+Does hstore contain non-NULL value for key? defined( 'a=>NULL',a) == fgroundhog-postgresql'Does hstore contain all specified keys? 'a=>1,b=>2'::hstore ?& ARRAY[a,b ] == Truegroundhog-postgresql.Does hstore contain any of the specified keys? 'a=>1,b=>2'::hstore ?| ARRAY[b,c ] == Truegroundhog-postgresql Does left operand contain right?'a=>b, b=>1, c=>NULL'::hstore > 'b=>1' == True@groundhog-postgresql#Is left operand contained in right?'a=>c' ::hstore < 'a=>b, b=>1, c=>NULL' == False@groundhog-postgresqlDelete key from left operand 'a=>1, b=>2, c=>3'::hstore - b::text == "a"=>"1", "c"=>"3"groundhog-postgresqlDelete keys from left operand #'a=>1, b=>2, c=>3'::hstore - ARRAY[a,b ] == "c"=>"3"groundhog-postgresql'Delete matching pairs from left operand G'a=>1, b=>2, c=>3'::hstore - 'a=>4, b=>2'::hstore == "a"=>"1", "c"=>"3"groundhog-postgresqlSConvert hstore to array of alternating keys and values. Same as prefix operator %%. )hstore_to_array('a=>1,b=>2') == {a,1,b,2}groundhog-postgresqlNConvert hstore to two-dimensional key/value array. Same as prefix operator %#. .hstore_to_matrix('a=>1,b=>2') == {{a,1},{b,2}}groundhog-postgresqlGet hstore's keys as an array akeys('a=>1,b=>2') == {a,b}groundhog-postgresqlGet hstore's values as an array avals('a=>1,b=>2') == {1,2}groundhog-postgresqlGet hstore as a json value hstore_to_json('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4') == {"a key": "1", "b": "t", "c": null, "d": "12345", "e": "012345", "f": "1.234", "g": "2.345e+4"}groundhog-postgresqlwGet hstore as a json value, but attempting to distinguish numerical and Boolean values so they are unquoted in the JSON hstore_to_json_loose('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4') == {"a key": 1, "b": true, "c": null, "d": 12345, "e": "012345", "f": 1.234, "g": 2.345e+4}groundhog-postgresqlExtract a subset of an hstore &slice('a=>1,b=>2,c=>3'::hstore, ARRAY[b,c,x]) =="b"=>"2", "c"=>"3"=      !"#$%&'()*+,-./012345566789::;;<<==>?@ABCDEFGHIJKLMNOPQRST*+UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~R*+      !"#$%&'()*+,-./0123456789:;0groundhog-postgresql-0.11-2HxCAc2cOWpD89qCkpooG1Database.Groundhog.Postgresql#Database.Groundhog.Postgresql.Array&Database.Groundhog.Postgresql.Geometry$Database.Groundhog.Postgresql.HStore'groundhog-0.11.0-KVGqnMuCk2EKHO3kgdpyPWDatabase.Groundhog.Core runDbConn PostgresqlwithPostgresqlPoolwithPostgresqlConncreatePostgresqlPool showSqlType explicitTypecastType distinctOn!$fExtractConnectionPoolPostgresql'$fExtractConnectionPostgresqlPostgresql $fTryConnectionManagerPostgresql$fConnectionManagerPostgresql$fSavepointPostgresql$fSchemaAnalyzerPostgresql$fPersistBackendConnPostgresql$fFloatingSqlDbPostgresql$fSqlDbPostgresql$fDbDescriptorPostgresql $fToFieldPArray!!:prependappendarrayCat arrayDims arrayNDims arrayLower arrayUpper arrayLength arrayToString stringToArrayanyall@><@overlaps$fFromJSONArray $fToJSONArray$fPrimitivePersistFieldArray $fArrayElema$fArrayElemArray$fPersistFieldArray $fEqArray $fShowArrayCirclePolygonPath ClosedPathOpenPathBoxLsegLinePoint+.-.*./.###<->&&<<>>&<&><<||>>&<||&><^>^?#?-?|?-|?||~=$fPersistFieldPoint$fPrimitivePersistFieldPoint$fPersistFieldLine$fPrimitivePersistFieldLine$fPersistFieldLseg$fPrimitivePersistFieldLseg$fPersistFieldBox$fPrimitivePersistFieldBox$fPersistFieldPath$fPrimitivePersistFieldPath$fPersistFieldPolygon$fPrimitivePersistFieldPolygon$fPersistFieldCircle$fPrimitivePersistFieldCircle$fBoxLineLsegLseg$fBoxLineLsegLine$fBoxLineLsegBox$fBoxCirclePolygonPolygon$fBoxCirclePolygonCircle$fBoxCirclePolygonBox$fBoxCirclePathPointPoint$fBoxCirclePathPointPath$fBoxCirclePathPointCircle$fBoxCirclePathPointBox$fBoxCirclePointPolygonPolygon$fBoxCirclePointPolygonPoint$fBoxCirclePointPolygonCircle$fBoxCirclePointPolygonBox$fBoxPointPoint $fBoxPointBox$fLineLsegLseg$fLineLsegLine$fPlusPointPoint$fPlusPathPath$fPlusPathPoint$fPlusCirclePoint$fPlusBoxPoint$fDistancePolygonPolygon$fDistancePointLseg$fDistancePointBox$fDistancePointLine$fDistancePointCircle$fDistancePointPoint$fDistancePointPath$fDistancePathPath$fDistanceLsegBox$fDistanceLsegLseg$fDistanceLsegLine$fDistanceLineBox$fDistanceLineLine$fDistanceCirclePolygon$fDistanceCircleCircle$fDistanceBoxBox$fContainsPolygonPoint$fContainsPolygonPolygon$fContainsPathPoint$fContainsCirclePoint$fContainsCircleCircle$fContainsBoxPoint$fContainsBoxBox$fContainedPolygonPolygon$fContainedPointCircle$fContainedPointPolygon$fContainedPointPath$fContainedPointLine$fContainedPointBox$fContainedPointLseg$fContainedLsegLine$fContainedLsegBox$fContainedCircleCircle$fContainedBoxBox$fClosestPointLseg$fClosestPointBox$fClosestPointLine$fClosestLsegLseg$fClosestLsegLine$fClosestLsegBox$fClosestLineLseg$fClosestLineBox$fIntersectsPathPath$fIntersectsLsegLseg$fIntersectsLsegLine$fIntersectsLsegBox$fIntersectsLineBox$fIntersectsLineLine$fIntersectsBoxBox $fEqPoint $fShowPoint$fEqLine $fShowLine$fEqLseg $fShowLseg$fEqBox $fShowBox$fEqPath $fShowPath $fEqPolygon $fShowPolygon $fEqCircle $fShowCircleHStore->. lookupArr hstoreConcatexistdefined?& deleteKey deleteKeys differencehstore_to_arrayhstore_to_matrixakeysavalshstore_to_jsonhstore_to_json_looseslice$fPrimitivePersistFieldHStore$fPersistFieldHStore $fEqHStore $fOrdHStore $fShowHStorePmigTriggerOnUpdate readSqlTypebase GHC.Floatatan2(Database.Groundhog.Generic.Sql.Functionscase_degreesradianscotupperlowernotLikelikenotIn_in_Database.Groundhog.Generic.SqlSqlDbsignum'quotRem'equalsOperatornotEqualsOperatorDatabase.Groundhog.ExpressiontoArithliftExprisFieldNothing>=.>.<=.<./=.==.||.&&.=.Database.Groundhog.GenericrunMigrationUnsafe runMigrationprintMigrationexecuteMigrationUnsafeexecuteMigrationcreateMigrationorderByoffsetBylimitTo~>KeyAutoKey DefaultKeyUniqueBackendSpecific UniqueMarkerCondAndNotOrCompareCondRaw CondEmptyOrderAscDescDatabase.Groundhog.InstancesTuple5_0SelectorTuple5_1SelectorTuple5_2SelectorTuple5_3SelectorTuple5_4SelectorTuple4_0SelectorTuple4_1SelectorTuple4_2SelectorTuple4_3SelectorTuple3_0SelectorTuple3_1SelectorTuple3_2SelectorTuple2_0SelectorTuple2_1SelectorSelector AutoKeyFieldPersistBackendConncountgetdeletedeleteByinsertinsertBymigrateupdateinsert_ insertByAllreplace replaceByselect selectAllgetBy deleteAllcountAllproject executeRawqueryRaw insertListgetList extractUniquePersistBackendConn getConnection