| 212 | } |
| 213 | |
| 214 | func (j *joinImpl) checkInput() error { |
| 215 | if len(j.tables) < 2 { |
| 216 | return ErrNotEnoughDatatables |
| 217 | } |
| 218 | for i, t := range j.tables { |
| 219 | if t == nil || len(t.Name()) == 0 || t.NumCols() == 0 { |
| 220 | err := errors.Errorf("table #%d is nil", i) |
| 221 | return errors.Wrap(err, ErrNilTable.Error()) |
| 222 | } |
| 223 | } |
| 224 | if len(j.on) == 0 { |
| 225 | return ErrNoOnClauses |
| 226 | } |
| 227 | for i, o := range j.on { |
| 228 | if len(o.Field) == 0 { |
| 229 | err := errors.Errorf("on #%d is nil", i) |
| 230 | return errors.Wrap(err, ErrOnClauseIsNil.Error()) |
| 231 | } |
| 232 | } |
| 233 | return nil |
| 234 | } |
| 235 | |
| 236 | func (j *joinImpl) initColMapper() { |
| 237 | mcols := make(map[string][]string) |