internal/protocol/session.go
func (s *Session) Query(stmtID uint64, prmFieldSet *ParameterFieldSet, resultFieldSet *ResultFieldSet, args []driver.NamedValue) (uint64, *FieldValues, PartAttributes, error) {
	s.mu.Lock()
	defer s.mu.Unlock()

	s.statementID.id = &stmtID
	if err := s.writeRequest(mtExecute, false, s.statementID, newInputParameters(prmFieldSet.inputFields(), args)); err != nil {
		return 0, nil, nil, err
	}

	var rsetID uint64
	fieldValues := newFieldValues()

	f := func(p replyPart) {

		switch p := p.(type) {

		case *resultsetID:
			p.id = &rsetID
		case *resultset:
			p.s = s
			p.resultFieldSet = resultFieldSet
			p.fieldValues = fieldValues
		}
	}

	if err := s.readReply(f); err != nil {
		return 0, nil, nil, err
	}

	return rsetID, fieldValues, s.ph.partAttributes, nil
}
func (s *Session) Query(stmtID uint64, prmFieldSet *ParameterFieldSet, resultFieldSet *ResultFieldSet, args []driver.NamedValue) (uint64, *FieldValues, PartAttributes, error) {
	s.mu.Lock()
	defer s.mu.Unlock()

	s.statementID.id = &stmtID
	if err := s.writeRequest(mtExecute, false, s.statementID, newInputParameters(prmFieldSet.inputFields(), args)); err != nil {
		return 0, nil, nil, err
	}

	var rsetID uint64
	fieldValues := newFieldValues()

	f := func(p replyPart) {

		switch p := p.(type) {

		case *resultsetID:
			p.id = &rsetID
		case *resultset:
			p.s = s
			p.resultFieldSet = resultFieldSet
			p.fieldValues = fieldValues
		}
	}

	if err := s.readReply(f); err != nil {
		return 0, nil, nil, err
	}

	return rsetID, fieldValues, s.ph.partAttributes, nil
}
func ( s * Session ) Query ( stmtID uint64 , prmFieldSet * ParameterFieldSet , resultFieldSet * ResultFieldSet , args [ ] driver . NamedValue ) ( uint64 , * FieldValues , PartAttributes , error ) { s . mu . Lock ( ) defer s . mu . Unlock ( ) s . statementID . id = & stmtID if err := s . writeRequest ( mtExecute , false , s . statementID , newInputParameters ( prmFieldSet . inputFields ( ) , args ) ) ; err != nil { return 0 , nil , nil , err } var rsetID uint64 fieldValues := newFieldValues ( ) f := func ( p replyPart ) { switch p := p . ( type ) { case * resultsetID : p . id = & rsetID case * resultset : p . s = s p . resultFieldSet = resultFieldSet p . fieldValues = fieldValues } } if err := s . readReply ( f ) ; err != nil { return 0 , nil , nil , err } return rsetID , fieldValues , s . ph . partAttributes , nil }
// Query executes a query.
Query executes a query .