func (n *scanNode) unmarshalValue(kv client.KeyValue) (parser.Datum, bool) { kind, ok := n.colKind[n.colID] if !ok { n.err = fmt.Errorf("column-id \"%d\" does not exist", n.colID) return nil, false } if kv.Exists() { switch kind { case ColumnType_INT: return parser.DInt(kv.ValueInt()), true case ColumnType_BOOL: return parser.DBool(kv.ValueInt() != 0), true case ColumnType_FLOAT: return parser.DFloat(math.Float64frombits(uint64(kv.ValueInt()))), true case ColumnType_STRING, ColumnType_BYTES: return parser.DString(kv.ValueBytes()), true case ColumnType_DATE: var t time.Time if err := t.UnmarshalBinary(kv.ValueBytes()); err != nil { return nil, false } return parser.DDate{Time: t}, true case ColumnType_TIMESTAMP: var t time.Time if err := t.UnmarshalBinary(kv.ValueBytes()); err != nil { return nil, false } return parser.DTimestamp{Time: t}, true case ColumnType_INTERVAL: return parser.DInterval{Duration: time.Duration(kv.ValueInt())}, true } } return parser.DNull, true }
func unmarshalValue(col structured.ColumnDescriptor, kv client.KeyValue) parser.Datum { if kv.Exists() { switch col.Type.Kind { case structured.ColumnType_BIT, structured.ColumnType_INT: return parser.DInt(kv.ValueInt()) case structured.ColumnType_FLOAT: return parser.DFloat(math.Float64frombits(uint64(kv.ValueInt()))) case structured.ColumnType_CHAR, structured.ColumnType_TEXT, structured.ColumnType_BLOB: return parser.DString(kv.ValueBytes()) } } return parser.DNull }
func unmarshalValue(col structured.ColumnDescriptor, kv client.KeyValue) driver.Value { if !kv.Exists() { return nil } switch col.Type.Kind { case structured.ColumnType_BIT, structured.ColumnType_INT: return kv.ValueInt() case structured.ColumnType_FLOAT: return math.Float64frombits(uint64(kv.ValueInt())) case structured.ColumnType_CHAR, structured.ColumnType_BINARY, structured.ColumnType_TEXT, structured.ColumnType_BLOB: // TODO(pmattis): The conversion to string isn't strictly necessary, but // makes log messages more readable right now. return string(kv.ValueBytes()) } return kv.ValueBytes() }
func (n *scanNode) unmarshalValue(kv client.KeyValue) (parser.Datum, bool) { kind, ok := n.colKind[n.colID] if !ok { n.err = fmt.Errorf("column-id \"%d\" does not exist", n.colID) return nil, false } if kv.Exists() { switch kind { case ColumnType_INT: return parser.DInt(kv.ValueInt()), true case ColumnType_BOOL: return parser.DBool(kv.ValueInt() != 0), true case ColumnType_FLOAT: return parser.DFloat(math.Float64frombits(uint64(kv.ValueInt()))), true case ColumnType_STRING, ColumnType_BYTES: return parser.DString(kv.ValueBytes()), true } } return parser.DNull, true }
func unmarshalValue(col structured.ColumnDescriptor, kv client.KeyValue) sqlwire.Datum { var d sqlwire.Datum if !kv.Exists() { return d } switch col.Type.Kind { case structured.ColumnType_BIT, structured.ColumnType_INT: tmp := kv.ValueInt() d.IntVal = &tmp case structured.ColumnType_FLOAT: tmp := math.Float64frombits(uint64(kv.ValueInt())) d.FloatVal = &tmp case structured.ColumnType_CHAR, structured.ColumnType_TEXT, structured.ColumnType_BLOB: // TODO(pmattis): The conversion to string isn't strictly necessary, but // makes log messages more readable right now. tmp := string(kv.ValueBytes()) d.StringVal = &tmp } return d }