Tenant Configuration values varchar to text - support bigger values f… (#2938)

* Tenant Configuration values varchar to text - support bigger values for configs
access_control_context varchar to text - support bigger values for configs

* Add size constraint in App for Tenant 'conf.value' and rollout/target_filter_query 'access_control_context

* add explicitly not null constraint for clarity
This commit is contained in:
Vasil Ilchev
2026-02-26 12:15:43 +02:00
committed by GitHub
parent 14f754b30e
commit 937195af1e
12 changed files with 40 additions and 13 deletions

View File

@@ -34,6 +34,11 @@ public interface Rollout extends NamedEntity {
*/
int APPROVAL_REMARK_MAX_SIZE = 255;
/**
* Maximum length of access control context.
*/
int ACCESS_CONTROL_CONTEXT_MAX_SIZE = 32768;
/**
* @return <code>true</code> if the rollout is deleted and only kept for
* history purposes.

View File

@@ -46,6 +46,11 @@ public interface TargetFilterQuery extends TenantAwareBaseEntity {
*/
int QUERY_MAX_SIZE = 1024;
/**
* Maximum length of access control context.
*/
int ACCESS_CONTROL_CONTEXT_MAX_SIZE = 32768;
/**
* Allowed values for auto-assign action type
*/

View File

@@ -22,7 +22,7 @@ public interface TenantConfiguration extends TenantAwareBaseEntity {
/**
* Maximum length of tenant configuration value.
*/
int VALUE_MAX_SIZE = 512;
int VALUE_MAX_SIZE = 32768;
/**
* @return key of the entry

View File

@@ -111,7 +111,7 @@ CREATE TABLE sp_tenant_configuration (
optlock_revision BIGINT,
tenant VARCHAR(40) NOT NULL,
conf_key VARCHAR(128) NOT NULL,
conf_value VARCHAR(512) NOT NULL,
conf_value CLOB NOT NULL,
PRIMARY KEY (id)
);
CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant);
@@ -244,7 +244,7 @@ CREATE TABLE sp_rollout (
approval_decided_by VARCHAR(64),
approval_remark VARCHAR(255),
weight INTEGER NOT NULL,
access_control_context VARCHAR(4096),
access_control_context CLOB,
is_dynamic BOOLEAN,
PRIMARY KEY (id)
);
@@ -305,7 +305,7 @@ CREATE TABLE sp_target_filter_query (
auto_assign_weight INTEGER NOT NULL,
auto_assign_initiated_by VARCHAR(64),
confirmation_required BOOLEAN,
access_control_context VARCHAR(4096),
access_control_context CLOB,
PRIMARY KEY (id)
);
CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant);

View File

@@ -0,0 +1,3 @@
ALTER TABLE sp_tenant_configuration ALTER COLUMN conf_value CLOB NOT NULL;
ALTER TABLE sp_target_filter_query ALTER COLUMN access_control_context CLOB;
ALTER TABLE sp_rollout ALTER COLUMN access_control_context CLOB;

View File

@@ -111,7 +111,7 @@ CREATE TABLE sp_tenant_configuration (
optlock_revision BIGINT,
tenant VARCHAR(40) NOT NULL,
conf_key VARCHAR(128) NOT NULL,
conf_value VARCHAR(512) NOT NULL,
conf_value TEXT NOT NULL,
PRIMARY KEY (id)
);
CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant);
@@ -244,7 +244,7 @@ CREATE TABLE sp_rollout (
approval_decided_by VARCHAR(64),
approval_remark VARCHAR(255),
weight INTEGER NOT NULL,
access_control_context VARCHAR(4096),
access_control_context TEXT,
is_dynamic BOOLEAN,
PRIMARY KEY (id)
);
@@ -305,7 +305,7 @@ CREATE TABLE sp_target_filter_query (
auto_assign_weight INTEGER NOT NULL,
auto_assign_initiated_by VARCHAR(64),
confirmation_required BOOLEAN,
access_control_context VARCHAR(4096),
access_control_context TEXT,
PRIMARY KEY (id)
);
CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant);

View File

@@ -0,0 +1,3 @@
ALTER TABLE sp_tenant_configuration MODIFY conf_value TEXT NOT NULL;
ALTER TABLE sp_target_filter_query MODIFY access_control_context TEXT;
ALTER TABLE sp_rollout MODIFY access_control_context TEXT;

View File

@@ -111,7 +111,7 @@ CREATE TABLE sp_tenant_configuration (
optlock_revision BIGINT,
tenant VARCHAR(40) NOT NULL,
conf_key VARCHAR(128) NOT NULL,
conf_value VARCHAR(512) NOT NULL,
conf_value TEXT NOT NULL,
PRIMARY KEY (id)
);
CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant);
@@ -244,7 +244,7 @@ CREATE TABLE sp_rollout (
approval_decided_by VARCHAR(64),
approval_remark VARCHAR(255),
weight INTEGER NOT NULL,
access_control_context VARCHAR(4096),
access_control_context TEXT,
is_dynamic BOOLEAN,
PRIMARY KEY (id)
);
@@ -305,7 +305,7 @@ CREATE TABLE sp_target_filter_query (
auto_assign_weight INTEGER NOT NULL,
auto_assign_initiated_by VARCHAR(64),
confirmation_required BOOLEAN,
access_control_context VARCHAR(4096),
access_control_context TEXT,
PRIMARY KEY (id)
);
CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant);

View File

@@ -0,0 +1,5 @@
ALTER TABLE sp_tenant_configuration
ALTER COLUMN conf_value TYPE TEXT,
ALTER COLUMN conf_value SET NOT NULL;
ALTER TABLE sp_target_filter_query ALTER COLUMN access_control_context TYPE TEXT;
ALTER TABLE sp_rollout ALTER COLUMN access_control_context TYPE TEXT;

View File

@@ -22,6 +22,7 @@ import jakarta.persistence.Converter;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.Lob;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.NamedAttributeNode;
import jakarta.persistence.NamedEntityGraph;
@@ -147,6 +148,8 @@ public class JpaRollout extends AbstractJpaNamedEntity implements Rollout, Event
@Setter
@Column(name = "access_control_context")
@Lob
@Size(max = Rollout.ACCESS_CONTROL_CONTEXT_MAX_SIZE)
private String accessControlContext;
@Setter

View File

@@ -16,6 +16,7 @@ import jakarta.persistence.Convert;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.Lob;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotEmpty;
@@ -73,6 +74,8 @@ public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity imple
private boolean confirmationRequired;
@Column(name = "access_control_context")
@Lob
@Size(max = TargetFilterQuery.ACCESS_CONTROL_CONTEXT_MAX_SIZE)
private String accessControlContext;
public JpaTargetFilterQuery(final String name, final String query, final DistributionSet autoAssignDistributionSet,

View File

@@ -9,9 +9,9 @@
*/
package org.eclipse.hawkbit.repository.jpa.model;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Lob;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
@@ -42,8 +42,8 @@ public class JpaTenantConfiguration extends AbstractJpaTenantAwareBaseEntity imp
@NotNull
private String key;
@Column(name = "conf_value", length = TenantConfiguration.VALUE_MAX_SIZE, nullable = false)
@Basic
@Column(name = "conf_value", nullable = false)
@Lob
@Size(max = TenantConfiguration.VALUE_MAX_SIZE)
@NotNull
private String value;