Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pg/catalog/diff_view.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,9 +132,9 @@ func getViewDef(c *Catalog, key relKey, rel *Relation) string {
var def string
var err error
if rel.RelKind == 'm' {
def, err = c.GetMatViewDefinition(key.schema, key.name)
def, err = c.GetMatViewDefinition(key.schema, key.name, false)
} else {
def, err = c.GetViewDefinition(key.schema, key.name)
def, err = c.GetViewDefinition(key.schema, key.name, false)
}
if err != nil {
return ""
Expand Down
2 changes: 1 addition & 1 deletion pg/catalog/migration.go
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ func wrapColumnTypeChangesWithViewOps(from, to *Catalog, diff *SchemaDiff, ops [
if toRel != nil {
toOID = toRel.OID
}
def, _ := to.GetViewDefinition(v.schema, v.name)
def, _ := to.GetViewDefinition(v.schema, v.name, false)
extraOps = append(extraOps, MigrationOp{
Type: OpCreateView,
SchemaName: v.schema,
Expand Down
10 changes: 5 additions & 5 deletions pg/catalog/migration_view.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ func generateViewDDL(from, to *Catalog, diff *SchemaDiff) []MigrationOp {
// buildCreateViewOp creates a CREATE VIEW op for an added view.
func buildCreateViewOp(to *Catalog, entry RelationDiffEntry) MigrationOp {
qn := migrationQualifiedName(entry.SchemaName, entry.Name)
def, _ := to.GetViewDefinition(entry.SchemaName, entry.Name)
def, _ := to.GetViewDefinition(entry.SchemaName, entry.Name, false)

var b strings.Builder
b.WriteString("CREATE VIEW ")
Expand Down Expand Up @@ -171,7 +171,7 @@ func buildCreateViewOp(to *Catalog, entry RelationDiffEntry) MigrationOp {
// buildCreateMatViewOp creates a CREATE MATERIALIZED VIEW op.
func buildCreateMatViewOp(to *Catalog, entry RelationDiffEntry) MigrationOp {
qn := migrationQualifiedName(entry.SchemaName, entry.Name)
def, _ := to.GetMatViewDefinition(entry.SchemaName, entry.Name)
def, _ := to.GetMatViewDefinition(entry.SchemaName, entry.Name, false)

sql := fmt.Sprintf("CREATE MATERIALIZED VIEW %s AS %s",
qn, strings.TrimRight(def, " \t\n\r;"))
Expand Down Expand Up @@ -218,7 +218,7 @@ func buildModifyViewOps(from, to *Catalog, entry RelationDiffEntry) []MigrationO
}

qn := migrationQualifiedName(entry.SchemaName, entry.Name)
def, _ := to.GetViewDefinition(entry.SchemaName, entry.Name)
def, _ := to.GetViewDefinition(entry.SchemaName, entry.Name, false)

var b strings.Builder
b.WriteString("CREATE OR REPLACE VIEW ")
Expand Down Expand Up @@ -252,7 +252,7 @@ func buildModifyViewOps(from, to *Catalog, entry RelationDiffEntry) []MigrationO
// Materialized views don't support CREATE OR REPLACE.
func buildModifyMatViewOps(to *Catalog, entry RelationDiffEntry) []MigrationOp {
qn := migrationQualifiedName(entry.SchemaName, entry.Name)
def, _ := to.GetMatViewDefinition(entry.SchemaName, entry.Name)
def, _ := to.GetMatViewDefinition(entry.SchemaName, entry.Name, false)

dropOp := MigrationOp{
Type: OpDropView,
Expand Down Expand Up @@ -306,7 +306,7 @@ func findDependentViews(c *Catalog, schemaName, viewName string) []viewRef {
continue
}
// Check if this view references the target view.
def, err := c.GetViewDefinition(s.Name, rel.Name)
def, err := c.GetViewDefinition(s.Name, rel.Name, false)
if err != nil {
continue
}
Expand Down
2 changes: 1 addition & 1 deletion pg/catalog/phase4_analyze_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func viewDef(t *testing.T, c *Catalog, sql string) string {
item = raw.Stmt
}
if vs, ok := item.(*nodes.ViewStmt); ok {
def, err := c.GetViewDefinition("", vs.View.Relname)
def, err := c.GetViewDefinition("", vs.View.Relname, false)
if err != nil {
t.Fatalf("get view def: %v", err)
}
Expand Down
2 changes: 1 addition & 1 deletion pg/catalog/phase5_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ func TestPhase5_ExistingRangeStillWorks(t *testing.T) {

func assertViewDefContains(t *testing.T, c *Catalog, viewName, expected string) {
t.Helper()
def, err := c.GetViewDefinition("", viewName)
def, err := c.GetViewDefinition("", viewName, false)
if err != nil {
t.Fatalf("get view def: %v", err)
}
Expand Down
16 changes: 4 additions & 12 deletions pg/catalog/ruleutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,15 @@ import (
// When pretty is true, matches pg_get_viewdef(oid, true) (PRETTYFLAG_INDENT | PRETTYFLAG_PAREN).
//
// pg: src/backend/utils/adt/ruleutils.c — pg_get_viewdef_worker
func (c *Catalog) GetViewDefinition(schema, name string, pretty ...bool) (string, error) {
func (c *Catalog) GetViewDefinition(schema, name string, pretty bool) (string, error) {
rel := c.GetRelation(schema, name)
if rel == nil {
return "", errUndefinedTable(name)
}
if rel.RelKind != 'v' {
return "", errWrongObjectType(name, "a view")
}
p := false
if len(pretty) > 0 {
p = pretty[0]
}
return c.deparseRelationQuery(rel, p)
return c.deparseRelationQuery(rel, pretty)
}

// GetMatViewDefinition returns the SQL definition of a materialized view,
Expand All @@ -34,19 +30,15 @@ func (c *Catalog) GetViewDefinition(schema, name string, pretty ...bool) (string
// When pretty is true, matches pg_get_viewdef(oid, true) (PRETTYFLAG_INDENT | PRETTYFLAG_PAREN).
//
// pg: src/backend/utils/adt/ruleutils.c — pg_get_viewdef_worker
func (c *Catalog) GetMatViewDefinition(schema, name string, pretty ...bool) (string, error) {
func (c *Catalog) GetMatViewDefinition(schema, name string, pretty bool) (string, error) {
rel := c.GetRelation(schema, name)
if rel == nil {
return "", errUndefinedTable(name)
}
if rel.RelKind != 'm' {
return "", errWrongObjectType(name, "a materialized view")
}
p := false
if len(pretty) > 0 {
p = pretty[0]
}
return c.deparseRelationQuery(rel, p)
return c.deparseRelationQuery(rel, pretty)
}

// deparseRelationQuery deparses the AnalyzedQuery of a view or matview.
Expand Down
Loading