|
1 | 1 | package oracle
|
2 | 2 |
|
3 | 3 | import (
|
| 4 | + "database/sql" |
4 | 5 | "log"
|
5 | 6 | "os"
|
6 | 7 | "reflect"
|
@@ -111,3 +112,52 @@ func openTestConnection(ignoreCase, namingCase bool) (db *gorm.DB, err error) {
|
111 | 112 | }
|
112 | 113 | return
|
113 | 114 | }
|
| 115 | + |
| 116 | +func TestAddSessionParams(t *testing.T) { |
| 117 | + db, err := openTestConnection(true, false) |
| 118 | + if err != nil { |
| 119 | + t.Fatal(err) |
| 120 | + } |
| 121 | + var sqlDB *sql.DB |
| 122 | + if sqlDB, err = db.DB(); err != nil { |
| 123 | + t.Fatal(err) |
| 124 | + } |
| 125 | + type args struct { |
| 126 | + params map[string]string |
| 127 | + } |
| 128 | + tests := []struct { |
| 129 | + name string |
| 130 | + args args |
| 131 | + }{ |
| 132 | + {name: "TimeParams", args: args{params: map[string]string{ |
| 133 | + "TIME_ZONE": "+08:00", // alter session set TIME_ZONE = '+08:00'; |
| 134 | + "NLS_DATE_FORMAT": "YYYY-MM-DD", // alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD'; |
| 135 | + "NLS_TIME_FORMAT": "HH24:MI:SSXFF", // alter session set NLS_TIME_FORMAT = 'HH24:MI:SS.FF3'; |
| 136 | + "NLS_TIMESTAMP_FORMAT": "YYYY-MM-DD HH24:MI:SSXFF", // alter session set NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF3'; |
| 137 | + "NLS_TIME_TZ_FORMAT": "HH24:MI:SS.FF TZR", // alter session set NLS_TIME_TZ_FORMAT = 'HH24:MI:SS.FF3 TZR'; |
| 138 | + "NLS_TIMESTAMP_TZ_FORMAT": "YYYY-MM-DD HH24:MI:SSXFF TZR", // alter session set NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF3 TZR'; |
| 139 | + }}}, |
| 140 | + } |
| 141 | + for _, tt := range tests { |
| 142 | + t.Run(tt.name, func(t *testing.T) { |
| 143 | + //queryTime := `SELECT SYSDATE FROM DUAL` |
| 144 | + queryTime := `SELECT CAST(SYSDATE AS VARCHAR(30)) AS D FROM DUAL` |
| 145 | + var timeStr string |
| 146 | + if err = db.Raw(queryTime).Row().Scan(&timeStr); err != nil { |
| 147 | + t.Fatal(err) |
| 148 | + } |
| 149 | + t.Logf("SYSDATE 1: %s", timeStr) |
| 150 | + |
| 151 | + var keys []string |
| 152 | + if keys, err = AddSessionParams(sqlDB, tt.args.params); err != nil { |
| 153 | + t.Fatalf("AddSessionParams() error = %v", err) |
| 154 | + } |
| 155 | + if err = db.Raw(queryTime).Row().Scan(&timeStr); err != nil { |
| 156 | + t.Fatal(err) |
| 157 | + } |
| 158 | + defer DelSessionParams(sqlDB, keys) |
| 159 | + t.Logf("SYSDATE 2: %s", timeStr) |
| 160 | + t.Logf("keys: %#v", keys) |
| 161 | + }) |
| 162 | + } |
| 163 | +} |
0 commit comments