úÎm;h¡@      !"#$%&'()*+,-./0123456789:;<=>?portable experimental#Bryan O'Sullivan <bos@mailrank.com> $Wrap a list of values for use in an IN clause. Replaces a  single "?"1 character with a parenthesized list of rendered  values.  Example: ; query "select * from whatever where id in ?" (In [3,4,5]) A single-value collection. DThis can be handy if you need to supply a single parameter to a SQL  query.  Example: query " select x from scores where x > ?" ( (42::Int))>A query string. This type is intended to make it difficult to E construct a SQL query by concatenating string fragments, as that is A an extremely common way to accidentally introduce SQL injection & vulnerabilities into an application. This type is an instance of @, so the easiest way to $ construct a query is to enable the OverloadedStrings language = extension and then simply write the query in double quotes. $ {-# LANGUAGE OverloadedStrings #-}   import Database.MySQL.Simple   q :: Query  q = "select ?" A placeholder for the SQL NULL value.    portable experimental#Bryan O'Sullivan <bos@mailrank.com>AB.A type that may be converted from a SQL type. (Convert a SQL value to a Haskell value.  Throws a  if conversion fails. =Exception thrown if conversion from a SQL value to a Haskell  value fails. 0The SQL value could not be parsed, or could not 0 be represented as a valid Haskell value, or an 4 unexpected low-level error occurred (e.g. mismatch - between metadata and actual data in a row). A SQL NULL" was encountered when the Haskell  type did not permit it. !.The SQL and Haskell types are not compatible. "#$CDEFGHIJKLMNOP  !"#$! "#$"#$"#$  ! "#$"#$"#$ !"#$portable experimental#Bryan O'Sullivan <bos@mailrank.com>%@A collection type that can be converted from a list of strings. Instances should use the  method of the  class : to perform conversion of each element of the collection. CThis example instance demonstrates how to convert a two-column row C into a Haskell pair. Each field in the metadata is paired up with 4 each value from the row, and the two are passed to .    instance ( a,  b) => % (a,b) where  & [fa,fb] [va,vb] = (a,b)  where !a =  fa va  !b =  fb vb  & fs vs = ' fs vs @Notice that this instance evaluates each element to WHNF before B constructing the pair. By doing this, we guarantee two important  properties: B Keep resource usage under control by preventing the construction % of potentially long-lived thunks.  Ensure that any  that might arise is thrown A immediately, rather than some place later in application code  that cannot handle it. &5Convert values from a row into a Haskell collection. This function will throw a  if conversion of the  collection fails. 'Throw a " exception, indicating a mismatch & between the number of columns in the Q and row, and the . number in the collection to be converted to. R%&'%&'%&&'portable experimental#Bryan O'Sullivan <bos@mailrank.com>(>A type that may be used as a single parameter to a SQL query. )6Prepare a value for substitution into a query string. *<How to render an element when substituting it into a query. ++Concatenate a series of rendering actions. ,>Escape and enclose in quotes before substituting. Use for all < text-like types, and anything else that may contain unsafe  characters when rendered. -;Render without escaping or quoting. Use for non-text types  such as numbers, when you are certain that they will not A introduce formatting vulnerabilities via use of characters such  as spaces or "'". S.0Surround a string with single-quote characters: "'" This function does not perform any other escaping. ()*+,-.*-,+().())*-,++,-.portable experimental#Bryan O'Sullivan <bos@mailrank.com>/>A collection type that can be turned into a list of rendering  *s. 0Render a collection of values. /0/0/00portable experimental#Bryan O'Sullivan <bos@mailrank.com>1Exception thrown if = is used to perform an INSERT-like  operation, or : is used to perform a SELECT-like operation. T234Exception thrown if a # could not be formatted correctly. ! This may occur if the number of '?' characters in the query : string does not match the number of parameters provided. U5678Format a query string. DThis function is exposed to help with debugging and logging. Do not * use it to prepare queries for execution. DString parameters are escaped according to the character set in use  on the . Throws 4, if the query string could not be formatted  correctly. 96Format a query string with a variable number of rows. DThis function is exposed to help with debugging and logging. Do not * use it to prepare queries for execution. >The query string must contain exactly one substitution group,  identified by the SQL keyword "VALUES" (case insensitive)  followed by an "("$ character, a series of one or more "?" ' characters separated by commas, and a ")" character. White - space in a substitution group is permitted. Throws 4, if the query string could not be formatted  correctly. V: Execute an INSERT, UPDATE!, or other SQL query that is not  expected to return results. %Returns the number of rows affected. Throws 40 if the query could not be formatted correctly. ; A version of :+ that does not perform query substitution. <Execute a multi-row INSERT, UPDATE!, or other SQL query that is not  expected to return results. %Returns the number of rows affected. Throws 40 if the query could not be formatted correctly. W= Perform a SELECT/ or other SQL query that is expected to return  results. =All results are retrieved and converted before this function  returns. Exceptions that may be thrown:  45: the query string could not be formatted correctly.  15: the result contains no columns (i.e. you should be  using : instead of =).  : result conversion failed. > A version of =+ that does not perform query substitution. X?,Execute an action inside a SQL transaction. :You are assumed to have started the transaction yourself. 1If your action succeeds, the transaction will be ted  before this function returns. DIf your action throws any exception (not just a SQL exception), the ! transaction will be rolled back  before the  exception is propagated. Y+ "#$123456789:;<=>?1 4567123"#$"#$"#$=>:;<?9812323456756789:;<=>?Z      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGGHIJKLMNOPQRSTUVWXY58Z[\]^mysql-simple-0.2.0.1Database.MySQL.SimpleDatabase.MySQL.Simple.TypesDatabase.MySQL.Simple.Result"Database.MySQL.Simple.QueryResultsDatabase.MySQL.Simple.Param!Database.MySQL.Simple.QueryParams mysql-0.1.0.1Database.MySQL.BaserollbackcommitinsertID autocommitcloseconnectdefaultConnectInfo connectSSL connectPathconnectOptionsconnectDatabaseconnectPassword connectUser connectPort connectHost ConnectInfo ConnectionInOnlyfromOnlyQuery fromQueryNullResultconvert ResultErrorConversionFailedUnexpectedNull Incompatible errSQLTypeerrHaskellType errMessage QueryResultsconvertResults convertErrorParamrenderActionManyEscapePlaininQuotes QueryParams renderParams QueryError qeMessageqeQuery FormatError fmtMessagefmtQuery fmtParams formatQuery formatManyexecuteexecute_ executeManyqueryquery_withTransactionbase Data.StringIsStringCompatisText mkCompatsmkCompatcompatokTextok8ok16ok32ok64okWord doConvert incompatibleconversionFailedattoDatabase.MySQL.Base.TypesFieldellipsis renderNull buildQuery finishExecute finishQueryfmtError