{"push_id":1368692721,"size":3,"distinct_size":1,"ref":"refs/heads/master","head":"fa8d39ec918dfbf3209584114de09d483beadb59","before":"f900a1a107b564bbbc98e6f5d0f5959fc627258e","commits":[{"sha":"e0d83d65af87553d9d393d48e9ac2403e49825d6","author":{"name":"Onder Kalaci","email":"734c80a976e6b656829cb04c63a3ffbf30788cf6@citusdata.com"},"message":"Add ability to reorder target list for INSERT/SELECT queries\n\nThe necessity for this functionality comes from the fact that ruleutils.c is not supposed to be\nused on \"rewritten\" queries (i.e. ones that have been passed through QueryRewrite()).\nQuery rewriting is the process in which views and such are expanded,\nand, INSERT/UPDATE targetlists are reordered to match the physical order,\ndefaults etc. For the details of reordeing, see transformInsertRow().","distinct":false,"url":"https://api.github.com/repos/citusdata/citus/commits/e0d83d65af87553d9d393d48e9ac2403e49825d6"},{"sha":"1673ea937c08e13ebf4fc192da037b615b5e519d","author":{"name":"Onder Kalaci","email":"734c80a976e6b656829cb04c63a3ffbf30788cf6@citusdata.com"},"message":"Feature: INSERT INTO ... SELECT\n\nThis commit adds INSERT INTO ... SELECT feature for distributed tables.\n\nWe implement INSERT INTO ... SELECT by pushing down the SELECT to\neach shard. To compute that we use the router planner, by adding\nan \"uninstantiated\" constraint that the partition column be equal to a\ncertain value. standard_planner() distributes that constraint to all\nthe tables where it knows how to push the restriction safely. An example\nis that the tables that are connected via equi joins.\n\nThe router planner then iterates over the target table's shards,\nfor each we replace the \"uninstantiated\" restriction, with one that\nPruneShardList() handles. Do so by replacing the partitioning qual\nparameter added in multi_planner() with the current shard's\nactual boundary values. Also, add the current shard's boundary values to the\ntop level subquery to ensure that even if the partitioning qual is\nnot distributed to all the tables, we never run the queries on the shards\nthat don't match with the current shard boundaries. Finally, perform the\nnormal shard pruning to decide on whether to push the query to the\ncurrent shard or not.\n\nWe do not support certain SQLs on the subquery, which are described/commented\non ErrorIfInsertSelectQueryNotSupported().\n\nWe also added some locking on the router executor. When an INSERT/SELECT command\nruns on a distributed table with replication factor >1, we need to ensure that\nit sees the same result on each placement of a shard. So we added the ability\nsuch that router executor takes exclusive locks on shards from which the SELECT\nin an INSERT/SELECT reads in order to prevent concurrent changes. This is not a\nvery optimal solution, but it's simple and correct. The\ncitus.all_modifications_commutative can be used to avoid aggressive locking.\nAn INSERT/SELECT whose filters are known to exclude any ongoing writes can be\nmarked as commutative. See RequiresConsistentSnapshot() for the details.\n\nWe also moved the decison of whether the multiPlan should be executed on\nthe router executor or not to the planning phase. This allowed us to\nintegrate multi task router executor tasks to the router executor smoothly.","distinct":false,"url":"https://api.github.com/repos/citusdata/citus/commits/1673ea937c08e13ebf4fc192da037b615b5e519d"},{"sha":"fa8d39ec918dfbf3209584114de09d483beadb59","author":{"name":"Önder Kalacı","email":"734c80a976e6b656829cb04c63a3ffbf30788cf6@citusdata.com"},"message":"Merge pull request #859 from citusdata/feature/insert_select\n\nFeature/insert select","distinct":true,"url":"https://api.github.com/repos/citusdata/citus/commits/fa8d39ec918dfbf3209584114de09d483beadb59"}]}
{"actor":{"display_login":"onderkalaci"}}