Skip tests for connection types that are not configured. Windows cannot test Unix domain socket connections. Setting up a testĮnvironment that can test all of them can be cumbersome. Pgx supports multiple connection and authentication types. Pgx includes extensive documentation in the godoc format. pgproto3 and pgmock together provide most of the foundational tooling required to implement a PostgreSQL proxy or MitM (such as for a custom connection pooler). This is used internally to test pgx by purposely inducing unusual errors. Pgmock offers the ability to create a server that mocks the PostgreSQL wire protocol. This is useful for implementing very low level PostgreSQL tooling. Pgproto3 provides standalone encoding and decoding of the PostgreSQL v3 wire protocol. They also support a higher performance interface when used with the pgx driver. These types support database/sql interfaces and are usable even outside of pgx. jackc/pgx/pgtypeĪpproximately 60 PostgreSQL types are supported including uuid, hstore, json, bytea, numeric, interval, inet, and arrays. pgx can be used as a normal database/sql driver, but at any time the native interface may be acquired for more performance or PostgreSQL specific functionality. jackc/pgx/stdlibĭatabase/sql compatibility layer for pgx. In addition to the native driver, pgx also includes a number of packages that provide additional functionality. See this gist for the underlying benchmark results or checkout go_db_bench to run tests for yourself. With a typical network connection the results can be even more substantial. Even in the case of a connection with the lowest possible latency, a local Unix domain socket, batching as few as three queries together can yield an improvement of 57%. pgx supports query batching to bundle multiple queries into a single round trip. In many use cases a significant cause of latency is network round trips between the application and the server. When parsing large result sets the percentage difference can be significant (16483 queries/sec for pgx vs. Pgx performs roughly equivalent to go-pg and is almost always faster than pq. Notice response handling (this is different than listen / notify).Logical replication connections, including receiving WAL and sending standby status updates.Supports database/sql.Scanner and database/sql/driver.Valuer interfaces for custom types.NULL mapping to Null* struct or pointer to pointer.Maps inet and cidr PostgreSQL types to net.IPNet and net.IP.PostgreSQL array to Go slice mapping for integers, floats, and strings.Connection pool with after connect hook to do arbitrary connection setup.Extendable logging support including built-in support for log15 and logrus.Copy protocol support for faster bulk data loads.Binary format support for custom types (can be much faster).Support for approximately 60 different PostgreSQL types.Pgx supports many additional features beyond what is available through database/sql. var name stringĮrr := conn.QueryRow("select name, weight from widgets where id=$1", 42).Scan(&name, &weight) It offers a native interface similar to database/sql that offers better performance and more features. pgx is different from other drivers such as pq because, while it can operate as a database/sql compatible driver, pgx is also usable directly. Pgx is a pure Go driver and toolkit for PostgreSQL. (tx) ExecEx(ctx, sql, options, arguments) (tx) CopyFrom(tableName, columnNames, rowSrc) (rc) StartReplication(slotName, startLsn, timeline, pluginArguments) (rc) CreateReplicationSlotEx(slotName, outputPlugin) (rc) CreateReplicationSlot(slotName, outputPlugin) (p) CopyFrom(tableName, columnNames, rowSrc) (c) CopyFrom(tableName, columnNames, rowSrc) (b) Queue(query, arguments, parameterOIDs, resultFormatCodes) Connection and Authentication Test Environment
0 Comments
Leave a Reply. |