test: invalid cache plan with prepare stmt (#5778)
* test: invalid cache plan with prepare stmt * test: more test cases * test: drop and rename column
This commit is contained in:
		
							parent
							
								
									5dd2bb4827
								
							
						
					
					
						commit
						9d82aa5673
					
				| @ -4,6 +4,7 @@ import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"math/rand" | ||||
| 	"os" | ||||
| 	"reflect" | ||||
| 	"strings" | ||||
| 	"testing" | ||||
| @ -12,6 +13,7 @@ import ( | ||||
| 	"gorm.io/driver/postgres" | ||||
| 
 | ||||
| 	"gorm.io/gorm" | ||||
| 	"gorm.io/gorm/logger" | ||||
| 	"gorm.io/gorm/schema" | ||||
| 	. "gorm.io/gorm/utils/tests" | ||||
| ) | ||||
| @ -890,7 +892,7 @@ func findColumnType(dest interface{}, columnName string) ( | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func TestInvalidCachedPlan(t *testing.T) { | ||||
| func TestInvalidCachedPlanSimpleProtocol(t *testing.T) { | ||||
| 	if DB.Dialector.Name() != "postgres" { | ||||
| 		return | ||||
| 	} | ||||
| @ -925,6 +927,101 @@ func TestInvalidCachedPlan(t *testing.T) { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestInvalidCachedPlanPrepareStmt(t *testing.T) { | ||||
| 	if DB.Dialector.Name() != "postgres" { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	db, err := gorm.Open(postgres.Open(postgresDSN), &gorm.Config{PrepareStmt: true}) | ||||
| 	if err != nil { | ||||
| 		t.Errorf("Open err:%v", err) | ||||
| 	} | ||||
| 	if debug := os.Getenv("DEBUG"); debug == "true" { | ||||
| 		db.Logger = db.Logger.LogMode(logger.Info) | ||||
| 	} else if debug == "false" { | ||||
| 		db.Logger = db.Logger.LogMode(logger.Silent) | ||||
| 	} | ||||
| 
 | ||||
| 	type Object1 struct { | ||||
| 		ID uint | ||||
| 	} | ||||
| 	type Object2 struct { | ||||
| 		ID     uint | ||||
| 		Field1 int `gorm:"type:int8"` | ||||
| 	} | ||||
| 	type Object3 struct { | ||||
| 		ID     uint | ||||
| 		Field1 int `gorm:"type:int4"` | ||||
| 	} | ||||
| 	type Object4 struct { | ||||
| 		ID     uint | ||||
| 		Field2 int | ||||
| 	} | ||||
| 	db.Migrator().DropTable("objects") | ||||
| 
 | ||||
| 	err = db.Table("objects").AutoMigrate(&Object1{}) | ||||
| 	if err != nil { | ||||
| 		t.Errorf("AutoMigrate err:%v", err) | ||||
| 	} | ||||
| 	err = db.Table("objects").Create(&Object1{}).Error | ||||
| 	if err != nil { | ||||
| 		t.Errorf("create err:%v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	// AddColumn
 | ||||
| 	err = db.Table("objects").AutoMigrate(&Object2{}) | ||||
| 	if err != nil { | ||||
| 		t.Errorf("AutoMigrate err:%v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	err = db.Table("objects").Take(&Object2{}).Error | ||||
| 	if err != nil { | ||||
| 		t.Errorf("take err:%v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	// AlterColumn
 | ||||
| 	err = db.Table("objects").AutoMigrate(&Object3{}) | ||||
| 	if err != nil { | ||||
| 		t.Errorf("AutoMigrate err:%v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	err = db.Table("objects").Take(&Object3{}).Error | ||||
| 	if err != nil { | ||||
| 		t.Errorf("take err:%v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	// AddColumn
 | ||||
| 	err = db.Table("objects").AutoMigrate(&Object4{}) | ||||
| 	if err != nil { | ||||
| 		t.Errorf("AutoMigrate err:%v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	err = db.Table("objects").Take(&Object4{}).Error | ||||
| 	if err != nil { | ||||
| 		t.Errorf("take err:%v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	db.Table("objects").Migrator().RenameColumn(&Object4{}, "field2", "field3") | ||||
| 	if err != nil { | ||||
| 		t.Errorf("RenameColumn err:%v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	err = db.Table("objects").Take(&Object4{}).Error | ||||
| 	if err != nil { | ||||
| 		t.Errorf("take err:%v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	db.Table("objects").Migrator().DropColumn(&Object4{}, "field3") | ||||
| 	if err != nil { | ||||
| 		t.Errorf("RenameColumn err:%v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	err = db.Table("objects").Take(&Object4{}).Error | ||||
| 	if err != nil { | ||||
| 		t.Errorf("take err:%v", err) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestDifferentTypeWithoutDeclaredLength(t *testing.T) { | ||||
| 	type DiffType struct { | ||||
| 		ID   uint | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Cr
						Cr