BsE      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None:<=DR \It is not fully implemented in PostgreSQL yet. It is kept just to match all geometric types. Translation 9box '((0,0),(1,1))' + point '(2.0,0)' = box '(3,1),(2,0)' Translation ;box '((0,0),(1,1))' - point '(2.0,0)' = box '(-1,1),(-2,0)'Scaling/rotation 9box '((0,0),(1,1))' * point '(2.0,0)' = box '(2,2),(0,0)'Scaling/rotation 9box '((0,0),(2,2))' / point '(2.0,0)' = box '(1,1),(0,0)'Point 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)'0Closest point to first operand on second operand 5point '(0,0)' ## lseg '((2,0),(0,2))' = point '(1,1)'Distance between circle '((0,0),1)'  - circle '((5,0),1)' = 3 Overlaps? 1box '((0,0),(1,1))' && box '((0,0),(2,2))' = trueIs strictly left of? /circle '((0,0),1)' << circle '((5,0),1)' = trueIs strictly right of? /circle '((5,0),1)' >> circle '((0,0),1)' = trueODoes not extend to the right of? box '((0,0),(1,1))' &< box '((0,0),(2,2))' = tDoes not extend to the left of? 1box '((0,0),(3,3))' &> box '((0,0),(2,2))' = trueIs strictly below? 2box '((0,0),(3,3))' <<| box '((3,4),(5,5))' = trueIs strictly above? +box '((3,4),(5,5))' |>> box '((0,0),(3,3))'Does not extend above? 2box '((0,0),(1,1))' &<| box '((0,0),(2,2))' = trueDoes not extend below? 2box '((0,0),(3,3))' |&> box '((0,0),(2,2))' = true Is below (allows touching)? /circle '((0,0),1)' <^ circle '((0,5),1)' = true!Is above (allows touching)? /circle '((0,5),1)' >^ circle '((0,0),1)' = true" Intersects? 5lseg '((-1,0),(1,0))' ?# box '((-2,-2),(2,2))' = true#Are horizontally aligned? %point '(1,0)' ?- point '(0,0)' = true$Are vertically aligned? %point '(0,1)' ?| point '(0,0)' = true%Is perpendicular? 4lseg '((0,0),(0,1))' ?-| lseg '((0,0),(1,0))' = true& Are parallel? 6lseg '((-1,0),(1,0))' ?|| lseg '((-1,2),(1,2))' = true' Contains? *circle '((0,0),2)' @> point '(1,1)' = true(Contained in or on? *point '(1,1)' <@ circle '((0,0),2)' = true)Same as? 9polygon '((0,0),(1,1))' ~= polygon '((1,1),(0,0))' = true  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~)  !"#$%&'())   !"#$%&'()    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~6677None9:;<=DRTAvoid orphan instances.Table name and a list of field names and according delete statements assume that this function is called only for ephemeral fieldsgudt_name, character_maximum_length, numeric_precision, numeric_scale, datetime_precision, interval_typeKPut 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. Casts expression to a type. castType value "INT" results in  value::INT.=Distinct only on certain fields or expressions. For example, select $ CondEmpty  (lower EmailField, IpField).Bxconnection 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-PARAMKEYWORDSnumber of connections to openconnection stringconnection stringnumber of connections to open     n !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{| @     None 9:;DRRepresents PostgreSQL arraysVConcatenates array elements using supplied delimiter. array_to_string(ARRAY[1, 2, 3], ~^~ ) = 1~^~2~^~3LSplits string into array elements using supplied delimiter. string_to_array('xx~^~yy~^~zz', ~^~) = {xx,yy,zz}(Contains. ARRAY[1,4,3] @> ARRAY[3,1] = t3Is contained by. ARRAY[2,7] <@ ARRAY[1,7,4,2,6] = tAOverlap (have elements in common). ARRAY[1,4,3] && ARRAY[2,1] = t#}~!}~None%&:'Get value for key (NULL if not present) 'a=>x, b=>y'::hstore -> a == x/Get values for keys array (NULL if not present) $'a=>x, b=>y, c=>z'::hstore == ARRAY[c,a ] {"z","x"}Concatenate hstores L'a=>b, c=>d'::hstore || 'c=>x, d=>q'::hstore == "a"=>"b", "c"=>"x", "d"=>"q"7Does hstore contain key? Same as postgresql operator ?. 'a=>1' ::hstore ? a == True+Does hstore contain non-NULL value for key? defined( 'a=>NULL',a) == f'Does hstore contain all specified keys? 'a=>1,b=>2'::hstore ?& ARRAY[a,b ] == True.Does hstore contain any of the specified keys? 'a=>1,b=>2'::hstore ?| ARRAY[b,c ] == True Does left operand contain right?'a=>b, b=>1, c=>NULL'::hstore > 'b=>1' == True@#Is left operand contained in right?'a=>c' ::hstore < 'a=>b, b=>1, c=>NULL' == False@Delete key from left operand 'a=>1, b=>2, c=>3'::hstore - b::text == "a"=>"1", "c"=>"3"Delete keys from left operand #'a=>1, b=>2, c=>3'::hstore - ARRAY[a,b ] == "c"=>"3"'Delete matching pairs from left operand G'a=>1, b=>2, c=>3'::hstore - 'a=>4, b=>2'::hstore == "a"=>"1", "c"=>"3"SConvert hstore to array of alternating keys and values. Same as prefix operator %%. )hstore_to_array('a=>1,b=>2') == {a,1,b,2}NConvert hstore to two-dimensional key/value array. Same as prefix operator %#. .hstore_to_matrix('a=>1,b=>2') == {{a,1},{b,2}}Get hstore's keys as an array akeys('a=>1,b=>2') == {a,b}Get hstore's values as an array avals('a=>1,b=>2') == {1,2}Get 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"}wGet 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}Extract a subset of an hstore &slice('a=>1,b=>2,c=>3'::hstore, ARRAY[b,c,x]) =="b"=>"2", "c"=>"3"        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~()%()      !"#$%&%'%(%)%*%+%,%-%.%/%0%123242526272829:;<=>?@ABCDEFGHIJKLMNONPNQNRNSNTNUNVNWNXNYNZN[N\]^^_`abcdefghijklmnopqrstuvwxyz{|}~/groundhog-postgresql-0.8-2CuFoKifO3fBpjnBFgRcm8Database.Groundhog.Postgresql&Database.Groundhog.Postgresql.Geometry#Database.Groundhog.Postgresql.Array$Database.Groundhog.Postgresql.HStore$groundhog-0.8-9TxFCoDdl5yJ54OMckmxWjDatabase.Groundhog.Core runDbConnCirclePolygonPath ClosedPathOpenPathBoxLsegLinePoint+.-.*./.###<->&&<<>>&<&><<||>>&<||&><^>^?#?-?|?-|?||@><@~=$fIntersectsPathPath$fIntersectsLsegLseg$fIntersectsLsegLine$fIntersectsLsegBox$fIntersectsLineBox$fIntersectsLineLine$fIntersectsBoxBox$fClosestPointLseg$fClosestPointBox$fClosestPointLine$fClosestLsegLseg$fClosestLsegLine$fClosestLsegBox$fClosestLineLseg$fClosestLineBox$fContainedPolygonPolygon$fContainedPointCircle$fContainedPointPolygon$fContainedPointPath$fContainedPointLine$fContainedPointBox$fContainedPointLseg$fContainedLsegLine$fContainedLsegBox$fContainedCircleCircle$fContainedBoxBox$fContainsPolygonPoint$fContainsPolygonPolygon$fContainsPathPoint$fContainsCirclePoint$fContainsCircleCircle$fContainsBoxPoint$fContainsBoxBox$fDistancePolygonPolygon$fDistancePointLseg$fDistancePointBox$fDistancePointLine$fDistancePointCircle$fDistancePointPoint$fDistancePointPath$fDistancePathPath$fDistanceLsegBox$fDistanceLsegLseg$fDistanceLsegLine$fDistanceLineBox$fDistanceLineLine$fDistanceCirclePolygon$fDistanceCircleCircle$fDistanceBoxBox$fPlusPointPoint$fPlusPathPath$fPlusPathPoint$fPlusCirclePoint$fPlusBoxPoint$fLineLsegLseg$fLineLsegLine$fBoxPointPoint $fBoxPointBox$fBoxCirclePointPolygonPolygon$fBoxCirclePointPolygonPoint$fBoxCirclePointPolygonCircle$fBoxCirclePointPolygonBox$fBoxCirclePathPointPoint$fBoxCirclePathPointPath$fBoxCirclePathPointCircle$fBoxCirclePathPointBox$fBoxCirclePolygonPolygon$fBoxCirclePolygonCircle$fBoxCirclePolygonBox$fBoxLineLsegLseg$fBoxLineLsegLine$fBoxLineLsegBox$fPersistFieldCircle$fPrimitivePersistFieldCircle$fPersistFieldPolygon$fPrimitivePersistFieldPolygon$fPersistFieldPath$fPrimitivePersistFieldPath$fPersistFieldBox$fPrimitivePersistFieldBox$fPersistFieldLseg$fPrimitivePersistFieldLseg$fPersistFieldLine$fPrimitivePersistFieldLine$fPersistFieldPoint$fPrimitivePersistFieldPoint $fEqPoint $fShowPoint$fEqLine $fShowLine$fEqLseg $fShowLseg$fEqBox $fShowBox$fEqPath $fShowPath $fEqPolygon $fShowPolygon $fEqCircle $fShowCircle PostgresqlwithPostgresqlPoolwithPostgresqlConncreatePostgresqlPool showSqlType explicitTypecastType distinctOn $fToFieldP!$fExtractConnectionPoolPostgresql'$fExtractConnectionPostgresqlPostgresql$fConnectionManagerPostgresql$fSavepointPostgresql$fSchemaAnalyzerPostgresql$fPersistBackendConnPostgresql$fFloatingSqlDbPostgresql$fSqlDbPostgresql$fDbDescriptorPostgresqlArray!!:prependappendarrayCat arrayDims arrayNDims arrayLower arrayUpper arrayLength arrayToString stringToArrayanyalloverlaps$fPrimitivePersistFieldArray $fArrayElema$fArrayElemArray$fPersistFieldArray$fFromJSONArray $fToJSONArray $fEqArray $fShowArrayHStore->. lookupArr hstoreConcatexistdefined?& deleteKey deleteKeys differencehstore_to_arrayhstore_to_matrixakeysavalshstore_to_jsonhstore_to_json_looseslice$fPrimitivePersistFieldHStore$fPersistFieldHStore $fEqHStore $fOrdHStore $fShowHStore IntersectsClosest ContainedContainsDistancePlusLineLsegBoxPointBoxCirclePointPolygonBoxCirclePathPointBoxCirclePolygon BoxLineLseg parseHelperpairpointpointsshowPath showPointpsqlOperatorExprpsqlOperatorCondPmigTriggerOnUpdate readSqlTypeGetteropen'close'insert'insert_'insertIntoConstructorTable insertList'getList'getKey executeRaw' renderConfigescapeSdelim'toEntityPersistValues'migrate' migrationPack showColumnmigTriggerOnDelete analyzeTable' getColumnanalyzeTableReferences showAlterDbshowAlterTableshowAlterColumn compareUniqs compareRefs compareTypescompareDefaultsdefaultPriorityschemaPriorityreferencePriorityfunctionPrioritytriggerPriority mainTableIdescape getStatement queryRaw' convertPV getGetterunBinaryproxy withSchema preColumnsbase GHC.Floatatan2(Database.Groundhog.Generic.Sql.Functionscase_degreesradianscotupperlowernotLikelikenotIn_in_Database.Groundhog.Generic.SqlSqlDbsignum'quotRem'equalsOperatornotEqualsOperatorDatabase.Groundhog.ExpressiontoArithliftExprisFieldNothing>=.>.<=.<./=.==.||.&&.=.Database.Groundhog.Generic deleteByKeyrunMigrationUnsafe runMigrationprintMigrationexecuteMigrationUnsafeexecuteMigrationcreateMigrationorderByoffsetBylimitTo~>KeyAutoKey DefaultKeyUniqueBackendSpecific UniqueMarkerCondAndNotOrCompareCondRaw CondEmptyOrderAscDescDatabase.Groundhog.InstancesTuple5_0SelectorTuple5_1SelectorTuple5_2SelectorTuple5_3SelectorTuple5_4SelectorTuple4_0SelectorTuple4_1SelectorTuple4_2SelectorTuple4_3SelectorTuple3_0SelectorTuple3_1SelectorTuple3_2SelectorTuple2_0SelectorTuple2_1SelectorSelector AutoKeyFieldPersistBackendConncountgetdeletedeleteByinsertinsertByselectupdateinsert_ insertByAllreplace replaceBy selectAllgetBy deleteAllcountAllprojectmigrate executeRawqueryRaw insertListgetList extractUniquePersistBackendConn getConnection ArrayElem parseElem arrayType parseStringjstring_unescape doubleQuote backslashparseArr