From 422817e68120f3c0cad131d8877f83740a4ae67e Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Fri, 3 Mar 2017 22:51:49 -0500 Subject: [PATCH 01/32] Update README to include build status icons, emoji, and contributor list. --- README.md | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 751fac3..6cae47c 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,19 @@ # PostgreSQL for Swift +[![Swift](http://img.shields.io/badge/swift-3.0-brightgreen.svg)](https://swift.org) +[![Build Status](https://travis-ci.org/vapor/postgresql.svg?branch=master)](https://travis-ci.org/vapor/postgresql) + A Swift wrapper for PostgreSQL. - [x] Thread-Safe - [x] Prepared Statements - [x] Tested -This wrapper uses the latest PostgreSQL fetch API to enable performant prepared statements and output bindings. - -The Swift wrappers around the PostgreSQL's C structs and pointers automatically manage closing connections and deallocating memeory. Additionally, the PostgreSQL library API is used to perform thread safe, performant queries to the database. +This wrapper uses the latest PostgreSQL fetch API to enable performant prepared statements and output bindings. Data is sent to and received from the PostgreSQL server in its native data type without converting to and from strings. +The Swift wrappers around the PostgreSQL's C structs and pointers automatically manage closing connections and deallocating memory. Additionally, the PostgreSQL library API is used to perform thread safe, performant queries to the database. -## Examples +## 📖 Examples ### Connecting to the Database @@ -62,7 +64,7 @@ let result = try postgreSQL.execute("SELECT LAST_INSERTED_ID() as id", [], conne No need to worry about closing the connection. -## Building +## 🚀 Building ### macOS @@ -72,9 +74,6 @@ Install PostgreSQL brew install postgresql brew link postgresql brew services start postgresql - -// to stop -brew services stop postgresql ``` ### Linux @@ -87,14 +86,12 @@ sudo apt-get install postgresql postgresql-contrib libpq-dev psql -h dbhost -U username dbname ``` -`swift build` should work normally. +Use `vapor build` or `swift build`. ## Fluent -This wrapper was created to power [Fluent](https://github.com/qutheory/fluent), an ORM for Swift. - -## 👥 Authors - -Made by [Prince Ugwuh](https://twitter.com/Prince2k3) a member of Qutheory community. +This wrapper was created to power [Fluent](https://github.com/qutheory/fluent), an [ORM](https://en.wikipedia.org/wiki/Object-relational_mapping) for Swift. +## 👥 Contributors +Maintained by [Steven Roebert](https://github.com/sroebert), [Nate Bird](https://twitter.com/natesbird), [Prince Ugwuh](https://twitter.com/Prince2k3), and other members of the Vapor community. From b2c49d971dd1f533ef6533ec20ce01705ae7d16a Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Tue, 4 Apr 2017 16:18:14 -0400 Subject: [PATCH 02/32] Update dependencies for beta release. --- Package.swift | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Package.swift b/Package.swift index 8ee2770..7c083bc 100644 --- a/Package.swift +++ b/Package.swift @@ -3,8 +3,13 @@ import PackageDescription let package = Package( name: "PostgreSQL", dependencies: [ - .Package(url: "https://github.com/vapor/cpostgresql.git", majorVersion: 1), - .Package(url: "https://github.com/vapor/node.git", majorVersion: 1), - .Package(url: "https://github.com/vapor/core.git", majorVersion: 1), + // Module map for `libpq` + .Package(url: "https://github.com/vapor/cpostgresql.git", Version(2,0,0, prereleaseIdentifiers: ["alpha"])), + + // Data structure for converting between multiple representations + .Package(url: "https://github.com/vapor/node.git", Version(2,0,0, prereleaseIdentifiers: ["beta"])), + + // Core extensions, type-aliases, and functions that facilitate common tasks + .Package(url: "https://github.com/vapor/core.git", Version(2,0,0, prereleaseIdentifiers: ["beta"])), ] ) From beaa55a1fea60edb273daffd72251c1825e2dc20 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Tue, 4 Apr 2017 16:18:56 -0400 Subject: [PATCH 03/32] Simplify CPostgreSQL import --- Sources/PostgreSQL/Connection.swift | 50 +++++++++++-------------- Sources/PostgreSQL/ConnectionInfo.swift | 6 +-- Sources/PostgreSQL/Database.swift | 6 +-- Sources/PostgreSQL/Node+Oid.swift | 6 +-- Sources/PostgreSQL/Result.swift | 6 +-- Sources/PostgreSQL/Status.swift | 8 +--- 6 files changed, 27 insertions(+), 55 deletions(-) diff --git a/Sources/PostgreSQL/Connection.swift b/Sources/PostgreSQL/Connection.swift index 0a5e79e..c1612ba 100644 --- a/Sources/PostgreSQL/Connection.swift +++ b/Sources/PostgreSQL/Connection.swift @@ -1,10 +1,4 @@ -#if os(Linux) - import CPostgreSQLLinux -#else - import CPostgreSQLMac -#endif - - +import CPostgreSQL public final class Connection: ConnInfoInitializable { public typealias ConnectionPointer = OpaquePointer @@ -20,48 +14,48 @@ public final class Connection: ConnInfoInitializable { public init(conninfo: ConnInfo) throws { let string: String - + switch conninfo { case .raw(let ci): string = ci case .params(let params): var ci = "" - + params.forEach { (key, value) in ci += "\(key)='\(value)'" } - + string = ci case .basic(host: let host, port: let port, database: let database, user: let user, password: let password): string = "host='\(host)' port='\(port)' dbname='\(database)' user='\(user)' password='\(password)' client_encoding='UTF8'" } - + self.connection = PQconnectdb(string) if !self.connected { throw DatabaseError.cannotEstablishConnection(error) } } - + @discardableResult public func execute(_ query: String, _ values: [Node]? = []) throws -> [[String: Node]] { guard !query.isEmpty else { throw DatabaseError.noQuery } - + let values = values ?? [] - + var types: [Oid] = [] types.reserveCapacity(values.count) - + var paramValues: [[Int8]?] = [] paramValues.reserveCapacity(values.count) - + var lengths: [Int32] = [] lengths.reserveCapacity(values.count) - + var formats: [Int32] = [] formats.reserveCapacity(values.count) - + for value in values { let (bytes, oid, format) = value.postgresBindingData paramValues.append(bytes) @@ -69,7 +63,7 @@ public final class Connection: ConnInfoInitializable { lengths.append(Int32(bytes?.count ?? 0)) formats.append(format.rawValue) } - + let res: Result.Pointer = PQexecParams( connection, query, Int32(values.count), @@ -80,11 +74,11 @@ public final class Connection: ConnInfoInitializable { formats, DataFormat.binary.rawValue ) - + defer { PQclear(res) } - + switch Database.Status(result: res) { case .nonFatalError, .fatalError, .unknown: throw DatabaseError.invalidSQL(message: String(cString: PQresultErrorMessage(res))) @@ -116,28 +110,28 @@ public final class Connection: ConnInfoInitializable { guard let s = PQerrorMessage(connection) else { return "" } - return String(cString: s) + return String(cString: s) } deinit { try? close() } - + // MARK: - Load Configuration - + private func getConfiguration() throws -> Configuration { if let configuration = self.configuration { return configuration } - + let hasIntegerDatetimes = getBooleanParameterStatus(key: "integer_datetimes", default: true) - + let configuration = Configuration(hasIntegerDatetimes: hasIntegerDatetimes) self.configuration = configuration - + return configuration } - + private func getBooleanParameterStatus(key: String, `default` defaultValue: Bool = false) -> Bool { guard let value = PQparameterStatus(connection, "integer_datetimes") else { return defaultValue diff --git a/Sources/PostgreSQL/ConnectionInfo.swift b/Sources/PostgreSQL/ConnectionInfo.swift index bb914ae..831c202 100644 --- a/Sources/PostgreSQL/ConnectionInfo.swift +++ b/Sources/PostgreSQL/ConnectionInfo.swift @@ -1,8 +1,4 @@ -#if os(Linux) - import CPostgreSQLLinux -#else - import CPostgreSQLMac -#endif +import CPostgreSQL public enum ConnInfo { case raw(String) diff --git a/Sources/PostgreSQL/Database.swift b/Sources/PostgreSQL/Database.swift index adcccd7..17e069f 100644 --- a/Sources/PostgreSQL/Database.swift +++ b/Sources/PostgreSQL/Database.swift @@ -1,8 +1,4 @@ -#if os(Linux) - import CPostgreSQLLinux -#else - import CPostgreSQLMac -#endif +import CPostgreSQL public enum DatabaseError: Error { case cannotEstablishConnection(String) diff --git a/Sources/PostgreSQL/Node+Oid.swift b/Sources/PostgreSQL/Node+Oid.swift index 1c79521..be36f0d 100644 --- a/Sources/PostgreSQL/Node+Oid.swift +++ b/Sources/PostgreSQL/Node+Oid.swift @@ -1,8 +1,4 @@ -#if os(Linux) - import CPostgreSQLLinux -#else - import CPostgreSQLMac -#endif +import CPostgreSQL import Foundation /// Oid values can be found in the following file: diff --git a/Sources/PostgreSQL/Result.swift b/Sources/PostgreSQL/Result.swift index 4e430fe..7178033 100644 --- a/Sources/PostgreSQL/Result.swift +++ b/Sources/PostgreSQL/Result.swift @@ -1,8 +1,4 @@ -#if os(Linux) - import CPostgreSQLLinux -#else - import CPostgreSQLMac -#endif +import CPostgreSQL class Result { typealias Pointer = OpaquePointer diff --git a/Sources/PostgreSQL/Status.swift b/Sources/PostgreSQL/Status.swift index 0bcacca..c8bbe37 100644 --- a/Sources/PostgreSQL/Status.swift +++ b/Sources/PostgreSQL/Status.swift @@ -1,10 +1,4 @@ - -#if os(Linux) - import CPostgreSQLLinux -#else - import CPostgreSQLMac -#endif - +import CPostgreSQL extension Database { public enum Status { From f1f4b9975a65da836d51c4b4be9663fb083153e0 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Tue, 4 Apr 2017 16:36:26 -0400 Subject: [PATCH 04/32] Update Bindings to use Node StructuredData --- Sources/PostgreSQL/Node+Binding.swift | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Sources/PostgreSQL/Node+Binding.swift b/Sources/PostgreSQL/Node+Binding.swift index bc41fb8..c25b4e1 100644 --- a/Sources/PostgreSQL/Node+Binding.swift +++ b/Sources/PostgreSQL/Node+Binding.swift @@ -7,7 +7,7 @@ protocol Bindable { extension Node: Bindable { var postgresBindingData: ([Int8]?, OID?, DataFormat) { - switch self { + switch wrapped { case .null: // PQexecParams converts nil pointer to NULL. // see: https://www.postgresql.org/docs/9.1/static/libpq-exec.html @@ -38,9 +38,14 @@ extension Node: Bindable { case .object(_): print("Unsupported Node type for PostgreSQL binding, everything except for .object is supported.") return (nil, nil, .string) + + default: + return (nil, nil, .string) } } - +} + +extension StructuredData { var postgresArrayElementString: String { switch self { case .null: @@ -69,6 +74,9 @@ extension Node: Bindable { case .object(_): print("Unsupported Node array type for PostgreSQL binding, everything except for .object is supported.") return "NULL" + + default: + return "" } } } From 9c6ffd7540bb3c52bc2f34fbdc939c3a692ef67e Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Tue, 4 Apr 2017 16:36:47 -0400 Subject: [PATCH 05/32] Update syntax for node compliance. --- Tests/PostgreSQLTests/ArrayTests.swift | 49 ++++++++++----------- Tests/PostgreSQLTests/PostgreSQLTests.swift | 41 ++++++++--------- 2 files changed, 41 insertions(+), 49 deletions(-) diff --git a/Tests/PostgreSQLTests/ArrayTests.swift b/Tests/PostgreSQLTests/ArrayTests.swift index 5c374a1..7746a72 100644 --- a/Tests/PostgreSQLTests/ArrayTests.swift +++ b/Tests/PostgreSQLTests/ArrayTests.swift @@ -30,15 +30,15 @@ class ArrayTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, int_array int[])") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") XCTAssertEqual(result.count, rows.count) for (i, resultRow) in result.enumerated() { let intArray = resultRow["int_array"] - XCTAssertNotNil(intArray?.nodeArray) - XCTAssertEqual(intArray!.nodeArray!.flatMap { $0.int }, rows[i]) + XCTAssertNotNil(intArray?.array) + XCTAssertEqual(intArray!.array!.flatMap { $0.int }, rows[i]) } } @@ -54,15 +54,15 @@ class ArrayTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, string_array text[])") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") XCTAssertEqual(result.count, rows.count) for (i, resultRow) in result.enumerated() { let stringArray = resultRow["string_array"] - XCTAssertNotNil(stringArray?.nodeArray) - XCTAssertEqual(stringArray!.nodeArray!.flatMap { $0.string }, rows[i]) + XCTAssertNotNil(stringArray?.array) + XCTAssertEqual(stringArray!.array!.flatMap { $0.string }, rows[i]) } } @@ -79,15 +79,15 @@ class ArrayTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, bool_array bool[])") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") XCTAssertEqual(result.count, rows.count) for (i, resultRow) in result.enumerated() { let boolArray = resultRow["bool_array"] - XCTAssertNotNil(boolArray?.nodeArray) - XCTAssertEqual(boolArray!.nodeArray!.flatMap { $0.bool }, rows[i]) + XCTAssertNotNil(boolArray?.array) + XCTAssertEqual(boolArray!.array!.flatMap { $0.bool }, rows[i]) } } @@ -103,18 +103,15 @@ class ArrayTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, byte_array bytea[])") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") XCTAssertEqual(result.count, rows.count) for (i, resultRow) in result.enumerated() { let byteArray = resultRow["byte_array"] - XCTAssertNotNil(byteArray?.nodeArray) - XCTAssertEqual(byteArray!.nodeArray!.flatMap { node in - guard case .bytes(_) = node else { - return nil - } + XCTAssertNotNil(byteArray?.array) + XCTAssertEqual(byteArray!.array!.flatMap { node in return node }, rows[i]) } @@ -132,17 +129,17 @@ class ArrayTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, int_array int[])") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.map { try $0.makeNode() }.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.map { try $0.makeNode(in: nil) }.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") XCTAssertEqual(result.count, rows.count) for (i, resultRow) in result.enumerated() { let intArray = resultRow["int_array"] - XCTAssertNotNil(intArray?.nodeArray) - XCTAssertEqual(intArray!.nodeArray!.count, rows[i].count) - XCTAssertEqual(intArray!.nodeArray!.flatMap { $0.int }, []) - XCTAssertEqual(intArray!.nodeArray!.flatMap { $0.isNull ? Node.null : nil }.count, rows[i].count) + XCTAssertNotNil(intArray?.array) + XCTAssertEqual(intArray!.array!.count, rows[i].count) + XCTAssertEqual(intArray!.array!.flatMap { $0.int }, []) + XCTAssertEqual(intArray!.array!.flatMap { $0.isNull ? Node.null : nil }.count, rows[i].count) } } @@ -158,7 +155,7 @@ class ArrayTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, int_array int[][])") for row in rows { - let node = try Node.array(row.map { try $0.makeNode() }) + let node = try Node.array(row.map { try $0.makeNode(in: nil) }) try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [node]) } @@ -166,9 +163,9 @@ class ArrayTests: XCTestCase { XCTAssertEqual(result.count, rows.count) for (i, resultRow) in result.enumerated() { let intArray = resultRow["int_array"] - XCTAssertNotNil(intArray?.nodeArray) + XCTAssertNotNil(intArray?.array) - let result = intArray!.nodeArray!.flatMap { $0.nodeArray?.flatMap { $0.int } } + let result = intArray!.array!.flatMap { $0.array?.flatMap { $0.int } } for (i, rowArray) in rows[i].enumerated() { XCTAssertEqual(result[i], rowArray) } @@ -188,15 +185,15 @@ class ArrayTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, int_array int[])") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") XCTAssertEqual(result.count, rows.count) for (i, resultRow) in result.enumerated() { let intArray = resultRow["int_array"] - XCTAssertNotNil(intArray?.nodeArray) - XCTAssertEqual(intArray!.nodeArray!, rows[i]) + XCTAssertNotNil(intArray?.array) + XCTAssertEqual(intArray!.array!, rows[i]) } } } diff --git a/Tests/PostgreSQLTests/PostgreSQLTests.swift b/Tests/PostgreSQLTests/PostgreSQLTests.swift index c59011f..ad97848 100644 --- a/Tests/PostgreSQLTests/PostgreSQLTests.swift +++ b/Tests/PostgreSQLTests/PostgreSQLTests.swift @@ -123,7 +123,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS parameterization") try postgreSQL.execute("CREATE TABLE parameterization (d FLOAT8, i INT, s VARCHAR(16), u INT)") - try postgreSQL.execute("INSERT INTO parameterization VALUES ($1, $2, $3, $4)", [.null, .null, "life".makeNode(), .null], on: nil) + try postgreSQL.execute("INSERT INTO parameterization VALUES ($1, $2, $3, $4)", [.null, .null, "life".makeNode(in: nil), .null], on: nil) try postgreSQL.execute("INSERT INTO parameterization VALUES (3.14, NULL, 'pi', NULL)") try postgreSQL.execute("INSERT INTO parameterization VALUES (NULL, NULL, 'life', 42)") @@ -210,7 +210,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, int2 int2, int4 int4, int8 int8)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1, $2, $3)", [row.0.makeNode(), row.1.makeNode(), row.2.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1, $2, $3)", [row.0.makeNode(in: nil), row.1.makeNode(in: nil), row.2.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -223,7 +223,7 @@ class PostgreSQLTests: XCTestCase { let int4 = resultRow["int4"] XCTAssertNotNil(int4?.int) XCTAssertEqual(int4!.int!, Int(rows[i].1)) - + let int8 = resultRow["int8"] XCTAssertNotNil(int8?.double) XCTAssertEqual(int8!.double!, Double(rows[i].2)) @@ -243,7 +243,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, float4 float4, float8 float8)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1, $2)", [row.0.makeNode(), row.1.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1, $2)", [row.0.makeNode(in: nil), row.1.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -275,7 +275,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, numeric numeric)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -301,7 +301,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, json json, jsonb jsonb)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1, $2)", [row.makeNode(), row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1, $2)", [row.makeNode(in: nil), row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -337,7 +337,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, interval interval)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row[0].makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row[0].makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -359,7 +359,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, point point)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -381,7 +381,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, lseg lseg)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -404,7 +404,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, path path)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -426,7 +426,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, box box)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -449,7 +449,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, polygon polygon)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -471,7 +471,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, circle circle)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -497,7 +497,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, inet inet)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -523,7 +523,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, cidr cidr)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -552,7 +552,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, macaddr macaddr)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -580,7 +580,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, bits bit(5))") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -610,7 +610,7 @@ class PostgreSQLTests: XCTestCase { try postgreSQL.execute("DROP TABLE IF EXISTS foo") try postgreSQL.execute("CREATE TABLE foo (id serial, bits bit varying)") for row in rows { - try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode()]) + try postgreSQL.execute("INSERT INTO foo VALUES (DEFAULT, $1)", [row.makeNode(in: nil)]) } let result = try postgreSQL.execute("SELECT * FROM foo ORDER BY id ASC") @@ -658,11 +658,6 @@ class PostgreSQLTests: XCTestCase { for resultRow in result { let value = resultRow["oid"] XCTAssertNotNil(value) - - guard case .bytes(_) = value! else { - XCTFail("Result should be in bytes") - return - } } } } From 07bad53389602103d858bc9cf7ca54553e48ac46 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Tue, 4 Apr 2017 16:37:09 -0400 Subject: [PATCH 06/32] Update to use Swift 3.1 CI scripts. --- .travis.yml | 2 +- circle.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 64d80cf..996cc36 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,5 +16,5 @@ install: - psql -U postgres -c 'CREATE DATABASE test;' script: - - eval "$(curl -sL swift.vapor.sh/ci)" + - eval "$(curl -sL swift.vapor.sh/ci-3.1)" - eval "$(curl -sL swift.vapor.sh/codecov)" diff --git a/circle.yml b/circle.yml index c9b6510..bff459d 100644 --- a/circle.yml +++ b/circle.yml @@ -1,8 +1,8 @@ dependencies: pre: - - sudo -u postgres createuser user_testing + - sudo -u postgres createuser user_testing - createdb test test: override: - - eval "$(curl -sL swift.vapor.sh/ci)" + - eval "$(curl -sL swift.vapor.sh/ci-3.1)" From 6ca8025bbbd679b253ab2ae0b4c8f4182579302a Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Tue, 4 Apr 2017 22:08:14 -0400 Subject: [PATCH 07/32] Update travis config with full URLs. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 996cc36..55b635f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,5 +16,5 @@ install: - psql -U postgres -c 'CREATE DATABASE test;' script: - - eval "$(curl -sL swift.vapor.sh/ci-3.1)" - - eval "$(curl -sL swift.vapor.sh/codecov)" + - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" + - eval "$(curl -sL https://swift.vapor.sh/codecov)" From ab250debc59f63c9fefe0e025412146908a1574e Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Tue, 4 Apr 2017 22:47:51 -0400 Subject: [PATCH 08/32] Add full URL for Circle config. --- circle.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circle.yml b/circle.yml index bff459d..3f7be70 100644 --- a/circle.yml +++ b/circle.yml @@ -5,4 +5,4 @@ dependencies: test: override: - - eval "$(curl -sL swift.vapor.sh/ci-3.1)" + - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" From 282a6564f62a3bc65e1824bea4281dd8f06ffd6c Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 07:13:41 -0400 Subject: [PATCH 09/32] Use xcode8.3 image in Travis config. --- .travis.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 55b635f..6666740 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,10 +6,8 @@ matrix: sudo: required services: - postgresql - addons: - postgresql: "9.5" - os: osx - osx_image: xcode8 + osx_image: xcode8.3 install: - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" - "[ $TRAVIS_OS_NAME = osx ] && createuser -s postgres || true" From 4c9d834b096315a986a88a2194319d10526518b0 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 07:21:45 -0400 Subject: [PATCH 10/32] Need to still specify postgres 9.5 --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 6666740..b024adb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,8 @@ matrix: sudo: required services: - postgresql + addons: + postgresql: "9.5" - os: osx osx_image: xcode8.3 install: From d25af1a9003fe2bc88d3bce50300942c605f4109 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 07:28:14 -0400 Subject: [PATCH 11/32] kicking travis and circle. --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b024adb..ed98a60 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,12 +9,11 @@ matrix: addons: postgresql: "9.5" - os: osx - osx_image: xcode8.3 + osx_image: xcode8 install: - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" - "[ $TRAVIS_OS_NAME = osx ] && createuser -s postgres || true" - psql -U postgres -c 'CREATE DATABASE test;' - script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" - eval "$(curl -sL https://swift.vapor.sh/codecov)" From ca16f31f8ebe0510dadae7939e9ff7d16a750b4f Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 07:36:11 -0400 Subject: [PATCH 12/32] move back to xcode8.3 travis config. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ed98a60..658b497 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ matrix: addons: postgresql: "9.5" - os: osx - osx_image: xcode8 + osx_image: xcode8.3 install: - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" - "[ $TRAVIS_OS_NAME = osx ] && createuser -s postgres || true" From 4c1b5f283172caa9ab54bc47cb184657b34c6032 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 07:46:23 -0400 Subject: [PATCH 13/32] Use Postgres 9.6 for travis build because 9.5 isn't compatible with xcdoe8.3 option. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 658b497..d59e32a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ matrix: services: - postgresql addons: - postgresql: "9.5" + postgresql: "9.6" - os: osx osx_image: xcode8.3 install: From 392f54f4f7ff0e439641ed67642870de97cca5cf Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 07:49:47 -0400 Subject: [PATCH 14/32] remove postgres addon config in Travis. --- .travis.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index d59e32a..069e7e9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,3 @@ -language: ruby matrix: include: - os: linux @@ -6,8 +5,6 @@ matrix: sudo: required services: - postgresql - addons: - postgresql: "9.6" - os: osx osx_image: xcode8.3 install: From 2d309b50e0dc62f7d44c12e56df3bdde445605ef Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 07:56:53 -0400 Subject: [PATCH 15/32] Specify the Postgres addon version for macOS. --- .travis.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 069e7e9..d86aca4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,12 +5,16 @@ matrix: sudo: required services: - postgresql + addons: + postgresql: "9.6" - os: osx osx_image: xcode8.3 + addons: + postgresql: "9.6" install: - - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" - - "[ $TRAVIS_OS_NAME = osx ] && createuser -s postgres || true" - - psql -U postgres -c 'CREATE DATABASE test;' + - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" + - "[ $TRAVIS_OS_NAME = osx ] && createuser -s postgres || true" + - psql -U postgres -c 'CREATE DATABASE test;' script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" - eval "$(curl -sL https://swift.vapor.sh/codecov)" From acfceace939dfc9f4e79f02a6bd548f191c8aac7 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 08:24:18 -0400 Subject: [PATCH 16/32] Don't try to start Postgres again. --- .travis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index d86aca4..5bc562c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,8 +12,6 @@ matrix: addons: postgresql: "9.6" install: - - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" - - "[ $TRAVIS_OS_NAME = osx ] && createuser -s postgres || true" - psql -U postgres -c 'CREATE DATABASE test;' script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" From bda3d4fe2118a3dbcb464ddd1d83b26738656308 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 08:35:12 -0400 Subject: [PATCH 17/32] use sudo to create postgres test database. sigh. --- .travis.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5bc562c..4348790 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,16 +3,12 @@ matrix: - os: linux dist: trusty sudo: required - services: - - postgresql addons: postgresql: "9.6" - os: osx osx_image: xcode8.3 - addons: - postgresql: "9.6" install: - - psql -U postgres -c 'CREATE DATABASE test;' + - sudo psql -U postgres -c 'CREATE DATABASE test;' script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" - eval "$(curl -sL https://swift.vapor.sh/codecov)" From 49d5c565d1650e10e3e38b369dfbbf74d3e1c0f3 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 08:38:26 -0400 Subject: [PATCH 18/32] use addon setting in macOS. --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 4348790..15269b3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,8 @@ matrix: postgresql: "9.6" - os: osx osx_image: xcode8.3 + addons: + postgresql: "9.6" install: - sudo psql -U postgres -c 'CREATE DATABASE test;' script: From 74ddbad5039ed7413ea1320138a8d86d30040df5 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 08:46:43 -0400 Subject: [PATCH 19/32] use services instead of addon for postgres. --- .travis.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 15269b3..e8a15bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,14 +3,15 @@ matrix: - os: linux dist: trusty sudo: required - addons: - postgresql: "9.6" + services: + - postgresql - os: osx osx_image: xcode8.3 - addons: - postgresql: "9.6" + services: + - postgresql install: - - sudo psql -U postgres -c 'CREATE DATABASE test;' + - sudo -u postgres createuser -s -p 5432 test_user &>/dev/null + - sudo -u postgres createdb -O test -p 5432 test_user &>/dev/null script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" - eval "$(curl -sL https://swift.vapor.sh/codecov)" From b206f244b00ed9ec33e9a3dea3ce5f6adb9ab706 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 08:55:56 -0400 Subject: [PATCH 20/32] Revert back to xcode8 --- .travis.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index e8a15bf..cfa9bfc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,17 +1,17 @@ +language: ruby matrix: include: - os: linux dist: trusty sudo: required - services: - - postgresql + addons: + postgresql: "9.5" - os: osx - osx_image: xcode8.3 - services: - - postgresql + osx_image: xcode8 install: - - sudo -u postgres createuser -s -p 5432 test_user &>/dev/null - - sudo -u postgres createdb -O test -p 5432 test_user &>/dev/null + - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" + - "[ $TRAVIS_OS_NAME = osx ] && createuser -s postgres || true" + - psql -U postgres -c 'CREATE DATABASE test;' script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" - eval "$(curl -sL https://swift.vapor.sh/codecov)" From 3112aedbe9e2a036c972c4c8f39803a08b575fa3 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 09:02:07 -0400 Subject: [PATCH 21/32] update image to xcode8.3 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index cfa9bfc..106745c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ matrix: addons: postgresql: "9.5" - os: osx - osx_image: xcode8 + osx_image: xcode8.3 install: - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" - "[ $TRAVIS_OS_NAME = osx ] && createuser -s postgres || true" From 7162cc578ce4215265bce679362b5d2736718116 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 09:06:58 -0400 Subject: [PATCH 22/32] use postgres addon 9.5 --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 106745c..84be145 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,8 @@ matrix: postgresql: "9.5" - os: osx osx_image: xcode8.3 + addons: + postgresql: "9.5" install: - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" - "[ $TRAVIS_OS_NAME = osx ] && createuser -s postgres || true" From 6e9e8c09fb0713e0a712c9af961d2291fe6222a0 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 09:43:00 -0400 Subject: [PATCH 23/32] remove extra postgres install lines. --- .travis.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 84be145..745b7d1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,14 +5,10 @@ matrix: dist: trusty sudo: required addons: - postgresql: "9.5" + postgresql: 9.5 - os: osx osx_image: xcode8.3 - addons: - postgresql: "9.5" install: - - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" - - "[ $TRAVIS_OS_NAME = osx ] && createuser -s postgres || true" - psql -U postgres -c 'CREATE DATABASE test;' script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" From 2c3a2c6fbe253312d91d709263266481574dc7d9 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 09:50:10 -0400 Subject: [PATCH 24/32] Try using homebrew to start postgresql. --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 745b7d1..02fe62f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ matrix: - os: osx osx_image: xcode8.3 install: + - "[ $TRAVIS_OS_NAME = osx ] && brew services start postgresql || true" - psql -U postgres -c 'CREATE DATABASE test;' script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" From 0d01b12af0a31d6b3448902793e6544c6d48887d Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 10:04:56 -0400 Subject: [PATCH 25/32] try starting Postgres manually --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 02fe62f..196f81e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,8 @@ matrix: - os: osx osx_image: xcode8.3 install: - - "[ $TRAVIS_OS_NAME = osx ] && brew services start postgresql || true" + - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" + - psql -U postgres -c "create extension postgis" - psql -U postgres -c 'CREATE DATABASE test;' script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" From 757823d65b1c0fa9edfd750a3fd26efd8b2a600d Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 10:34:57 -0400 Subject: [PATCH 26/32] Try initializing a new postgres data directory. --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 196f81e..bb2e382 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ matrix: - os: osx osx_image: xcode8.3 install: + - rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8 - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" - psql -U postgres -c "create extension postgis" - psql -U postgres -c 'CREATE DATABASE test;' From 9682aad39644b897697a009db014c15a82064df6 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 10:50:48 -0400 Subject: [PATCH 27/32] Only call these install commands on macOS and create postgres user. --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index bb2e382..6e7c2b3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,10 +9,11 @@ matrix: - os: osx osx_image: xcode8.3 install: - - rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8 + - "[ $TRAVIS_OS_NAME = osx ] && rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8" - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" - - psql -U postgres -c "create extension postgis" + - "[ $TRAVIS_OS_NAME = osx ] && sudo -u postgres createuser -s -p 5432 postgres &>/dev/null" - psql -U postgres -c 'CREATE DATABASE test;' + - psql -U postgres -c "create extension postgis;" script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" - eval "$(curl -sL https://swift.vapor.sh/codecov)" From 3374c6b819e5625f5df07aa9708a4843f67e811c Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 11:09:29 -0400 Subject: [PATCH 28/32] use the default travis user to create the postgres user. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6e7c2b3..1080e09 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,8 +11,8 @@ matrix: install: - "[ $TRAVIS_OS_NAME = osx ] && rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8" - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" - - "[ $TRAVIS_OS_NAME = osx ] && sudo -u postgres createuser -s -p 5432 postgres &>/dev/null" - - psql -U postgres -c 'CREATE DATABASE test;' + - "[ $TRAVIS_OS_NAME = osx ] && sudo -u travis createuser -s -p 5432 postgres &>/dev/null" + - psql -U postgres -c 'create database test;' - psql -U postgres -c "create extension postgis;" script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" From 142761cd63afe23706c39e2f1b64103e54d32674 Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 11:26:38 -0400 Subject: [PATCH 29/32] Not sure why the create user line is triggering in linux but whatever. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1080e09..c499290 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,9 +11,9 @@ matrix: install: - "[ $TRAVIS_OS_NAME = osx ] && rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8" - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" - - "[ $TRAVIS_OS_NAME = osx ] && sudo -u travis createuser -s -p 5432 postgres &>/dev/null" + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo -u travis createuser -s -p 5432 postgres; fi - psql -U postgres -c 'create database test;' - - psql -U postgres -c "create extension postgis;" + - psql -U postgres -c 'create extension postgis;' script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" - eval "$(curl -sL https://swift.vapor.sh/codecov)" From 8d15a59ac8200366a8f4054a68f17e8f5437a7fa Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 11:31:16 -0400 Subject: [PATCH 30/32] OK. Try a different syntax to avoid install issues on linux. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index c499290..9ad7a2a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,8 +9,8 @@ matrix: - os: osx osx_image: xcode8.3 install: - - "[ $TRAVIS_OS_NAME = osx ] && rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8" - - "[ $TRAVIS_OS_NAME = osx ] && pg_ctl -D /usr/local/var/postgres start && sleep 3 || true" + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8; fi + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then pg_ctl -D /usr/local/var/postgres start && sleep 3 || true; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo -u travis createuser -s -p 5432 postgres; fi - psql -U postgres -c 'create database test;' - psql -U postgres -c 'create extension postgis;' From 379fbc32ecff8a64fd7cecbd6827c9d747f1c09e Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 11:35:30 -0400 Subject: [PATCH 31/32] Skip PostGIS for now. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 9ad7a2a..11a3bad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,7 @@ install: - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then pg_ctl -D /usr/local/var/postgres start && sleep 3 || true; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo -u travis createuser -s -p 5432 postgres; fi - psql -U postgres -c 'create database test;' - - psql -U postgres -c 'create extension postgis;' + # - psql -U postgres -c 'create extension postgis;' script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" - eval "$(curl -sL https://swift.vapor.sh/codecov)" From 754493b9a8f704cd327e3bd844c727c0c81f591a Mon Sep 17 00:00:00 2001 From: Nate Bird Date: Wed, 5 Apr 2017 11:37:46 -0400 Subject: [PATCH 32/32] Remove PostGIS. Travis processes comments. --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 11a3bad..906acbe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,6 @@ install: - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then pg_ctl -D /usr/local/var/postgres start && sleep 3 || true; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo -u travis createuser -s -p 5432 postgres; fi - psql -U postgres -c 'create database test;' - # - psql -U postgres -c 'create extension postgis;' script: - eval "$(curl -sL https://swift.vapor.sh/ci-3.1)" - eval "$(curl -sL https://swift.vapor.sh/codecov)"