@@ -665,47 +665,41 @@ func (stmt *Statement) SelectAndOmitColumns(requireCreate, requireUpdate bool) (
665665	results  :=  map [string ]bool {}
666666	notRestricted  :=  false 
667667
668- 	// select columns 
669- 	for  _ , column  :=  range  stmt .Selects  {
668+ 	processColumn  :=  func (column  string , result  bool ) {
670669		if  stmt .Schema  ==  nil  {
671- 			results [column ] =  true 
670+ 			results [column ] =  result 
672671		} else  if  column  ==  "*"  {
673- 			notRestricted  =  true 
672+ 			notRestricted  =  result 
674673			for  _ , dbName  :=  range  stmt .Schema .DBNames  {
675- 				results [dbName ] =  true 
674+ 				results [dbName ] =  result 
676675			}
677676		} else  if  column  ==  clause .Associations  {
678677			for  _ , rel  :=  range  stmt .Schema .Relationships .Relations  {
679- 				results [rel .Name ] =  true 
678+ 				results [rel .Name ] =  result 
680679			}
681680		} else  if  field  :=  stmt .Schema .LookUpField (column ); field  !=  nil  &&  field .DBName  !=  ""  {
682- 			results [field .DBName ] =  true 
681+ 			results [field .DBName ] =  result 
683682		} else  if  matches  :=  nameMatcher .FindStringSubmatch (column ); len (matches ) ==  3  &&  (matches [1 ] ==  stmt .Table  ||  matches [1 ] ==  "" ) {
684- 			results [matches [2 ]] =  true 
683+ 			if  matches [2 ] ==  "*"  {
684+ 				for  _ , dbName  :=  range  stmt .Schema .DBNames  {
685+ 					results [dbName ] =  result 
686+ 				}
687+ 			} else  {
688+ 				results [matches [2 ]] =  result 
689+ 			}
685690		} else  {
686- 			results [column ] =  true 
691+ 			results [column ] =  result 
687692		}
688693	}
689694
695+ 	// select columns 
696+ 	for  _ , column  :=  range  stmt .Selects  {
697+ 		processColumn (column , true )
698+ 	}
699+ 
690700	// omit columns 
691- 	for  _ , omit  :=  range  stmt .Omits  {
692- 		if  stmt .Schema  ==  nil  {
693- 			results [omit ] =  false 
694- 		} else  if  omit  ==  "*"  {
695- 			for  _ , dbName  :=  range  stmt .Schema .DBNames  {
696- 				results [dbName ] =  false 
697- 			}
698- 		} else  if  omit  ==  clause .Associations  {
699- 			for  _ , rel  :=  range  stmt .Schema .Relationships .Relations  {
700- 				results [rel .Name ] =  false 
701- 			}
702- 		} else  if  field  :=  stmt .Schema .LookUpField (omit ); field  !=  nil  &&  field .DBName  !=  ""  {
703- 			results [field .DBName ] =  false 
704- 		} else  if  matches  :=  nameMatcher .FindStringSubmatch (omit ); len (matches ) ==  2  {
705- 			results [matches [1 ]] =  false 
706- 		} else  {
707- 			results [omit ] =  false 
708- 		}
701+ 	for  _ , column  :=  range  stmt .Omits  {
702+ 		processColumn (column , false )
709703	}
710704
711705	if  stmt .Schema  !=  nil  {
0 commit comments