mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	fix: constraints should not be null (#10717)
## About the changes In our code, we're not expecting constraints to be null: https://github.com/search?q=repo%3AUnleash%2Funleash%20jsonb_array_elements(constraints)&type=code It's unlikely to get a null value in constraints when using our API or UI, but there might be cases where this can happen, as we saw in our logs: ``` error: select "context_fields"."name", "context_fields"."description", "context_fields"."stickiness", "context_fields"."sort_order", "context_fields"."legal_values", "context_fields"."created_at", COUNT(DISTINCT CASE WHEN features.archived_at IS NULL THEN feature_strategies.project_name END) AS used_in_projects, COUNT(DISTINCT CASE WHEN features.archived_at IS NULL THEN feature_strategies.feature_name END) AS used_in_features from "context_fields" LEFT JOIN feature_strategies ON EXISTS ( SELECT 1 FROM jsonb_array_elements(feature_strategies.constraints) AS elem WHERE elem ->> 'contextName' = context_fields.name ) left join "features" on "features"."name" = "feature_strategies"."feature_name" group by "context_fields"."name", "context_fields"."description", "context_fields"."stickiness", "context_fields"."sort_order", "context_fields"."created_at" order by "name" asc - cannot extract elements from a scalar ``` which is likely due to: `jsonb_array_elements(feature_strategies.constraints)` with null constraints For this reason, it seems reasonable to enforce the constraint at the database level.
This commit is contained in:
		
							parent
							
								
									562f7c5aaa
								
							
						
					
					
						commit
						fb5d4cc7a1
					
				
							
								
								
									
										19
									
								
								src/migrations/20251002095623-not-null-constraints.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/migrations/20251002095623-not-null-constraints.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| exports.up = function (db) { | ||||
|     return db.runSql(` | ||||
|         UPDATE feature_strategies  | ||||
|         SET constraints = '[]'::jsonb  | ||||
|         WHERE constraints IS NULL; | ||||
|          | ||||
|         ALTER TABLE feature_strategies  | ||||
|         ALTER COLUMN constraints SET DEFAULT '[]'::jsonb, | ||||
|         ALTER COLUMN constraints SET NOT NULL; | ||||
|     `);
 | ||||
| }; | ||||
| 
 | ||||
| exports.down = function (db) { | ||||
|     return db.runSql(` | ||||
|         ALTER TABLE feature_strategies  | ||||
|         ALTER COLUMN constraints DROP DEFAULT, | ||||
|         ALTER COLUMN constraints DROP NOT NULL; | ||||
|     `);
 | ||||
| }; | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user