diff --git a/src/RLS/PolicyManagers/TableRLSManager.php b/src/RLS/PolicyManagers/TableRLSManager.php index 3f87bf3e..64b0334c 100644 --- a/src/RLS/PolicyManagers/TableRLSManager.php +++ b/src/RLS/PolicyManagers/TableRLSManager.php @@ -528,7 +528,7 @@ class TableRLSManager implements RLSPolicyManager if ($table === tenancy()->model()->getTable()) { // Convert tenant key to text to match the session variable type - $query .= "{$column}::text = current_setting('{$sessionTenantKey}')\n"; + $query .= "{$column}::text = (select current_setting('{$sessionTenantKey}'))\n"; continue; } diff --git a/src/RLS/PolicyManagers/TraitRLSManager.php b/src/RLS/PolicyManagers/TraitRLSManager.php index 52ed15ea..f6cb5060 100644 --- a/src/RLS/PolicyManagers/TraitRLSManager.php +++ b/src/RLS/PolicyManagers/TraitRLSManager.php @@ -67,7 +67,7 @@ class TraitRLSManager implements RLSPolicyManager return <<getForeignKeyName()} IN ( SELECT {$parent->getKeyName()} FROM {$parent->getTable()} - WHERE {$tenantKeyColumn}::text = current_setting('{$sessionTenantKey}') + WHERE {$tenantKeyColumn}::text = (select current_setting('{$sessionTenantKey}')) ) ); SQL; diff --git a/tests/RLS/TableManagerTest.php b/tests/RLS/TableManagerTest.php index c5c8d254..a1592f6f 100644 --- a/tests/RLS/TableManagerTest.php +++ b/tests/RLS/TableManagerTest.php @@ -582,7 +582,7 @@ test('table rls manager generates queries correctly', function() { expect(array_values(app(TableRLSManager::class)->generateQueries()))->toEqualCanonicalizing([ <<generateQueries($paths))->toContain( <<generateQueries())->toContain( <<