@@ -1758,6 +1758,7 @@ func (db Database) GetViewDefinition(ctx *sql.Context, viewName string) (sql.Vie
17581758 }
17591759 }
17601760
1761+ schemaName := db .schemaName
17611762 lwrViewName := strings .ToLower (viewName )
17621763 switch {
17631764 case strings .HasPrefix (lwrViewName , doltdb .DoltBlameViewPrefix ):
@@ -1767,7 +1768,12 @@ func (db Database) GetViewDefinition(ctx *sql.Context, viewName string) (sql.Vie
17671768 if err != nil {
17681769 return sql.ViewDefinition {}, false , err
17691770 }
1770- return sql.ViewDefinition {Name : viewName , TextDefinition : blameViewTextDef , CreateViewStatement : fmt .Sprintf ("CREATE VIEW `%s` AS %s" , viewName , blameViewTextDef )}, true , nil
1771+ return sql.ViewDefinition {
1772+ Name : viewName ,
1773+ SchemaName : db .schemaName ,
1774+ TextDefinition : blameViewTextDef ,
1775+ CreateViewStatement : fmt .Sprintf ("CREATE VIEW `%s` AS %s" , viewName , blameViewTextDef )},
1776+ true , nil
17711777 }
17721778
17731779 schemasTableName := getDoltSchemasTableName ()
@@ -1809,22 +1815,22 @@ func (db Database) GetViewDefinition(ctx *sql.Context, viewName string) (sql.Vie
18091815 }
18101816
18111817 if wrapper .backingTable == nil {
1812- dbState .SessionCache ().CacheViews (key , nil , db . schemaName )
1818+ dbState .SessionCache ().CacheViews (key , nil , schemaName )
18131819 return sql.ViewDefinition {}, false , nil
18141820 }
18151821
1816- views , viewDef , found , err := getViewDefinitionFromSchemaFragmentsOfView (ctx , wrapper .backingTable , viewName )
1822+ views , viewDef , found , err := getViewDefinitionFromSchemaFragmentsOfView (ctx , wrapper .backingTable , viewName , schemaName )
18171823 if err != nil {
18181824 return sql.ViewDefinition {}, false , err
18191825 }
18201826
18211827 // TODO: only cache views from a single schema here
1822- dbState .SessionCache ().CacheViews (key , views , db . schemaName )
1828+ dbState .SessionCache ().CacheViews (key , views , schemaName )
18231829
18241830 return viewDef , found , nil
18251831}
18261832
1827- func getViewDefinitionFromSchemaFragmentsOfView (ctx * sql.Context , tbl * WritableDoltTable , viewName string ) ([]sql.ViewDefinition , sql.ViewDefinition , bool , error ) {
1833+ func getViewDefinitionFromSchemaFragmentsOfView (ctx * sql.Context , tbl * WritableDoltTable , viewName , schemaName string ) ([]sql.ViewDefinition , sql.ViewDefinition , bool , error ) {
18281834 fragments , err := getSchemaFragmentsOfType (ctx , tbl , viewFragment )
18291835 if err != nil {
18301836 return nil , sql.ViewDefinition {}, false , err
@@ -1843,14 +1849,15 @@ func getViewDefinitionFromSchemaFragmentsOfView(ctx *sql.Context, tbl *WritableD
18431849 }
18441850 } else {
18451851 views [i ] = sql.ViewDefinition {
1846- Name : fragments [i ].name ,
1852+ Name : fragments [i ].name ,
1853+ SchemaName : fragments [i ].schemaName ,
18471854 // TODO: need to define TextDefinition
18481855 CreateViewStatement : fragments [i ].fragment ,
18491856 SqlMode : fragment .sqlMode ,
18501857 }
18511858 }
18521859
1853- if strings .EqualFold (fragment .name , viewName ) {
1860+ if strings .EqualFold (fragment .name , viewName ) && strings . EqualFold ( fragment . schemaName , schemaName ) {
18541861 found = true
18551862 viewDef = views [i ]
18561863 }
@@ -1878,7 +1885,7 @@ func (db Database) AllViews(ctx *sql.Context) ([]sql.ViewDefinition, error) {
18781885 return nil , nil
18791886 }
18801887
1881- views , _ , _ , err := getViewDefinitionFromSchemaFragmentsOfView (ctx , wrapper .backingTable , "" )
1888+ views , _ , _ , err := getViewDefinitionFromSchemaFragmentsOfView (ctx , wrapper .backingTable , "" , "" )
18821889 if err != nil {
18831890 return nil , err
18841891 }
@@ -1974,7 +1981,7 @@ func (db Database) CreateTrigger(ctx *sql.Context, definition sql.TriggerDefinit
19741981 definition .Name ,
19751982 definition .CreateStatement ,
19761983 definition .CreatedAt ,
1977- fmt .Errorf ("triggers `%s` already exists" , definition .Name ), //TODO: add a sql error and return that instead
1984+ fmt .Errorf ("triggers `%s` already exists" , definition .Name ), // TODO: add a sql error and return that instead
19781985 )
19791986}
19801987
@@ -2236,7 +2243,7 @@ func (db Database) addFragToSchemasTable(ctx *sql.Context, fragType, name, defin
22362243 return err
22372244 }
22382245
2239- _ , exists , err := fragFromSchemasTable (ctx , tbl , fragType , name )
2246+ _ , exists , err := fragFromSchemasTable (ctx , tbl , fragType , name , db . schemaName )
22402247 if err != nil {
22412248 return err
22422249 }
@@ -2263,14 +2270,34 @@ func (db Database) addFragToSchemasTable(ctx *sql.Context, fragType, name, defin
22632270
22642271 sqlMode := sql .LoadSqlMode (ctx )
22652272
2266- return inserter .Insert (ctx , sql.Row {fragType , name , definition , extraJSON , sqlMode .String ()})
2273+ row := sql.Row {fragType , name , definition , extraJSON , sqlMode .String ()}
2274+
2275+ // Include schema_name column for doltgres
2276+ if resolve .UseSearchPath && tbl .Schema ().Contains (doltdb .SchemasTablesSchemaNameCol , tbl .Name ()) {
2277+ if db .schemaName == "" {
2278+ root , err := db .GetRoot (ctx )
2279+ if err != nil {
2280+ return err
2281+ }
2282+ schemaName , err := resolve .FirstExistingSchemaOnSearchPath (ctx , root )
2283+ if err != nil {
2284+ return err
2285+ }
2286+ db .schemaName = schemaName
2287+ }
2288+
2289+ row = sql.Row {fragType , name , db .schemaName , definition , extraJSON , sqlMode .String ()}
2290+ }
2291+
2292+ return inserter .Insert (ctx , row )
22672293}
22682294
22692295func (db Database ) dropFragFromSchemasTable (ctx * sql.Context , fragType , name string , missingErr error ) error {
22702296 if err := dsess .CheckAccessForDb (ctx , db , branch_control .Permissions_Write ); err != nil {
22712297 return err
22722298 }
22732299
2300+ schemaName := db .schemaName
22742301 if resolve .UseSearchPath {
22752302 db .schemaName = "dolt"
22762303 }
@@ -2288,14 +2315,26 @@ func (db Database) dropFragFromSchemasTable(ctx *sql.Context, fragType, name str
22882315 return missingErr
22892316 }
22902317
2318+ if resolve .UseSearchPath && schemaName == "" {
2319+ root , err := db .GetRoot (ctx )
2320+ if err != nil {
2321+ return err
2322+ }
2323+ schemaName , err = resolve .FirstExistingSchemaOnSearchPath (ctx , root )
2324+ if err != nil {
2325+ return err
2326+ }
2327+ }
2328+
22912329 tbl := swrapper .backingTable
2292- row , exists , err := fragFromSchemasTable (ctx , tbl , fragType , name )
2330+ row , exists , err := fragFromSchemasTable (ctx , tbl , fragType , name , schemaName )
22932331 if err != nil {
22942332 return err
22952333 }
22962334 if ! exists {
22972335 return missingErr
22982336 }
2337+
22992338 deleter := tbl .Deleter (ctx )
23002339 err = deleter .Delete (ctx , row )
23012340 if err != nil {
0 commit comments