Reimplement case-insensitivity move bug fix (#3047)

* Use eq for FindByPath for case sensitivity
* Handle case sensitive moves
This commit is contained in:
WithoutPants
2022-10-25 11:37:54 +11:00
committed by GitHub
parent 1c92336798
commit 479ebfc88d
4 changed files with 33 additions and 5 deletions

View File

@@ -586,10 +586,20 @@ func (qb *FileStore) FindByPath(ctx context.Context, p string) (file.File, error
table := qb.table()
folderTable := folderTableMgr.table
q := qb.selectDataset().Prepared(true).Where(
folderTable.Col("path").Like(dirName),
table.Col("basename").Like(basename),
)
// like uses case-insensitive matching. Only use like if wildcards are used
q := qb.selectDataset().Prepared(true)
if strings.Contains(basename, "%") || strings.Contains(dirName, "%") {
q = q.Where(
folderTable.Col("path").Like(dirName),
table.Col("basename").Like(basename),
)
} else {
q = q.Where(
folderTable.Col("path").Eq(dirName),
table.Col("basename").Eq(basename),
)
}
ret, err := qb.get(ctx, q)
if err != nil && !errors.Is(err, sql.ErrNoRows) {