Jack Christensen
aff5043df9
Added a lot of documentation
2014-07-12 21:17:38 -05:00
Jack Christensen
4fbd76bee5
Make MsgReader private
2014-07-12 20:08:17 -05:00
Jack Christensen
1cb3ac91f3
EncodeBinary checks oid of param
2014-07-12 09:46:33 -05:00
Jack Christensen
ed2b3b3b49
Add timestamp support
...
But not to NullTime because of text vs binary encoding difficulties.
You really should never use timestamp anyway.
2014-07-12 09:33:49 -05:00
Jack Christensen
c108378973
Reorganize code
2014-07-12 08:50:30 -05:00
Jack Christensen
713a8f48a7
Failing to write to Conn.conn kills Conn
2014-07-12 08:04:09 -05:00
Jack Christensen
ae6a87545b
Use database/sql style transaction interface
2014-07-12 07:59:30 -05:00
Jack Christensen
f31665c5db
wip
2014-07-12 07:11:16 -05:00
Jack Christensen
19537badff
Add Rows.Values
2014-07-11 16:55:45 -05:00
Jack Christensen
6c1c819a5e
Error detection for mismatched types
2014-07-11 16:07:08 -05:00
Jack Christensen
4bdefced66
Add NullTime
2014-07-11 15:25:26 -05:00
Jack Christensen
7ca95d7f73
Add NullString
...
Changes EncodeText interface to work for null values in SQL interpolation
and in prepared statements text format.
2014-07-11 14:16:25 -05:00
Jack Christensen
24395d98df
Add more testing of Encode*
...
Handle case where TextEncoder is used to a core type that the driver
could otherwise have handled as binary.
2014-07-11 11:16:12 -05:00
Jack Christensen
646136fb44
Rename *Rows.NextRow to *Rows.Next
...
Conform closer to database/sql
2014-07-11 08:26:01 -05:00
Jack Christensen
d7529600e0
Rename QueryResult to Rows
...
This helps conform closer to database/sql
2014-07-11 08:21:29 -05:00
Jack Christensen
01f261c71c
Conform closer to database/sql style and add no rows test
2014-07-11 08:16:21 -05:00
Jack Christensen
566d713285
More tests and bug fixes
2014-07-11 07:50:44 -05:00
Jack Christensen
efeaf10a2a
Make nextColumn private
2014-07-10 08:13:19 -05:00
Jack Christensen
7d97dca9b1
Remove unused function
2014-07-09 08:23:38 -05:00
Jack Christensen
6ae7f63d00
Remove UnexpectedColumnCountError
2014-07-09 08:18:09 -05:00
Jack Christensen
009cdfa0b1
Use Scan and Encode* instead of ValueTranscoders
2014-07-09 07:56:48 -05:00
Jack Christensen
43dcd47a92
Move to Scan interface
...
Remove SelectValue
2014-07-05 18:23:19 -05:00
Jack Christensen
5b345e80e1
Remove SelectValueTo
...
Benchmarks revealed that it is no longer performant enough to pull
its own wait. Using go_db_bench to copy JSON results to HTTP responses
it was ~20% *slower* for ~4BK responses and less than 10% faster for
+1MB responses.
The the performance problem was in io.CopyN / io.Copy. io.Copy
allocates a 32KB buffer if it doesn't have io.WriterTo or io.ReaderFrom
available. This extra alloc on every request was more expensive than
just reading the result into a string and writing it out to the response
body.
Tests indicated that if MsgReader implemented a custom Copy that used a
shared buffer it might have a few percent performance advantage. But the
additional complexity is not worth the performance gain.
2014-07-05 09:32:47 -05:00
Jack Christensen
b27d828311
Add RowReader.CopyBytes
...
Implement SelectValueTo in terms of RowReader.CopyBytes
2014-07-05 07:51:32 -05:00
Jack Christensen
7083c51689
Finish migration to writeBuf
2014-07-04 13:34:27 -05:00
Jack Christensen
81cc33f1ed
Use writeBuf more
2014-07-04 13:29:23 -05:00
Jack Christensen
9ab8fb4877
Partially migrate to writeBuf
2014-07-04 13:27:24 -05:00
Jack Christensen
b25aea5c52
MsgReader no longer uses double buffering
2014-07-04 13:08:37 -05:00
Jack Christensen
78b8e0b6f2
Safely handle bad reads of QueryResult
2014-06-30 19:01:36 -05:00
Jack Christensen
718c4dfdc8
Add *RowReader.ReadInt64
2014-06-30 08:14:13 -05:00
Jack Christensen
d30ef1b8b9
Replace SelectFunc with Query as core
2014-06-28 17:07:31 -05:00
Jack Christensen
b6ac3ef2b0
Rename Execute to Exec
2014-06-27 14:56:27 -05:00
Jack Christensen
aeb6cea1cf
Replace binary.Read
...
It does memory allocs that can be avoided by passing a slice directly to
binary.BigEndian.*
2014-06-27 08:20:15 -05:00
Jack Christensen
e8f367ede4
Use flyweight for DataRowReader
2014-06-27 08:00:32 -05:00
Jack Christensen
84dd626bcc
Make MessageReader a type of bytes.Buffer
2014-06-26 18:12:30 -05:00
Jack Christensen
3706b9519f
Do not defer in rxMsgHeader
...
Slightly faster.
2014-06-26 08:39:29 -05:00
Jack Christensen
aa6e9d0ddf
Improve prepared statement performance
...
* Do not use bufio.Writer - use net.Conn directly
* Use byte slice instead of bytes.Buffer when building query message
* Use binary.BigEndian.* instead of binary.Write
2014-06-23 18:26:15 -05:00
Jack Christensen
7d0e178424
Determine automatically if Host is socket
...
Instead of requiring user to specify either Host or Socket unify these fields.
It can be automatically determined whether it is a socket or not.
2014-06-21 12:53:38 -05:00
Jack Christensen
d9522a4741
Inform database/sql when connections die
2014-06-20 16:33:51 -05:00
Jack Christensen
7a8e80ac0d
Make Conn Close idempotent
...
* die (which is called by Close) now closes underlying connection
2014-06-20 14:50:36 -05:00
Jack Christensen
247fd3be53
Fix CommandTag RowsAffected for INSERT
2014-06-20 13:38:01 -05:00
Jack Christensen
4efa61bf5b
Prepare returns *PreparedStatement
2014-06-20 10:47:31 -05:00
Jack Christensen
cc445627b0
Expose DataRowReader FieldDescriptions
2014-06-20 10:46:47 -05:00
Jack Christensen
772c6ca7d7
Remove MessageWriter
2014-06-19 18:10:04 -05:00
Jack Christensen
3b9a1ce659
ValueTranscoder EncodeTo now receives io.Writer
2014-06-19 17:48:26 -05:00
Jack Christensen
884252675e
Handle ValueTranscoder EncodeTo returns error on bad type
...
Instead of panicking
2014-06-19 08:03:14 -05:00
Jack Christensen
5fe3dd7ecf
Reduce nesting in message loops
2014-06-17 16:39:44 -05:00
Jack Christensen
928612917d
Fix a couple go vet discovered issues
2014-06-11 07:59:43 -05:00
Jack Christensen
b982aeb102
Improve logging some more
2014-06-05 17:36:40 -05:00
Jack Christensen
ad88123f9c
Improve logging
2014-06-04 09:31:54 -05:00