From 6d811bcb14eb7199452d2673a6c30412989f7498 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Wed, 18 Dec 2019 14:07:36 +0100 Subject: [PATCH] Hide not allowed Reactions (#9387) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Hide not allowed Reactions * filter in query :D * use ` Co-Authored-By: Alexey 〒erentyev * update xorm v0.8.0 -> v0.8.1 --- go.mod | 2 +- go.sum | 2 + integrations/api_issue_reaction_test.go | 10 +- models/issue_reaction.go | 1 + vendor/modules.txt | 2 +- vendor/xorm.io/xorm/.drone.yml | 513 ++++-------------------- vendor/xorm.io/xorm/engine.go | 47 ++- vendor/xorm.io/xorm/session.go | 24 +- vendor/xorm.io/xorm/session_raw.go | 4 +- vendor/xorm.io/xorm/session_update.go | 17 +- 10 files changed, 150 insertions(+), 472 deletions(-) diff --git a/go.mod b/go.mod index e50f7a5eb..8e605720c 100644 --- a/go.mod +++ b/go.mod @@ -111,5 +111,5 @@ require ( strk.kbt.io/projects/go/libravatar v0.0.0-20191008002943-06d1c002b251 xorm.io/builder v0.3.6 xorm.io/core v0.7.2 - xorm.io/xorm v0.8.0 + xorm.io/xorm v0.8.1 ) diff --git a/go.sum b/go.sum index e05834f87..b3ca74e82 100644 --- a/go.sum +++ b/go.sum @@ -791,3 +791,5 @@ xorm.io/core v0.7.2 h1:mEO22A2Z7a3fPaZMk6gKL/jMD80iiyNwRrX5HOv3XLw= xorm.io/core v0.7.2/go.mod h1:jJfd0UAEzZ4t87nbQYtVjmqpIODugN6PD2D9E+dJvdM= xorm.io/xorm v0.8.0 h1:iALxgJrX8O00f8Jk22GbZwPmxJNgssV5Mv4uc2HL9PM= xorm.io/xorm v0.8.0/go.mod h1:ZkJLEYLoVyg7amJK/5r779bHyzs2AU8f8VMiP6BM7uY= +xorm.io/xorm v0.8.1 h1:4f2KXuQxVdaX3RdI3Fw81NzMiSpZeyCZt8m3sEVeIkQ= +xorm.io/xorm v0.8.1/go.mod h1:ZkJLEYLoVyg7amJK/5r779bHyzs2AU8f8VMiP6BM7uY= diff --git a/integrations/api_issue_reaction_test.go b/integrations/api_issue_reaction_test.go index f3fcf3946..c474f7bad 100644 --- a/integrations/api_issue_reaction_test.go +++ b/integrations/api_issue_reaction_test.go @@ -26,7 +26,6 @@ func TestAPIIssuesReactions(t *testing.T) { session := loginUser(t, owner.Name) token := getTokenForLoggedInUser(t, session) - user1 := models.AssertExistsAndLoadBean(t, &models.User{ID: 1}).(*models.User) user2 := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User) urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/issues/%d/reactions?token=%s", owner.Name, issue.Repo.Name, issue.Index, token) @@ -61,17 +60,12 @@ func TestAPIIssuesReactions(t *testing.T) { DecodeJSON(t, resp, &apiReactions) expectResponse := make(map[int]api.ReactionResponse) expectResponse[0] = api.ReactionResponse{ - User: user1.APIFormat(), - Reaction: "zzz", - Created: time.Unix(1573248002, 0), - } - expectResponse[1] = api.ReactionResponse{ User: user2.APIFormat(), Reaction: "eyes", Created: time.Unix(1573248003, 0), } - expectResponse[2] = apiNewReaction - assert.Len(t, apiReactions, 3) + expectResponse[1] = apiNewReaction + assert.Len(t, apiReactions, 2) for i, r := range apiReactions { assert.Equal(t, expectResponse[i].Reaction, r.Reaction) assert.Equal(t, expectResponse[i].Created.Unix(), r.Created.Unix()) diff --git a/models/issue_reaction.go b/models/issue_reaction.go index b4f332a08..6896eeeaf 100644 --- a/models/issue_reaction.go +++ b/models/issue_reaction.go @@ -69,6 +69,7 @@ func findReactions(e Engine, opts FindReactionsOptions) ([]*Reaction, error) { reactions := make([]*Reaction, 0, 10) sess := e.Where(opts.toConds()) return reactions, sess. + In("reaction.`type`", setting.UI.Reactions). Asc("reaction.issue_id", "reaction.comment_id", "reaction.created_unix", "reaction.id"). Find(&reactions) } diff --git a/vendor/modules.txt b/vendor/modules.txt index 34b0f6c6e..901f06c98 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -609,5 +609,5 @@ strk.kbt.io/projects/go/libravatar xorm.io/builder # xorm.io/core v0.7.2 xorm.io/core -# xorm.io/xorm v0.8.0 +# xorm.io/xorm v0.8.1 xorm.io/xorm diff --git a/vendor/xorm.io/xorm/.drone.yml b/vendor/xorm.io/xorm/.drone.yml index c373975df..b2198e380 100644 --- a/vendor/xorm.io/xorm/.drone.yml +++ b/vendor/xorm.io/xorm/.drone.yml @@ -1,11 +1,6 @@ --- kind: pipeline -name: matrix-1 - -platform: - os: linux - arch: amd64 - +name: go1.10-test workspace: base: /go path: src/gitea.com/xorm/xorm @@ -15,9 +10,7 @@ steps: pull: default image: golang:1.10 commands: - - go get -t -d -v ./... - - go get -u xorm.io/core - - go get -u xorm.io/builder + - go get -t -d -v - go build -v when: event: @@ -27,8 +20,9 @@ steps: - name: test-sqlite pull: default image: golang:1.10 + depends_on: + - build commands: - - go get -u github.com/wadey/gocovmerge - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -coverprofile=coverage1-1.txt -covermode=atomic" - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -cache=true -coverprofile=coverage1-2.txt -covermode=atomic" when: @@ -39,6 +33,8 @@ steps: - name: test-mysql pull: default image: golang:1.10 + depends_on: + - build commands: - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -coverprofile=coverage2-1.txt -covermode=atomic" - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic" @@ -50,6 +46,8 @@ steps: - name: test-mysql-utf8mb4 pull: default image: golang:1.10 + depends_on: + - test-mysql commands: - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -coverprofile=coverage2.1-1.txt -covermode=atomic" - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -cache=true -coverprofile=coverage2.1-2.txt -covermode=atomic" @@ -61,6 +59,8 @@ steps: - name: test-mymysql pull: default image: golang:1.10 + depends_on: + - test-mysql-utf8mb4 commands: - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -coverprofile=coverage3-1.txt -covermode=atomic" - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic" @@ -72,6 +72,8 @@ steps: - name: test-postgres pull: default image: golang:1.10 + depends_on: + - build commands: - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -coverprofile=coverage4-1.txt -covermode=atomic" - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -cache=true -coverprofile=coverage4-2.txt -covermode=atomic" @@ -83,6 +85,8 @@ steps: - name: test-postgres-schema pull: default image: golang:1.10 + depends_on: + - build commands: - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -coverprofile=coverage5-1.txt -covermode=atomic" - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic" @@ -94,6 +98,8 @@ steps: - name: test-mssql pull: default image: golang:1.10 + depends_on: + - build commands: - "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -coverprofile=coverage6-1.txt -covermode=atomic" - "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -cache=true -coverprofile=coverage6-2.txt -covermode=atomic" @@ -105,213 +111,30 @@ steps: - name: test-tidb pull: default image: golang:1.10 + depends_on: + - build commands: - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -coverprofile=coverage7-1.txt -covermode=atomic" - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -cache=true -coverprofile=coverage7-2.txt -covermode=atomic" - - gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage2.1-1.txt coverage2.1-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt - when: - event: - - push - - pull_request - -services: -- name: mysql - pull: default - image: mysql:5.7 - environment: - MYSQL_ALLOW_EMPTY_PASSWORD: yes - MYSQL_DATABASE: xorm_test - when: - event: - - push - - tag - - pull_request - -- name: tidb - pull: default - image: pingcap/tidb:v3.0.3 - when: - event: - - push - - tag - - pull_request - -- name: pgsql - pull: default - image: postgres:9.5 - environment: - POSTGRES_DB: xorm_test - POSTGRES_USER: postgres - when: - event: - - push - - tag - - pull_request - -- name: mssql - pull: default - image: microsoft/mssql-server-linux:latest - environment: - ACCEPT_EULA: Y - SA_PASSWORD: yourStrong(!)Password - MSSQL_PID: Developer - when: - event: - - push - - tag - - pull_request - ---- -kind: pipeline -name: matrix-2 - -platform: - os: linux - arch: amd64 - -workspace: - base: /go - path: src/gitea.com/xorm/xorm - -steps: -- name: build - pull: default - image: golang:1.11 - environment: - GO111MODULE: "off" - commands: - - go get -t -d -v ./... - - go get -u xorm.io/core - - go get -u xorm.io/builder - - go build -v - when: - event: - - push - - pull_request - -- name: build-gomod - pull: default - image: golang:1.11 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - go build -v - when: - event: - - push - - pull_request - -- name: test-sqlite - pull: default - image: golang:1.11 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -coverprofile=coverage1-1.txt -covermode=atomic" - - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -cache=true -coverprofile=coverage1-2.txt -covermode=atomic" - when: - event: - - push - - pull_request - -- name: test-mysql - pull: default - image: golang:1.11 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -coverprofile=coverage2-1.txt -covermode=atomic" - - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic" - when: - event: - - push - - pull_request - -- name: test-mysql-utf8mb4 - pull: default - image: golang:1.11 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -coverprofile=coverage2.1-1.txt -covermode=atomic" - - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -cache=true -coverprofile=coverage2.1-2.txt -covermode=atomic" - when: - event: - - push - - pull_request - -- name: test-mymysql - pull: default - image: golang:1.11 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -coverprofile=coverage3-1.txt -covermode=atomic" - - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic" - when: - event: - - push - - pull_request - -- name: test-postgres - pull: default - image: golang:1.11 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -coverprofile=coverage4-1.txt -covermode=atomic" - - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -cache=true -coverprofile=coverage4-2.txt -covermode=atomic" when: event: - push - pull_request -- name: test-postgres-schema +- name: test-end pull: default - image: golang:1.11 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -coverprofile=coverage5-1.txt -covermode=atomic" - - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic" - when: - event: - - push - - pull_request - -- name: test-mssql - pull: default - image: golang:1.11 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -coverprofile=coverage6-1.txt -covermode=atomic" - - "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -cache=true -coverprofile=coverage6-2.txt -covermode=atomic" - - when: - event: - - push - - pull_request - -- name: test-tidb - pull: default - image: golang:1.11 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" + image: golang:1.10 + depends_on: + - test-sqlite + - test-mysql + - test-mysql-utf8mb4 + - test-mymysql + - test-postgres + - test-postgres-schema + - test-mssql + - test-tidb commands: - - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -coverprofile=coverage7-1.txt -covermode=atomic" - - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -cache=true -coverprofile=coverage7-2.txt -covermode=atomic" - - go get github.com/wadey/gocovmerge - - gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage2.1-1.txt coverage2.1-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt + - echo "go1.10 build end" when: event: - push @@ -330,15 +153,6 @@ services: - tag - pull_request -- name: tidb - pull: default - image: pingcap/tidb:v3.0.3 - when: - event: - - push - - tag - - pull_request - - name: pgsql pull: default image: postgres:9.5 @@ -364,175 +178,6 @@ services: - tag - pull_request ---- -kind: pipeline -name: matrix-3 - -platform: - os: linux - arch: amd64 - -workspace: - base: /go - path: src/gitea.com/xorm/xorm - -steps: - -- name: build - pull: default - image: golang:1.12 - environment: - GO111MODULE: "off" - commands: - - go get -t -d -v ./... - - go get -u xorm.io/core - - go get -u xorm.io/builder - - go build -v - when: - event: - - push - - pull_request - -- name: build-gomod - pull: default - image: golang:1.12 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - go build -v - when: - event: - - push - - pull_request - -- name: test-sqlite - pull: default - image: golang:1.12 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -coverprofile=coverage1-1.txt -covermode=atomic" - - "go test -v -race -db=\"sqlite3\" -conn_str=\"./test.db\" -cache=true -coverprofile=coverage1-2.txt -covermode=atomic" - when: - event: - - push - - pull_request - -- name: test-mysql - pull: default - image: golang:1.12 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -coverprofile=coverage2-1.txt -covermode=atomic" - - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test\" -cache=true -coverprofile=coverage2-2.txt -covermode=atomic" - when: - event: - - push - - pull_request - -- name: test-mysql-utf8mb4 - pull: default - image: golang:1.12 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -coverprofile=coverage2.1-1.txt -covermode=atomic" - - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(mysql)/xorm_test?charset=utf8mb4\" -cache=true -coverprofile=coverage2.1-2.txt -covermode=atomic" - when: - event: - - push - - pull_request - -- name: test-mymysql - pull: default - image: golang:1.12 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -coverprofile=coverage3-1.txt -covermode=atomic" - - "go test -v -race -db=\"mymysql\" -conn_str=\"tcp:mysql:3306*xorm_test/root/\" -cache=true -coverprofile=coverage3-2.txt -covermode=atomic" - when: - event: - - push - - pull_request - -- name: test-postgres - pull: default - image: golang:1.12 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -coverprofile=coverage4-1.txt -covermode=atomic" - - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -cache=true -coverprofile=coverage4-2.txt -covermode=atomic" - when: - event: - - push - - pull_request - -- name: test-postgres-schema - pull: default - image: golang:1.12 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -coverprofile=coverage5-1.txt -covermode=atomic" - - "go test -v -race -db=\"postgres\" -conn_str=\"postgres://postgres:@pgsql/xorm_test?sslmode=disable\" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic" - when: - event: - - push - - pull_request - -- name: test-mssql - pull: default - image: golang:1.12 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -coverprofile=coverage6-1.txt -covermode=atomic" - - "go test -v -race -db=\"mssql\" -conn_str=\"server=mssql;user id=sa;password=yourStrong(!)Password;database=xorm_test\" -cache=true -coverprofile=coverage6-2.txt -covermode=atomic" - when: - event: - - push - - pull_request - -- name: test-tidb - pull: default - image: golang:1.12 - environment: - GO111MODULE: "on" - GOPROXY: "https://goproxy.cn" - commands: - - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -coverprofile=coverage7-1.txt -covermode=atomic" - - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -cache=true -coverprofile=coverage7-2.txt -covermode=atomic" - - go get github.com/wadey/gocovmerge - - gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage2.1-1.txt coverage2.1-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt - when: - event: - - push - - pull_request - -services: -- name: mysql - pull: default - image: mysql:5.7 - environment: - MYSQL_ALLOW_EMPTY_PASSWORD: yes - MYSQL_DATABASE: xorm_test - when: - event: - - push - - tag - - pull_request - - name: tidb pull: default image: pingcap/tidb:v3.0.3 @@ -542,61 +187,11 @@ services: - tag - pull_request -- name: pgsql - pull: default - image: postgres:9.5 - environment: - POSTGRES_DB: xorm_test - POSTGRES_USER: postgres - when: - event: - - push - - tag - - pull_request - -- name: mssql - pull: default - image: microsoft/mssql-server-linux:latest - environment: - ACCEPT_EULA: Y - SA_PASSWORD: yourStrong(!)Password - MSSQL_PID: Developer - when: - event: - - push - - tag - - pull_request - --- kind: pipeline -name: go1.13 - -platform: - os: linux - arch: amd64 - -workspace: - base: /go - path: src/gitea.com/xorm/xorm - +name: go1.13-test steps: - - name: build - pull: default - image: golang:1.13 - environment: - GO111MODULE: "off" - commands: - - go get -t -d -v ./... - - go get -u xorm.io/core - - go get -u xorm.io/builder - - go build -v - when: - event: - - push - - pull_request - -- name: build-gomod pull: default image: golang:1.13 environment: @@ -604,6 +199,7 @@ steps: GOPROXY: "https://goproxy.cn" commands: - go build -v + - go vet when: event: - push @@ -640,6 +236,8 @@ steps: - name: test-mysql-utf8mb4 pull: default image: golang:1.13 + depends_on: + - test-mysql environment: GO111MODULE: "on" GOPROXY: "https://goproxy.cn" @@ -654,6 +252,8 @@ steps: - name: test-mymysql pull: default image: golang:1.13 + depends_on: + - test-mysql-utf8mb4 environment: GO111MODULE: "on" GOPROXY: "https://goproxy.cn" @@ -716,6 +316,28 @@ steps: commands: - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -coverprofile=coverage7-1.txt -covermode=atomic" - "go test -v -race -db=\"mysql\" -conn_str=\"root:@tcp(tidb:4000)/xorm_test\" -ignore_select_update=true -cache=true -coverprofile=coverage7-2.txt -covermode=atomic" + when: + event: + - push + - pull_request + +- name: merge_coverage + pull: default + image: golang:1.13 + environment: + GO111MODULE: "on" + GOPROXY: "https://goproxy.cn" + depends_on: + - build + - test-sqlite + - test-mysql + - test-mysql-utf8mb4 + - test-mymysql + - test-postgres + - test-postgres-schema + - test-mssql + - test-tidb + commands: - go get github.com/wadey/gocovmerge - gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage2.1-1.txt coverage2.1-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt when: @@ -724,6 +346,7 @@ steps: - pull_request services: + - name: mysql pull: default image: mysql:5.7 @@ -736,15 +359,6 @@ services: - tag - pull_request -- name: tidb - pull: default - image: pingcap/tidb:v3.0.3 - when: - event: - - push - - tag - - pull_request - - name: pgsql pull: default image: postgres:9.5 @@ -764,6 +378,15 @@ services: ACCEPT_EULA: Y SA_PASSWORD: yourStrong(!)Password MSSQL_PID: Developer + when: + event: + - push + - tag + - pull_request + +- name: tidb + pull: default + image: pingcap/tidb:v3.0.3 when: event: - push diff --git a/vendor/xorm.io/xorm/engine.go b/vendor/xorm.io/xorm/engine.go index 4ed0f77a9..a7e52ea48 100644 --- a/vendor/xorm.io/xorm/engine.go +++ b/vendor/xorm.io/xorm/engine.go @@ -207,25 +207,46 @@ func (engine *Engine) QuoteTo(buf *strings.Builder, value string) { return } - quotePair := engine.dialect.Quote("") + quoteTo(buf, engine.dialect.Quote(""), value) +} - if value[0] == '`' || len(quotePair) < 2 || value[0] == quotePair[0] { // no quote +func quoteTo(buf *strings.Builder, quotePair string, value string) { + if len(quotePair) < 2 { // no quote _, _ = buf.WriteString(value) return - } else { - prefix, suffix := quotePair[0], quotePair[1] - - _ = buf.WriteByte(prefix) - for i := 0; i < len(value); i++ { - if value[i] == '.' { - _ = buf.WriteByte(suffix) - _ = buf.WriteByte('.') - _ = buf.WriteByte(prefix) + } + + prefix, suffix := quotePair[0], quotePair[1] + + i := 0 + for i < len(value) { + // start of a token; might be already quoted + if value[i] == '.' { + _ = buf.WriteByte('.') + i++ + } else if value[i] == prefix || value[i] == '`' { + // Has quotes; skip/normalize `name` to prefix+name+sufix + var ch byte + if value[i] == prefix { + ch = suffix } else { + ch = '`' + } + i++ + _ = buf.WriteByte(prefix) + for ; i < len(value) && value[i] != ch; i++ { + _ = buf.WriteByte(value[i]) + } + _ = buf.WriteByte(suffix) + i++ + } else { + // Requires quotes + _ = buf.WriteByte(prefix) + for ; i < len(value) && value[i] != '.'; i++ { _ = buf.WriteByte(value[i]) } + _ = buf.WriteByte(suffix) } - _ = buf.WriteByte(suffix) } } @@ -330,7 +351,7 @@ func (engine *Engine) Ping() error { return session.Ping() } -// logging sql +// logSQL save sql func (engine *Engine) logSQL(sqlStr string, sqlArgs ...interface{}) { if engine.showSQL && !engine.showExecTime { if len(sqlArgs) > 0 { diff --git a/vendor/xorm.io/xorm/session.go b/vendor/xorm.io/xorm/session.go index b33955fdc..830719355 100644 --- a/vendor/xorm.io/xorm/session.go +++ b/vendor/xorm.io/xorm/session.go @@ -57,6 +57,7 @@ type Session struct { //beforeSQLExec func(string, ...interface{}) lastSQL string lastSQLArgs []interface{} + showSQL bool ctx context.Context sessionType sessionType @@ -72,6 +73,7 @@ func (session *Session) Clone() *Session { func (session *Session) Init() { session.statement.Init() session.statement.Engine = session.engine + session.showSQL = session.engine.showSQL session.isAutoCommit = true session.isCommitedOrRollbacked = false session.isAutoClose = false @@ -226,6 +228,16 @@ func (session *Session) Cascade(trueOrFalse ...bool) *Session { return session } +// MustLogSQL means record SQL or not and don't follow engine's setting +func (session *Session) MustLogSQL(log ...bool) *Session { + if len(log) > 0 { + session.showSQL = log[0] + } else { + session.showSQL = true + } + return session +} + // NoCache ask this session do not retrieve data from cache system and // get data from database directly. func (session *Session) NoCache() *Session { @@ -842,7 +854,17 @@ func (session *Session) slice2Bean(scanResults []interface{}, fields []string, b func (session *Session) saveLastSQL(sql string, args ...interface{}) { session.lastSQL = sql session.lastSQLArgs = args - session.engine.logSQL(sql, args...) + session.logSQL(sql, args...) +} + +func (session *Session) logSQL(sqlStr string, sqlArgs ...interface{}) { + if session.showSQL && !session.engine.showExecTime { + if len(sqlArgs) > 0 { + session.engine.logger.Infof("[SQL] %v %#v", sqlStr, sqlArgs) + } else { + session.engine.logger.Infof("[SQL] %v", sqlStr) + } + } } // LastSQL returns last query information diff --git a/vendor/xorm.io/xorm/session_raw.go b/vendor/xorm.io/xorm/session_raw.go index 67648ef13..a92982967 100644 --- a/vendor/xorm.io/xorm/session_raw.go +++ b/vendor/xorm.io/xorm/session_raw.go @@ -27,7 +27,9 @@ func (session *Session) queryRows(sqlStr string, args ...interface{}) (*core.Row session.queryPreprocess(&sqlStr, args...) - if session.engine.showSQL { + if session.showSQL { + session.lastSQL = sqlStr + session.lastSQLArgs = args if session.engine.showExecTime { b4ExecTime := time.Now() defer func() { diff --git a/vendor/xorm.io/xorm/session_update.go b/vendor/xorm.io/xorm/session_update.go index c5c65a452..231163e06 100644 --- a/vendor/xorm.io/xorm/session_update.go +++ b/vendor/xorm.io/xorm/session_update.go @@ -377,10 +377,23 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6 return 0, errors.New("No content found to be updated") } - sqlStr = fmt.Sprintf("UPDATE %v%v SET %v %v", + var tableAlias = session.engine.Quote(tableName) + var fromSQL string + if session.statement.TableAlias != "" { + switch session.engine.dialect.DBType() { + case core.MSSQL: + fromSQL = fmt.Sprintf("FROM %s %s ", tableAlias, session.statement.TableAlias) + tableAlias = session.statement.TableAlias + default: + tableAlias = fmt.Sprintf("%s AS %s", tableAlias, session.statement.TableAlias) + } + } + + sqlStr = fmt.Sprintf("UPDATE %v%v SET %v %v%v", top, - session.engine.Quote(tableName), + tableAlias, strings.Join(colNames, ", "), + fromSQL, condSQL) res, err := session.exec(sqlStr, append(args, condArgs...)...)