Fix sqlserver test

This commit is contained in:
Lunny Xiao 2023-07-12 15:20:28 +08:00
parent 3ad26fe085
commit 68b90c823e
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
1 changed files with 10 additions and 13 deletions

View File

@ -277,11 +277,6 @@ func (statement *Statement) writeMssqlPaginationCond(w *builder.BytesWriter) err
return errors.New("unsupported query limit without reference table") return errors.New("unsupported query limit without reference table")
} }
mssqlCondi := builder.NewWriter()
if err := statement.writeTop(mssqlCondi); err != nil {
return err
}
var column string var column string
if len(statement.RefTable.PKColumns()) == 0 { if len(statement.RefTable.PKColumns()) == 0 {
for _, index := range statement.RefTable.Indexes { for _, index := range statement.RefTable.Indexes {
@ -303,28 +298,30 @@ func (statement *Statement) writeMssqlPaginationCond(w *builder.BytesWriter) err
column = fmt.Sprintf("%s.%s", statement.TableName(), column) column = fmt.Sprintf("%s.%s", statement.TableName(), column)
} }
} }
if _, err := fmt.Fprintf(mssqlCondi, "(%s NOT IN (SELECT TOP %d %s",
subWriter := builder.NewWriter()
if _, err := fmt.Fprintf(subWriter, "(%s NOT IN (SELECT TOP %d %s",
column, statement.Start, column); err != nil { column, statement.Start, column); err != nil {
return err return err
} }
if err := statement.writeFrom(mssqlCondi); err != nil { if err := statement.writeFrom(subWriter); err != nil {
return err return err
} }
if statement.cond.IsValid() { if statement.cond.IsValid() {
if _, err := fmt.Fprint(w, " WHERE "); err != nil { if _, err := fmt.Fprint(subWriter, " WHERE "); err != nil {
return err return err
} }
if err := statement.cond.WriteTo(statement.QuoteReplacer(w)); err != nil { if err := statement.cond.WriteTo(statement.QuoteReplacer(subWriter)); err != nil {
return err return err
} }
} }
if err := statement.WriteOrderBy(mssqlCondi); err != nil { if err := statement.WriteOrderBy(subWriter); err != nil {
return err return err
} }
if err := statement.writeGroupBy(mssqlCondi); err != nil { if err := statement.writeGroupBy(subWriter); err != nil {
return err return err
} }
if _, err := fmt.Fprint(mssqlCondi, "))"); err != nil { if _, err := fmt.Fprint(subWriter, "))"); err != nil {
return err return err
} }
@ -338,7 +335,7 @@ func (statement *Statement) writeMssqlPaginationCond(w *builder.BytesWriter) err
} }
} }
return utils.WriteBuilder(w, mssqlCondi) return utils.WriteBuilder(w, subWriter)
} }
func (statement *Statement) writeOracleLimit(w *builder.BytesWriter, columnStr string) error { func (statement *Statement) writeOracleLimit(w *builder.BytesWriter, columnStr string) error {