(v *pq.Value)
| 25 | } |
| 26 | |
| 27 | func (i *Interner) UnsafeClone(v *pq.Value) pq.Value { |
| 28 | switch v.Kind() { |
| 29 | case pq.ByteArray, pq.FixedLenByteArray: |
| 30 | // This is unsafe but validated by tests. |
| 31 | a := *(*pqValue)(unsafe.Pointer(v)) |
| 32 | a.ptr = addressOfBytes(i.internBytes(a.byteArray())) |
| 33 | return *(*pq.Value)(unsafe.Pointer(&a)) |
| 34 | default: |
| 35 | return *v |
| 36 | } |
| 37 | } |
| 38 | |
| 39 | func (i *Interner) internBytes(b []byte) []byte { |
| 40 | if x, ok := i.m[bytesToString(b)]; ok { |