Add more docs
This commit is contained in:
@@ -70,32 +70,35 @@ func NetworkAddress(host string, port uint16) (network, address string) {
|
|||||||
// It also may be empty to only read from the environment. If a password is not supplied it will attempt to read the
|
// It also may be empty to only read from the environment. If a password is not supplied it will attempt to read the
|
||||||
// .pgpass file.
|
// .pgpass file.
|
||||||
//
|
//
|
||||||
// Example DSN: "user=jack password=secret host=pg.example.com port=5432 dbname=mydb sslmode=verify-ca"
|
// # Example DSN
|
||||||
|
// user=jack password=secret host=pg.example.com port=5432 dbname=mydb sslmode=verify-ca
|
||||||
//
|
//
|
||||||
// Example URL: "postgres://jack:secret@pg.example.com:5432/mydb?sslmode=verify-ca"
|
// # Example URL
|
||||||
|
// postgres://jack:secret@pg.example.com:5432/mydb?sslmode=verify-ca
|
||||||
//
|
//
|
||||||
// ParseConfig supports specifying multiple hosts in similar manner to libpq. Host and port may include comma separated
|
// ParseConfig supports specifying multiple hosts in similar manner to libpq. Host and port may include comma separated
|
||||||
// values that will be tried in order. This can be used as part of a high availability system. See
|
// values that will be tried in order. This can be used as part of a high availability system. See
|
||||||
// https://www.postgresql.org/docs/11/libpq-connect.html#LIBPQ-MULTIPLE-HOSTS for more information.
|
// https://www.postgresql.org/docs/11/libpq-connect.html#LIBPQ-MULTIPLE-HOSTS for more information.
|
||||||
//
|
//
|
||||||
// Example URL: "postgres://jack:secret@foo.example.com:5432,bar.example.com:5432/mydb"
|
// # Example URL
|
||||||
|
// postgres://jack:secret@foo.example.com:5432,bar.example.com:5432/mydb
|
||||||
//
|
//
|
||||||
// ParseConfig currently recognizes the following environment variable and their parameter key word equivalents passed
|
// ParseConfig currently recognizes the following environment variable and their parameter key word equivalents passed
|
||||||
// via database URL or DSN:
|
// via database URL or DSN:
|
||||||
//
|
//
|
||||||
// PGHOST
|
// PGHOST
|
||||||
// PGPORT
|
// PGPORT
|
||||||
// PGDATABASE
|
// PGDATABASE
|
||||||
// PGUSER
|
// PGUSER
|
||||||
// PGPASSWORD
|
// PGPASSWORD
|
||||||
// PGPASSFILE
|
// PGPASSFILE
|
||||||
// PGSSLMODE
|
// PGSSLMODE
|
||||||
// PGSSLCERT
|
// PGSSLCERT
|
||||||
// PGSSLKEY
|
// PGSSLKEY
|
||||||
// PGSSLROOTCERT
|
// PGSSLROOTCERT
|
||||||
// PGAPPNAME
|
// PGAPPNAME
|
||||||
// PGCONNECT_TIMEOUT
|
// PGCONNECT_TIMEOUT
|
||||||
// PGTARGETSESSIONATTRS
|
// PGTARGETSESSIONATTRS
|
||||||
//
|
//
|
||||||
// See http://www.postgresql.org/docs/11/static/libpq-envars.html for details on the meaning of environment variables.
|
// See http://www.postgresql.org/docs/11/static/libpq-envars.html for details on the meaning of environment variables.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
// Package pgconn is a low-level PostgreSQL database driver.
|
||||||
|
/*
|
||||||
|
pgconn provides lower level access to a PostgreSQL connection than a database/sql or pgx connection. It operates at
|
||||||
|
nearly the same level is the C library libpq.
|
||||||
|
|
||||||
|
Establishing a Connection
|
||||||
|
|
||||||
|
Use Connect to establish a connection. It accepts a connection string in URL or DSN and will read the environment for
|
||||||
|
libpq style environment variables.
|
||||||
|
|
||||||
|
Executing a Query
|
||||||
|
|
||||||
|
ExecParams and ExecPrepared execute a single query. They return readers that iterate over each row. The Read method
|
||||||
|
reads all rows into memory.
|
||||||
|
|
||||||
|
Executing Multiple Queries in a Single Round Trip
|
||||||
|
|
||||||
|
Exec and ExecBatch can execute multiple queries in a single round trip. The return readers that iterate over each query
|
||||||
|
result. The ReadAll method reads all query results into memory.
|
||||||
|
|
||||||
|
Context Support
|
||||||
|
|
||||||
|
All potentially blocking operations take a context.Context. If a context is canceled while a query is in progress the
|
||||||
|
method immediately returns. In the background a cancel request will be sent to the PostgreSQL server. If the
|
||||||
|
cancellation fails or hangs for more than a short time (approximately 15 seconds) the connection will be closed. It is
|
||||||
|
safe to use the connection while this background cancellation is in progress. Any calls will block until the
|
||||||
|
cancellation and resynchronization is complete (and those calls can be aborted by a context cancellation).
|
||||||
|
*/
|
||||||
|
package pgconn
|
||||||
@@ -685,6 +685,7 @@ func (pgConn *PgConn) ExecPrepared(ctx context.Context, stmtName string, paramVa
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MultiResultReader is a reader for a command that could return multiple results such as Exec or ExecBatch.
|
||||||
type MultiResultReader struct {
|
type MultiResultReader struct {
|
||||||
pgConn *PgConn
|
pgConn *PgConn
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
@@ -696,6 +697,7 @@ type MultiResultReader struct {
|
|||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReadAll reads all available results. Calling ReadAll is mutually exclusive with all other MultiResultReader methods.
|
||||||
func (mrr *MultiResultReader) ReadAll() ([]*Result, error) {
|
func (mrr *MultiResultReader) ReadAll() ([]*Result, error) {
|
||||||
var results []*Result
|
var results []*Result
|
||||||
|
|
||||||
@@ -769,10 +771,12 @@ func (mrr *MultiResultReader) NextResult() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ResultReader returns the current ResultReader.
|
||||||
func (mrr *MultiResultReader) ResultReader() *ResultReader {
|
func (mrr *MultiResultReader) ResultReader() *ResultReader {
|
||||||
return mrr.rr
|
return mrr.rr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Close closes the MultiResultReader and returns the first error that occurred during the MultiResultReader's use.
|
||||||
func (mrr *MultiResultReader) Close() error {
|
func (mrr *MultiResultReader) Close() error {
|
||||||
for !mrr.closed {
|
for !mrr.closed {
|
||||||
_, err := mrr.receiveMessage()
|
_, err := mrr.receiveMessage()
|
||||||
@@ -784,6 +788,7 @@ func (mrr *MultiResultReader) Close() error {
|
|||||||
return mrr.err
|
return mrr.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ResultReader is a reader for the result of a single query.
|
||||||
type ResultReader struct {
|
type ResultReader struct {
|
||||||
pgConn *PgConn
|
pgConn *PgConn
|
||||||
multiResultReader *MultiResultReader
|
multiResultReader *MultiResultReader
|
||||||
@@ -798,6 +803,7 @@ type ResultReader struct {
|
|||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Result is the saved query response that is returned by calling Read on a ResultReader.
|
||||||
type Result struct {
|
type Result struct {
|
||||||
FieldDescriptions []pgproto3.FieldDescription
|
FieldDescriptions []pgproto3.FieldDescription
|
||||||
Rows [][][]byte
|
Rows [][][]byte
|
||||||
@@ -805,6 +811,7 @@ type Result struct {
|
|||||||
Err error
|
Err error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read saves the query response to a Result.
|
||||||
func (rr *ResultReader) Read() *Result {
|
func (rr *ResultReader) Read() *Result {
|
||||||
br := &Result{}
|
br := &Result{}
|
||||||
|
|
||||||
@@ -1003,7 +1010,8 @@ func (batch *Batch) ExecPrepared(stmtName string, paramValues [][]byte, paramFor
|
|||||||
batch.buf = (&pgproto3.Execute{}).Encode(batch.buf)
|
batch.buf = (&pgproto3.Execute{}).Encode(batch.buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExecBatch executes all the queries in batch in a single round-trip.
|
// ExecBatch executes all the queries in batch in a single round-trip. Execution is implicitly transactional unless a
|
||||||
|
// transaction is already in progress or SQL contains transaction control statements.
|
||||||
func (pgConn *PgConn) ExecBatch(ctx context.Context, batch *Batch) *MultiResultReader {
|
func (pgConn *PgConn) ExecBatch(ctx context.Context, batch *Batch) *MultiResultReader {
|
||||||
multiResult := &MultiResultReader{
|
multiResult := &MultiResultReader{
|
||||||
pgConn: pgConn,
|
pgConn: pgConn,
|
||||||
|
|||||||
Reference in New Issue
Block a user