!Z      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None %16;<=KNQV]^Rk8odbcA type that maps to Khttps://docs.microsoft.com/en-us/sql/odbc/reference/appendixes/c-data-typesodbcUsed to get data.odbc#The handle allocated for any query.odbc1An environment and database connection in one go.odbcA column description.odbc(A step in the streaming process for the ! function.odbcStop with this value.odbcContinue with this value.odbc$A simple newtype wrapper around the ( type to use when you want to mean the binary2 type of SQL, and render to binary literals e.g. 0xFFEF01.The + type is already mapped to the non-Unicode text type.odbc0A value used for input/output with the database.odbcA Unicode text value.odbcYA vector of bytes. It might be binary, or a string, but we don't know the encoding. Use & if the string is UTF-8 encoded, or h if it is UTF-16 encoded. For other encodings, see the Haskell text-icu package. For raw binary, see  . odbcFOnly a vector of bytes. Intended for binary data, not for ASCII text. odbcA simple boolean. odbc$Floating point values that fit in a . odbc$Floating point values that fit in a . odbcInteger values that fit in an .odbcValues that fit in one byte.odbcDate (year, month, day) values.odbc-Time of day (hh, mm, ss + fractional) values.odbcLocal date and time.odbcSQL null value.odbcZA database exception. Any of the functions in this library may throw this exception type.odbc4An ODBC operation failed with the given return code.odbc#Allocating an ODBC resource failed.odbcDAn unsupported/unknown data type was returned from the ODBC driver.odbc=You tried to use the database connection after it was closed.odbcYou attempted to  the database twice.odbc'No total length information for column.odbcOThere was a general error retrieving data. String will contain the reason why.odbcConnection to a database. Use of this connection is thread-safe. When garbage collected, the connection will be closed if not done already.odbc*Connect using the given connection string.odbc)Close the connection. Further use of the b will throw an exception. Double closes also throw an exception to avoid architectural mistakes.odbcMemory bracket around  and .odbc$Execute a statement on the database. odbc Query and return a list of rows.!odbc?Stream results like a fold with the option to stop at any time.odbc,Thread-safely access the connection pointer.odbc-Execute a query directly without preparation.odbc"Run the function with a statement.odbcsRun an action in a bound thread. This is neccessary due to the interaction with signals in ODBC and GHC's runtime.odbc'Iterate over the rows in the statement.odbc4Fetch all results from possible multiple statements.odbc Fetch all rows from a statement.odbc/Describe the given column by its integer index.odbcPull data for the given column.odbcGet a GUID as a binary value.odbc*Get the column's data as a vector of CHAR.odbc$Get the column's data as raw binary.odbc'Get the column's data as a text string.odbc%Get some data into the given pointer.odbc*Get only the size of the data, no copying.odbc%Check that the RETCODE is successful.odbc%Check that the RETCODE is successful.odbc0Check that the RETCODE is successful or no data.odbc"hardcoded size for a GUID value, Dhttps://technet.microsoft.com/en-us/library/ms172424(v=sql.110).aspxodbcAn ODBC connection string.odbc.A connection to the database. You should call ~ on it when you're done. If you forget to, then the connection will only be closed when there are no more references to the K value in your program, which might never happen. So take care. Use e.g.  from Control.Exception= to do the open/close pattern, which will handle exceptions.odbcA connection to the database.odbcAn ODBC connection string.odbc&Program that uses the ODBC connection.odbcA connection to the database.odbcSQL statement. odbcA connection to the database.odbc SQL query.odbcA strict list of rows. This list is not lazy, so if you are retrieving a large data set, be aware that all of it will be loaded into memory.!odbcA connection to the database.odbc SQL query.odbc3A stepping function that gets as input the current state$ and a row, returning either a new state or a final result.odbcQA state that you can use for the computation. Strictly evaluated each iteration.odbc/Final result, produced by the stepper function."  !"  !None;<=N]Xiodbc0For producing rows from a list of column values.(You can get a row of a single type like  or a list e.g.  [Maybe Value]> if you don't know what you're dealing with, or a tuple e.g. (Text, Int, Bool).kodbcConvert from a  to a regular Haskell value.lodbcThe  % is used for a helpful error message.ijklklijNone -16;=KST]#odbc4Handy class for converting values to a query safely. For example: 7query c ("SELECT * FROM demo WHERE id > " <> toSql 123)1WARNING: Note that if you insert a value like an ! (64-bit) into a column that is int9 (32-bit), then be sure that your number fits inside an int. Try using an   instead to be sure.odbc@Use this type to discard higher precision than seconds in your   values for a schema using  smalldatetime. ehttps://docs.microsoft.com/en-us/sql/t-sql/data-types/smalldatetime-transact-sql?view=sql-server-2017odbcThe  ! type has more accuracy than the datetime type and the  datetime2 types can hold; so you will lose precision when you insert. Use this type to indicate that you are aware of the precision loss and fine with it. ahttps://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime2-transact-sql?view=sql-server-2017If you are using  smalldatetime! in SQL Server, use instead the  type. odbcA part of a query.odbcA query builder. Use 0 to convert Haskell values to this type safely.It's an instance of  , so you can use OverloadedStrings$ to produce plain text values e.g.  "SELECT 123".It's an instance of -, so you can append fragments together with  e.g. *"SELECT * FROM x WHERE id = " <> toSql 123.:This is meant as a bare-minimum of safety and convenience.odbcDDo not use for writing your queries. Use when writing instances of & if you want to efficiently include a 6 value. Subject to SQL injection risk, so be careful.odbc Query and return a list of rows.The rowE type is inferred based on use or type-signature. Examples might be (Int, Text, Bool) for concrete types, or  [Maybe Value]q if you don't know ahead of time how many columns you have and their type. See the top section for example use.odbcIRender a query to a plain text string. Useful for debugging and testing.odbc?Stream results like a fold with the option to stop at any time.odbc$Execute a statement on the database.odbc%Convert a list of parts into a query.odbcRender a query part to a query.odbcRender a value to a query.odbcWObviously, this is not fast. But it is correct. A faster version can be written later.odbc%A very conservative character escape.odbc%A very conservative character escape.odbcIs the character allowed to be printed unescaped? We only print a small subset of ASCII just for visually debugging later on. Everything else is escaped.odbcoCorresponds to SMALLDATETIME type of SQL Server. Precision up to minutes. Consider the seconds field always 0.odbc5Corresponds to DATETIME/DATETIME2 type of SQL Server.The ! type has more accuracy than the datetime type and the  datetime2= types can hold; so you will lose precision when you insert.odbc9You cannot use this instance. Wrap your value in either  or .odbc9You cannot use this instance. Wrap your value in either  or .odbc'Corresponds to TIME type of SQL Server." supports more precision than the timeT type of SQL server, so you will lose precision and not get back what you inserted.odbc'Corresponds to DATE type of SQL Server.odbc*Corresponds to TINYINT type of SQL Server.odbc&Corresponds to INT type of SQL Server.odbc+Corresponds to SMALLINT type of SQL Server.odbc)Corresponds to BIGINT type of SQL Server.odbc'Corresponds to REAL type of SQL Server.odbc(Corresponds to FLOAT type of SQL Server.odbc&Corresponds to BIT type of SQL Server.odbcGCorresponds to TEXT (non-Unicode) of SQL Server. For Unicode, use the  type.odbcMCorresponds to TEXT (non-Unicode) of SQL Server. For proper BINARY, see the Binary type.odbcCorresponds to NTEXT (Unicode) of SQL Server. Note that if your character exceeds the range supported by a wide-char (16-bit), that cannot be sent to the server.odbcCorresponds to NTEXT (Unicode) of SQL Server. Note that if your character exceeds the range supported by a wide-char (16-bit), that cannot be sent to the server.odbcConverts whatever the  is to SQL.odbcA connection to the database.odbc SQL query.odbcA connection to the database.odbc SQL query.odbc3A stepping function that gets as input the current state$ and a row, returning either a new state or a final result.odbcQA state that you can use for the computation. Strictly evaluated each iteration.odbc/Final result, produced by the stepper function.odbcA connection to the database.odbcSQL statement.0 ijkl0 klijNoneodbc;Allows SQLparameters interpolation from a SQL query. Only Q is implemented because this quote can only be used at the expression level. select_some_stuff :: Text -> Int -> Query select_some_stuff name age = [sql|select * from user where age = $age AND name = $name|] In this case, $ quote will generate the code below: ""select * from user where age = "   age  " AND name = "   name odbc[Loads the content of a SQL query file and allows SQL parameters interpolation from it. lselect_some_stuff :: Text -> Int -> Query select_some_stuff name age = $(sqlFile "path/to/my/sql/file.sql") See  for more details.       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~()'           !"#$%&'(!odbc-0.2.2-D8oVNhfgE4pHYkTXRuhzAMDatabase.ODBC.InternalDatabase.ODBC.ConversionDatabase.ODBC.SQLServerDatabase.ODBC.THData.Text.Encoding decodeUtf8 decodeUtf16LEtoSqlStepStopContinueBinaryunBinaryValue TextValueByteStringValue BinaryValue BoolValue DoubleValue FloatValueIntValue ByteValueDayValueTimeOfDayValueLocalTimeValue NullValue ODBCExceptionUnsuccessfulReturnCodeAllocationReturnedNullUnknownDataTypeDatabaseIsClosedDatabaseAlreadyClosedNoTotalInformationDataRetrievalError ConnectionconnectclosewithConnectionexecquerystream$fExceptionODBCException $fNFDataValue$fShowODBCException$fEqODBCException $fShowBinary $fEqBinary $fOrdBinary $fDataBinary$fGenericBinary$fNFDataBinary $fEqValue $fShowValue $fOrdValue$fGenericValue $fDataValue $fShowStep$fShowSQLCTYPE $fEqSQLCTYPE$fStorableSQLCTYPE$fIntegralSQLCTYPE$fEnumSQLCTYPE$fRealSQLCTYPE $fNumSQLCTYPE $fOrdSQLCTYPE $fShowRETCODE $fEqRETCODE$fShowSQLUSMALLINT$fEqSQLUSMALLINT$fStorableSQLUSMALLINT$fIntegralSQLUSMALLINT$fEnumSQLUSMALLINT$fRealSQLUSMALLINT$fNumSQLUSMALLINT$fOrdSQLUSMALLINT$fShowSQLUCHAR $fEqSQLUCHAR$fStorableSQLUCHAR $fShowSQLCHAR $fEqSQLCHAR$fStorableSQLCHAR$fShowSQLSMALLINT$fEqSQLSMALLINT$fStorableSQLSMALLINT$fNumSQLSMALLINT$fIntegralSQLSMALLINT$fEnumSQLSMALLINT$fOrdSQLSMALLINT$fRealSQLSMALLINT $fShowSQLLEN $fEqSQLLEN$fStorableSQLLEN $fNumSQLLEN $fShowSQLULEN $fEqSQLULEN$fStorableSQLULEN $fShowColumn$fShowSQLINTEGER$fEqSQLINTEGER$fStorableSQLINTEGER$fNumSQLINTEGER$fShowSQLUINTEGER$fEqSQLUINTEGER$fStorableSQLUINTEGER$fNumSQLUINTEGER$fIntegralSQLUINTEGER$fEnumSQLUINTEGER$fOrdSQLUINTEGER$fRealSQLUINTEGER$fShowSQLWCHAR $fEqSQLWCHAR$fStorableSQLWCHARFromRowfromRow FromValue fromValue$fFromValueLocalTime$fFromValueTimeOfDay$fFromValueDay$fFromValueBool$fFromValueWord8$fFromValueFloat$fFromValueDouble$fFromValueInt$fFromValueByteString$fFromValueBinary$fFromValueByteString0$fFromValueText$fFromValueText0$fFromValueValue$fFromValueMaybe#$fFromRow(,,,,,,,,,,,,,,,,,,,,,,,,)"$fFromRow(,,,,,,,,,,,,,,,,,,,,,,,)!$fFromRow(,,,,,,,,,,,,,,,,,,,,,,) $fFromRow(,,,,,,,,,,,,,,,,,,,,,)$fFromRow(,,,,,,,,,,,,,,,,,,,,)$fFromRow(,,,,,,,,,,,,,,,,,,,)$fFromRow(,,,,,,,,,,,,,,,,,,)$fFromRow(,,,,,,,,,,,,,,,,,)$fFromRow(,,,,,,,,,,,,,,,,)$fFromRow(,,,,,,,,,,,,,,,)$fFromRow(,,,,,,,,,,,,,,)$fFromRow(,,,,,,,,,,,,,)$fFromRow(,,,,,,,,,,,,)$fFromRow(,,,,,,,,,,,)$fFromRow(,,,,,,,,,,)$fFromRow(,,,,,,,,,)$fFromRow(,,,,,,,,)$fFromRow(,,,,,,,)$fFromRow(,,,,,,)$fFromRow(,,,,,)$fFromRow(,,,,)$fFromRow(,,,) $fFromRow(,,) $fFromRow(,) $fFromRowBool$fFromRowWord8$fFromRowFloat$fFromRowDouble$fFromRowLocalTime$fFromRowTimeOfDay $fFromRowDay $fFromRowInt$fFromRowByteString$fFromRowBinary$fFromRowByteString0 $fFromRowText$fFromRowText0$fFromRowValue $fFromRow[]$fFromRowIdentity$fFromRowMaybeToSql SmalldatetimeunSmalldatetime Datetime2 unDatetime2QueryrawUnescapedText renderQuery$fIsStringPart $fNFDataPart$fIsStringQuery $fNFDataQuery$fToSqlSmalldatetime$fToSqlDatetime2$fToSqlUTCTime$fToSqlLocalTime$fToSqlTimeOfDay $fToSqlDay $fToSqlWord8 $fToSqlInt32 $fToSqlInt16 $fToSqlInt $fToSqlFloat $fToSqlDouble $fToSqlBool$fToSqlByteString $fToSqlBinary$fToSqlByteString0 $fToSqlText $fToSqlText0 $fToSqlValue $fToSqlMaybe$fEqPart $fShowPart $fOrdPart $fGenericPart $fDataPart $fMonoidQuery $fEqQuery $fShowQuery $fOrdQuery$fGenericQuery $fDataQuery$fSemigroupQuery $fEqDatetime2$fOrdDatetime2$fShowDatetime2$fGenericDatetime2$fDataDatetime2$fFromValueDatetime2$fEqSmalldatetime$fOrdSmalldatetime$fShowSmalldatetime$fGenericSmalldatetime$fDataSmalldatetime$fFromValueSmalldatetimePartSqlPart ParamName partsParsersqlsqlFileSQLCTYPE SQLPOINTERSQLHSTMT EnvAndDbcColumnbytestring-0.10.8.2Data.ByteString.Internal ByteStringghc-prim GHC.TypesDoubleFloatIntwithHDBCwithExecDirectwithStmt withBound fetchIteratorfetchAllResultsfetchStatementRowsdescribeColumngetDatagetGuid getBytesData getBinaryData getTextData getTypedDatagetSize assertNotNull assertSuccessassertSuccessOrNoData odbcGuidBytesbaseControl.Exception.Basebracket text-1.2.3.0Data.Text.InternalTextGHC.BaseStringGHC.IntInt32 time-1.8.0.2&Data.Time.LocalTime.Internal.LocalTime LocalTime Data.StringIsStringMonoid<> renderParts renderPart renderValuerenderFractional escapeChar8 escapeChar allowedChar&Data.Time.LocalTime.Internal.TimeOfDay TimeOfDaytemplate-haskellLanguage.Haskell.TH.QuotequoteExp