Patent ID: 6609131
Filing Date: 2003-08-19
Classification: G06F,Y10S

Abstract:
A method for processing a statement that specifies a join between a first object and a second object based on a join key, the method comprising the steps of:performing multi-level static partitioning of the first object, including performing the steps of: statically partitioning the first object at a first level by applying a first partitioning criteria to the first object to produce a first set of partitions; and statically partitioning the first object at a second level based on said join key, wherein the static partitioning based on said join key is performed by applying a second partitioning criteria to each partition in said first set of partitions to produce a second set of partitions; during execution of said statement, using the second level of static partitioning of said first object as a basis for distributing data of said first object, including performing the steps of: inspecting partitioning metadata based on said statement to determine that the second level of static partitioning of said first object, and not said first level of static partitioning, should be used as a basis for distributing data from said first object to a plurality of slave processes; distributing data from said first and second objects to each slave process of said plurality of slave processes based on said second partitioning criteria, including distributing to each slave process of said plurality of slave processes a first subset of data from said first object, wherein the first subset of data that is distributed to each slave process is established based on said second set of partitions; distributing to each slave process of said plurality of slave processes a second subset of data from said second object, wherein the second subset of data that is distributed to each slave process is established based on said second partitioning criteria; and causing each slave process of said plurality of slave processes to perform a join between the first subset of data assigned to the slave process and the second subset of data assigned to the slave process.