Certain table's columns were incorrect, and will now contain correct IDs

jpoulos
Instructure Alumni
Instructure Alumni
1
879

A bug fix that was released on September 22nd may affect your integrations:

What was the problem that we fixed?

For the tables that use the function compose_version_global, the resulting id’s can be incorrectly duplicated among the records. 

Why was the problem happening?

The length of the Id in the table context_module_progressions has reached 9 digits and due to the logic built in the compose_version_global function, the id is incorrectly truncated on the left, resulting in similar id’s becoming equal.

For example, suppose we have an original ID for the a record is 79490000106085430 and the different record is id is 79490000006085430, after passing each id through the function, the resulting id for the first record loses its two first digits, and those ones are overwritten by a sequence number (in this case 20) to become 79490000206085430. For the second record, the sequence number is also 20, so it too becomes (becomes 79490000206085430 


How did we fix the problem?

We added two more digits to the compose key to allow bigger keys, avoiding the overwrite of the digits.

In the example, the new logic would result in the next values:

First record:    7949000100106085430 

Second record: 794900010006085430


What tables and columns are affected?

Table

Column

dw_learning_outcome_rubric_criterion_dim

id

dw_learning_outcome_rubric_criterion_fact

learning_outcome_rubric_criterion_id

dw_module_completion_requirement_dim

id

dw_module_completion_requirement_fact

module_completion_requirement_id

dw_module_prerequisite_dim

id

dw_module_prerequisite_fact

module_prerequisite_id

dw_module_progression_completion_requirement_dim

id

dw_quiz_question_answer_fact

quiz_question_answer_id

dw_quiz_question_answer_dim

id

dw_quiz_submission_historical_dim

id

dw_quiz_submission_historical_fact

quiz_submission_historical_id



What do I need to do to account for this change?


Review the above tables and columns and determine if your processes are dependent on these values and how they are used. Then, decide if there are adjustments, reconfigurations or changes for any component you have created around them.

1 Comment