[ 
https://issues.apache.org/jira/browse/DERBY-2591?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12491657
 ] 

Bernt M. Johnsen commented on DERBY-2591:
-----------------------------------------

BTW: Since only two digits is used for YY, there is also a risk for collisions 
in a 100-year cycle (remember Y2K anyone?). This is not fixed by the attached 
patch.

> DataDictionaryImpl.getSystemSQLName() may generate duplicates
> -------------------------------------------------------------
>
>                 Key: DERBY-2591
>                 URL: https://issues.apache.org/jira/browse/DERBY-2591
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>            Reporter: Bernt M. Johnsen
>         Assigned To: Bernt M. Johnsen
>         Attachments: DERBY-2591.diff
>
>
> DataDictionaryImpl.getSystemSQLName() may generates names on the form 
> SQLYYMMDDHHMMSSmmN where mm is in 10 milliseconds and N is number to avoid 
> collisions with 10 milliseconds. The name was probably generated this way to 
> fit into the 18 caharcter limit of constraint names in older derby versions. 
> However, if a getSystemSQLName() is called 12 hours after a call on the same 
> date (e.g at 01:00:00 and 13:00:00), which is unlikely but not very unlikely, 
> a duplicate name is generated, since the HH-part is filled by the call
>                               
> generatedSystemSQLName.append(twoDigits(calendarForLastSystemSQLName.get(Calendar.HOUR)));
> and Calendar.HOUR implementes the pretty stupid idea that there are only 12 
> hours. It was definitely Calendar.HOUR_OF_DAY which gives you the hour for a 
> 24-hour clock that should have been used. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to