code: func initSQLStmtsTable(driver string) {
  	// The sqlStmts table is initialized with MySQL statements.
  	// Update the statements for the selected driver.
  	switch driver {
  	case driverPostgres:
  		// Replace ? with $1, $2, etc...
  		for i, stmt := range sqlStmts {
  			n := 0
  			for strings.IndexByte(stmt, '?') != -1 {
  				n++
  				param := "$" + strconv.Itoa(n)
  				stmt = strings.Replace(stmt, "?", param, 1)
  			}
  			sqlStmts[i] = stmt
  		}
  		// Replace `row` with row
  		for i, stmt := range sqlStmts {
  			stmt := strings.Replace(stmt, "`row`", "row", -1)
  			sqlStmts[i] = stmt
  		}
  		// OVER (PARTITION ...) is not supported in older MySQL servers.
  		// So the default SQL statement is specific to MySQL and uses variables.
  		// For Postgres, replace with this statement:
  		sqlStmts[sqlRecoverGetSeqFloorForMaxBytes] = "SELECT COALESCE(MIN(seq), 0) FROM (SELECT seq, SUM(size) OVER (PARTITION BY id ORDER BY seq DESC) AS total FROM Messages WHERE id=$1)t WHERE t.total<=$2"
  	}
  }
docs: // initialize the global sqlStmts table to driver's one.