Skip to content

Commit 9c41cce

Browse files
authored
Merge pull request #536 from supabase/or/rls_fkey_nullability_fix
RLS fkey nullability fix
2 parents 5218009 + 9d2258d commit 9c41cce

File tree

5 files changed

+527
-0
lines changed

5 files changed

+527
-0
lines changed

sql/load_sql_context.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ select
148148
'local_table_meta', jsonb_build_object(
149149
'oid', pf.conrelid::int,
150150
'name', pa_local.relname::text,
151+
'is_rls_enabled', pa_local.relrowsecurity,
151152
'schema', pa_local.relnamespace::regnamespace::text,
152153
'column_names', (
153154
select
@@ -163,6 +164,7 @@ select
163164
'referenced_table_meta', jsonb_build_object(
164165
'oid', pf.confrelid::int,
165166
'name', pa_referenced.relname::text,
167+
'is_rls_enabled', pa_referenced.relrowsecurity,
166168
'schema', pa_referenced.relnamespace::regnamespace::text,
167169
'column_names', (
168170
select
@@ -234,6 +236,7 @@ select
234236
'name', pc.relname::text,
235237
'relkind', pc.relkind::text,
236238
'reltype', pc.reltype::int,
239+
'is_rls_enabled', pc.relrowsecurity,
237240
'schema', schemas_.name,
238241
'schema_oid', pc.relnamespace::int,
239242
'comment', pg_catalog.obj_description(pc.oid, 'pg_class'),

src/graphql.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1958,6 +1958,7 @@ impl NodeType {
19581958
.columns
19591959
.iter()
19601960
.any(|c| &c.name == colname && c.is_not_null)
1961+
&& !fkey.referenced_table_meta.is_rls_enabled
19611962
}) {
19621963
__Type::NonNull(NonNullType {
19631964
type_: Box::new(type_),

src/sql_types.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,7 @@ pub struct ForeignKeyTableInfo {
425425
// The table's actual name
426426
pub name: String,
427427
pub schema: String,
428+
pub is_rls_enabled: bool,
428429
pub column_names: Vec<String>,
429430
}
430431

@@ -503,6 +504,7 @@ pub struct Table {
503504
pub schema: String,
504505
pub columns: Vec<Arc<Column>>,
505506
pub comment: Option<String>,
507+
pub is_rls_enabled: bool,
506508
pub relkind: String, // r = table, v = view, m = mat view, f = foreign table
507509
pub reltype: u32,
508510
pub permissions: TablePermissions,
@@ -660,12 +662,14 @@ impl Context {
660662
oid: table.oid,
661663
name: table.name.clone(),
662664
schema: table.schema.clone(),
665+
is_rls_enabled: table.is_rls_enabled,
663666
column_names: directive_fkey.local_columns.clone(),
664667
},
665668
referenced_table_meta: ForeignKeyTableInfo {
666669
oid: referenced_t.oid,
667670
name: referenced_t.name.clone(),
668671
schema: referenced_t.schema.clone(),
672+
is_rls_enabled: table.is_rls_enabled,
669673
column_names: directive_fkey.foreign_columns.clone(),
670674
},
671675
directives: ForeignKeyDirectives {

0 commit comments

Comments
 (0)