[keycloak-user] User attribute value length in SQL database

Marek Posolda mposolda at redhat.com
Mon Aug 10 11:20:08 EDT 2015


In my opinion, it will be better to add something like:

         <modifyDataType
             columnName="VALUE"
             newDataType="VARCHAR(2048)"
             tableName="USER_ATTRIBUTE"/>


in current jpa-changelog-1.5.0.xml in latest master. This won't require 
any PostgreSQL specific code and it will work for users of other 
databases (like MySQL etc), which will have similar issue like you and 
need attributes of bigger length. Or varchar(2048) doesn't work for you?

Marek

On 10.8.2015 16:44, Tair Sabirgaliev wrote:
> Do you object something like this:
>
> <databaseChangeLog
>    xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.8"
>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.8
>           http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.8.xsd">
>      <changeSet author=“ts at bee.kz" id="1.5.1">
>
>          <preConditions>
>              <dbms type=“postgresql" />
>          </preConditions>
>
>          <modifyDataType
>              columnName=“value"
>              newDataType=“text"
>              schemaName="public"
>              tableName="user_attribute”/>
>      </changeSet>
>
> </databaseChangeLog>
>
> The most interesting part is <preConditions/>
> http://www.liquibase.org/documentation/preconditions.html
>   
>
> --
> Tair Sabirgaliev
> Bee Software, LLP
>
>
>
> On August 10, 2015 at 19:49:48, Marek Posolda (mposolda at redhat.com(mailto:mposolda at redhat.com)) wrote:
>
>> Hi,
>>   
>> can you try to use "varchar(2048)" instead of "text" ? The potential
>> issue with "text" is, that it's PostgreSQL specific stuff and may not be
>> supported by all databases, which we need to support in Keycloak.
>>   
>> Please let me know if it works and feel free to create JIRA. We will
>> then fix Liquibase script (the thing, which we are using to create DB
>> tables and schema) and in Keycloak 1.5 it will be fixed and the length
>> should suffice. If you can fix and test by yourself and send PR to
>> Keycloak master, it will be even better :-)
>>   
>> Thanks,
>> Marek
>>   
>> On 10.8.2015 10:54, Tair Sabirgaliev wrote:
>>> Hi,
>>>
>>> When configuring Keycloak to use Active Directory we found that some
>>> attributes could not fit into user_attributes.value column in Postgresql.
>>> The problematic values are Cyrillic text. As I suspect, they are encoded
>>> using ASCII charset, thus get longer and don’t fit into default 255 length.
>>> Workaround was to change the column data type:
>>>
>>> alter table user_attribute alter COLUMN value type text;
>>>
>>> Is this the right thing to do considering database evolutions when
>>> migrating from version to version? Can this workaround be incorporated
>>> into Keycloak codebase? At least for Postgresql it is considered safe
>>> performance-wise, references here:
>>>
>>> 1. http://stackoverflow.com/questions/4848964/postgresql-difference-between-text-and-varchar-character-varying
>>> 2. http://www.depesz.com/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/
>>>
>>> Thank you!
>>> --
>>> Tair Sabirgaliev
>>> Bee Software, LLP
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> keycloak-user mailing list
>>> keycloak-user at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/keycloak-user
>>   



More information about the keycloak-user mailing list