diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 27964cb83c6..82244d9722d 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -3353,6 +3353,20 @@ rewriteTargetView(Query *parsetree, Relation view)
 				 errmsg("access to non-system view \"%s\" is restricted",
 						RelationGetRelationName(view))));
 
+	/*
+	 * For now, we don't support INSERT .. ON CONFLICT .. DO SELECT on a
+	 * security-barrier view.  This would require an executor check to ensure
+	 * that conflicting rows satisfy the view quals.
+	 */
+	if (parsetree->onConflict &&
+		parsetree->onConflict->action == ONCONFLICT_SELECT &&
+		RelationIsSecurityView(view))
+		ereport(ERROR,
+				errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+				errmsg("cannot insert into view \"%s\"",
+					   RelationGetRelationName(view)),
+				errdetail("INSERT ... ON CONFLICT DO SELECT is not supported on security-barrier views."));
+
 	/*
 	 * The view must be updatable, else fail.
 	 *
diff --git a/src/test/regress/expected/insert_conflict.out b/src/test/regress/expected/insert_conflict.out
index b4c9bdb0e55..47198f56e4d 100644
--- a/src/test/regress/expected/insert_conflict.out
+++ b/src/test/regress/expected/insert_conflict.out
@@ -365,6 +365,26 @@ insert into insertconflicttest as i values (1, 'Orange') on conflict (key) do se
    1 | Apple
 (1 row)
 
+--
+-- DO SELECT can bypass view quals, but not for a security-barrier view
+--
+create view insertconflicttestview2 as select * from insertconflicttest where fruit = 'Potato'; -- filters out everything
+select * from insertconflicttestview2;
+ key | fruit 
+-----+-------
+(0 rows)
+
+insert into insertconflicttestview2 values (1, 'Orange') on conflict (key) do select returning *; -- bypasses view quals
+ key | fruit 
+-----+-------
+   1 | Apple
+(1 row)
+
+alter view insertconflicttestview2 set (security_barrier=true);
+insert into insertconflicttestview2 values (1, 'Orange') on conflict (key) do select returning *; -- fails
+ERROR:  cannot insert into view "insertconflicttestview2"
+DETAIL:  INSERT ... ON CONFLICT DO SELECT is not supported on security-barrier views.
+drop view insertconflicttestview2;
 drop index key_index;
 --
 -- Composite key tests
diff --git a/src/test/regress/sql/insert_conflict.sql b/src/test/regress/sql/insert_conflict.sql
index d119158549f..2a7294f9d43 100644
--- a/src/test/regress/sql/insert_conflict.sql
+++ b/src/test/regress/sql/insert_conflict.sql
@@ -145,6 +145,16 @@ insert into insertconflicttest as i values (1, 'Apple') on conflict (key) do sel
 insert into insertconflicttest as i values (1, 'Orange') on conflict (key) do select where excluded.fruit = 'Apple' returning *;
 insert into insertconflicttest as i values (1, 'Orange') on conflict (key) do select where excluded.fruit = 'Orange' returning *;
 
+--
+-- DO SELECT can bypass view quals, but not for a security-barrier view
+--
+create view insertconflicttestview2 as select * from insertconflicttest where fruit = 'Potato'; -- filters out everything
+select * from insertconflicttestview2;
+insert into insertconflicttestview2 values (1, 'Orange') on conflict (key) do select returning *; -- bypasses view quals
+alter view insertconflicttestview2 set (security_barrier=true);
+insert into insertconflicttestview2 values (1, 'Orange') on conflict (key) do select returning *; -- fails
+drop view insertconflicttestview2;
+
 drop index key_index;
 
 --
