Jump to content

Halloween Problem: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
ce
Gregburd (talk | contribs)
m Expanded the summary, added two more salient references, and a quote explaining the name's relationship to the topic.
Line 1: Line 1:
{{orphan|date=September 2008}}
{{orphan|date=September 2008}}


In computing, the '''Halloween Problem''' refers to a phenomenon in [[database]]s in which an [[update]] operation produces a change in the physical location of a row, possibly producing the row to be visited more than once during the operation.
In computing, the '''Halloween Problem''' refers to a phenomenon in [[database]]s in which an [[update]] operation causes a change in the physical location of a row, potentially allowing the row to be visited more than once during the operation. This could even cause an infinite loop in some cases where updates continually place the updated record ahead of the scan performing the update operation.


The potential for this database error was first discovered by Don Chamberlin, Pat Selinger, and Morton Astrahan in 1976, on [[Halloween]] day while working on a query that was supposed to give a ten percent raise to every employee who earned less than $25,000. This query would run successfully, with no errors, but when finished all the employees in the database earned at least $25,000, because it kept giving them a raise until they reached that level. The expectation was that the query would iterate over each of the employee records with a salary less than $25,000 precisely once. In fact, because even updated records were visible to the query execution engine and so continued to match the query's criteria, salary records were matching multiple times and each time being given a 10% raise until they were all greater than $25,000.
The name was given because it was discovered on [[Halloween]].

The name is not descriptive of the nature of the problem but rather was given due to the day it was discovered. As recounted by Don Chamberlin,
<blockquote>
Pat and Morton discovered this problem on Halloween .... I remember they came into my office and said, ‘Chamberlin, look at this. We have to make sure that when the optimizer is making a plan for processing an update, it doesn’t use an index that is based on the field that is being updated. How are we going to do that?’ It happened to be on a Friday, and we said, ‘Listen, we are not going to be able to solve this problem this afternoon. Let’s just give it a name. We’ll call it the Halloween Problem and we’ll work on it next week.’ And it turns out it has been called that ever since.
</blockquote>


== References ==
== References ==
* [http://www.mcjones.org/System_R/SQL_Reunion_95/sqlr95-System.html The 1995 SQL Reunion (Protokoll)]
* [http://www.mcjones.org/System_R/SQL_Reunion_95/sqlr95-System.html The 1995 SQL Reunion (Protokoll)]
* [http://blogs.msdn.com/mikechampion/archive/2006/07/20/672208.aspx The "Halloween Problem" for XML APIs], Mike Champion's weblog.
* [http://blogs.msdn.com/mikechampion/archive/2006/07/20/672208.aspx The "Halloween Problem" for XML APIs], Mike Champion's weblog.
* [http://www.noncombatant.org/trove/fitzpatrick-anecdotes.pdf A well-intentioned query and the Halloween Problem], Los Alamos National Laboratory, Anecdotes, IEEE Annals of the History of Computing
* Quotation from Donald D. Chamberlin, Charles Babbage Institute, OH 329


[[Category:Databases]]
[[Category:Databases]]

Revision as of 20:26, 26 February 2009

In computing, the Halloween Problem refers to a phenomenon in databases in which an update operation causes a change in the physical location of a row, potentially allowing the row to be visited more than once during the operation. This could even cause an infinite loop in some cases where updates continually place the updated record ahead of the scan performing the update operation.

The potential for this database error was first discovered by Don Chamberlin, Pat Selinger, and Morton Astrahan in 1976, on Halloween day while working on a query that was supposed to give a ten percent raise to every employee who earned less than $25,000. This query would run successfully, with no errors, but when finished all the employees in the database earned at least $25,000, because it kept giving them a raise until they reached that level. The expectation was that the query would iterate over each of the employee records with a salary less than $25,000 precisely once. In fact, because even updated records were visible to the query execution engine and so continued to match the query's criteria, salary records were matching multiple times and each time being given a 10% raise until they were all greater than $25,000.

The name is not descriptive of the nature of the problem but rather was given due to the day it was discovered. As recounted by Don Chamberlin,

Pat and Morton discovered this problem on Halloween .... I remember they came into my office and said, ‘Chamberlin, look at this. We have to make sure that when the optimizer is making a plan for processing an update, it doesn’t use an index that is based on the field that is being updated. How are we going to do that?’ It happened to be on a Friday, and we said, ‘Listen, we are not going to be able to solve this problem this afternoon. Let’s just give it a name. We’ll call it the Halloween Problem and we’ll work on it next week.’ And it turns out it has been called that ever since.

References