func createConnPool() (*pgx.ConnPool, error) { var config pgx.ConnPoolConfig var err error config.ConnConfig, err = pgx.ParseEnvLibpq() if err != nil { return nil, err } if config.Host == "" { config.Host = "localhost" } if config.User == "" { config.User = os.Getenv("USER") } if config.Database == "" { config.Database = "pgxdata" } config.TLSConfig = nil config.UseFallbackTLS = false config.MaxConnections = 10 return pgx.NewConnPool(config) }
func getConfig() pgx.ConnPoolConfig { var err interface{} var connPoolConfig pgx.ConnPoolConfig connPoolConfig.ConnConfig, err = pgx.ParseEnvLibpq() if err != nil { log.Fatalf("Postgresql connection information missing from the environment: %v", err) } connPoolConfig.MaxConnections = 10 return connPoolConfig }
func initDatabase(dbHost string, dbUser string, dbPass string, dbName string, dbPort uint16, maxConnectionsInPool int) (*pgx.ConnPool, error) { var successOrFailure string = "OK" var config pgx.ConnPoolConfig config.Host = dbHost config.User = dbUser config.Password = dbPass config.Database = dbName config.Port = dbPort config.MaxConnections = maxConnectionsInPool config.AfterConnect = func(conn *pgx.Conn) error { worldSelectStmt = mustPrepare(conn, "worldSelectStmt", "SELECT id, randomNumber FROM World WHERE id = $1") worldUpdateStmt = mustPrepare(conn, "worldUpdateStmt", "UPDATE World SET randomNumber = $1 WHERE id = $2") fortuneSelectStmt = mustPrepare(conn, "fortuneSelectStmt", "SELECT id, message FROM Fortune") // Disable synchronous commit for the current db connection // as a performance optimization. // See http://www.postgresql.org/docs/current/static/runtime-config-wal.html // for details. if _, err := conn.Exec("SET synchronous_commit TO OFF"); err != nil { log.Fatalf("Error when disabling synchronous commit") } return nil } fmt.Println("--------------------------------------------------------------------------------------------") connPool, err := pgx.NewConnPool(config) if err != nil { successOrFailure = "FAILED" log.Println("Connecting to database ", dbName, " as user ", dbUser, " ", successOrFailure, ": \n ", err) } else { log.Println("Connecting to database ", dbName, " as user ", dbUser, ": ", successOrFailure) log.Println("Fetching one record to test if db connection is valid...") var w World n := randomWorldNum() if errPing := connPool.QueryRow("worldSelectStmt", n).Scan(&w.Id, &w.RandomNumber); errPing != nil { log.Fatalf("Error scanning world row: %s", errPing) } log.Println("OK") } fmt.Println("--------------------------------------------------------------------------------------------") return connPool, err }
func initDatabase(dbHost string, dbUser string, dbPass string, dbName string, dbPort uint16, maxConnectionsInPool int) (*pgx.ConnPool, error) { var successOrFailure string = "OK" var config pgx.ConnPoolConfig config.Host = dbHost config.User = dbUser config.Password = dbPass config.Database = dbName config.Port = dbPort config.MaxConnections = maxConnectionsInPool config.AfterConnect = func(eachConn *pgx.Conn) error { worldSelectStmt = mustPrepare(eachConn, "worldSelectStmt", "SELECT id, randomNumber FROM World WHERE id = $1") worldUpdateStmt = mustPrepare(eachConn, "worldUpdateStmt", "UPDATE World SET randomNumber = $1 WHERE id = $2") fortuneSelectStmt = mustPrepare(eachConn, "fortuneSelectStmt", "SELECT id, message FROM Fortune") return nil } fmt.Println("--------------------------------------------------------------------------------------------") connPool, err := pgx.NewConnPool(config) if err != nil { successOrFailure = "FAILED" log.Println("Connecting to database ", dbName, " as user ", dbUser, " ", successOrFailure, ": \n ", err) } else { log.Println("Connecting to database ", dbName, " as user ", dbUser, ": ", successOrFailure) log.Println("Fetching one record to test if db connection is valid...") var w World n := randomWorldNum() if errPing := connPool.QueryRow("worldSelectStmt", n).Scan(&w.Id, &w.RandomNumber); errPing != nil { log.Fatalf("Error scanning world row: %s", errPing) } log.Println("OK") } fmt.Println("--------------------------------------------------------------------------------------------") return connPool, err }