Обсуждение: BUG #14398: Order of Joins results in different results returned

Поиск
Список
Период
Сортировка

BUG #14398: Order of Joins results in different results returned

От
vjchem@gmail.com
Дата:
VGhlIGZvbGxvd2luZyBidWcgaGFzIGJlZW4gbG9nZ2VkIG9uIHRoZSB3ZWJz
aXRlOgoKQnVnIHJlZmVyZW5jZTogICAgICAxNDM5OApMb2dnZWQgYnk6ICAg
ICAgICAgIFZpamF5IENoZW1idXJrYXIKRW1haWwgYWRkcmVzczogICAgICB2
amNoZW1AZ21haWwuY29tClBvc3RncmVTUUwgdmVyc2lvbjogOS41LjIKT3Bl
cmF0aW5nIHN5c3RlbTogICBPUyBYIDEwLjExLjYKRGVzY3JpcHRpb246ICAg
ICAgICAKClRoaXMgYXBwZWFycyB0byB1bHRpbWF0ZWx5IGJlIGEgY2FzdGlu
ZyBpc3N1ZSwgYnV0IGl0IHdhcyBzdXJwcmlzaW5nIHRvIHVzCmFuZCB0aHVz
IEkgdGhvdWdodCBJJ2QgZmlsZSBhIGJ1ZyByZXBvcnQuIEkgaGF2ZSBhIHF1
ZXJ5IHRoYXQgaGFzIHR3byBKT0lOcywKd2hlcmUgZWFjaCBKT0lOIHVzZXMg
cGFyYW1ldGVycyAkMSBhbmQgJDIuIFRoZSBvcmRlciBvZiB0aGUgSk9JTiBj
aGFuZ2VzIHRoZQpyZXN1bHRzIHJldHVybmVkLiBJIGNhbiBnZXQgdGhlIHJl
c3VsdHMgSSBleHBlY3QgYnkgZXhwbGljaXRseSBjYXN0aW5nICQxCmFuZCAk
MiBvciBieSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgdGhlIEpPSU5zLiBJcyB0
aGlzIGV4cGVjdGVkIGJlaGF2aW9yPyBJdApmZWVscyBsaWtlIEkgc2hvdWxk
IGdldCBhbiBlcnJvciBpZiB0aGUgY2FzdGluZyBpcyBhbWJpZ3VvdXMgb3Ig
dGhhdCB0aGUKb3JkZXIgb2YgdGhlIEpPSU5zIHNob3VsZCBub3QgY2hhbmdl
IHRoZSByZXN1bHRzLg0KDQpIZXJlJ3MgYSBzaW1wbGlmaWVkIHZlcnNpb24g
dGhhdCByZXByb3MgdGhpcy4gIGdldF9hcnRpY2xlc18yIHJldHVybnMgdGhl
CnJlc3VsdHMgSSdkIGV4cGVjdC4gSSBjYW4gbWFrZSAgZ2V0X2FydGljbGVz
XzEgcmV0dXJuIHRoZSBzYW1lIHJlc3VsdHMgaWYgSQpjYXN0IHRoZSBwYXJh
bWV0ZXJzIGFzIGRhdGVzIG9yIG1ha2UgdGhlbSBkYXRlcyB3aGVuIEkgY2Fs
bCBleGVjdXRlLg0KDQoNCkNSRUFURSBUQUJMRSBhcnRpY2xlKA0KICAgIGlk
IFNFUklBTCBOT1QgTlVMTCBVTklRVUUsDQogICAgUFJJTUFSWSBLRVkgKGlk
KQ0KKTsNCg0KQ1JFQVRFIFRBQkxFIGFydGljbGVfbWV0cmljICgNCiAgaWQg
U0VSSUFMIE5PVCBOVUxMIFVOSVFVRSwNCg0KICBhcnRpY2xlX2lkIElOVEVH
RVIgTk9UIE5VTEwsDQogIGRhdGFfZGF0ZSBEQVRFIE5PVCBOVUxMLA0KICBt
ZXRyaWNfbmFtZSBDSEFSQUNURVIgVkFSWUlORygxMDApIE5PVCBOVUxMLA0K
ICB2YWx1ZSBKU09OQiBOT1QgTlVMTCwNCiAgUFJJTUFSWSBLRVkgKGlkKSwN
CiAgQ09OU1RSQUlOVCBhcnRpY2xlX21ldHJpY19rZXkgVU5JUVVFIChhcnRp
Y2xlX2lkLCBkYXRhX2RhdGUsCm1ldHJpY19uYW1lKSwNCiAgQ09OU1RSQUlO
VCBhcnRpY2xlX21ldHJpY19ma2V5IEZPUkVJR04gS0VZIChhcnRpY2xlX2lk
KQ0KICAgIFJFRkVSRU5DRVMgYXJ0aWNsZShpZCkgT04gVVBEQVRFIENBU0NB
REUgT04gREVMRVRFIENBU0NBREUNCik7DQoNCg0KSU5TRVJUIElOVE8gYXJ0
aWNsZShpZCkgVkFMVUVTKDEpLCAoMik7DQoNCklOU0VSVCBJTlRPIGFydGlj
bGVfbWV0cmljKGFydGljbGVfaWQsIGRhdGFfZGF0ZSwgbWV0cmljX25hbWUs
IHZhbHVlKQ0KVkFMVUVTDQooMSwnMjAxNi0wOS0yNCcsJ2FsbF92aWV3X2R1
cmF0aW9uc19hdmVyYWdlJywneyJ2YWx1ZSI6IDEwMDB9JyksDQooMSwnMjAx
Ni0xMC0wMScsJ2FsbF92aWV3X2R1cmF0aW9uc19hdmVyYWdlJywneyJ2YWx1
ZSI6IDM3fScpLA0KKDEsJzIwMTYtMTAtMDgnLCdhbGxfdmlld19kdXJhdGlv
bnNfYXZlcmFnZScsJ3sidmFsdWUiOiAxN30nKTsNCg0KDQpJTlNFUlQgSU5U
TyBhcnRpY2xlX21ldHJpYyhhcnRpY2xlX2lkLCBkYXRhX2RhdGUsIG1ldHJp
Y19uYW1lLCB2YWx1ZSkNClZBTFVFUw0KKDEsJzIwMTYtMTAtMScsJ2FsbF92
aWV3cycsICd7InZhbHVlIjoxfScpLCgxLCcyMDE2LTEwLTInLCdhbGxfdmll
d3MnLAoneyJ2YWx1ZSI6Mn0nKSwoMSwnMjAxNi0xMC0zJywnYWxsX3ZpZXdz
JywKJ3sidmFsdWUiOjN9JyksKDEsJzIwMTYtMTAtNCcsJ2FsbF92aWV3cycs
Cid7InZhbHVlIjo0fScpLCgxLCcyMDE2LTEwLTUnLCdhbGxfdmlld3MnLAon
eyJ2YWx1ZSI6NX0nKSwoMSwnMjAxNi0xMC02JywnYWxsX3ZpZXdzJywKJ3si
dmFsdWUiOjZ9JyksKDEsJzIwMTYtMTAtNycsJ2FsbF92aWV3cycsCid7InZh
bHVlIjo3fScpLCgxLCcyMDE2LTEwLTgnLCdhbGxfdmlld3MnLAoneyJ2YWx1
ZSI6OH0nKSwoMSwnMjAxNi0xMC05JywnYWxsX3ZpZXdzJywKJ3sidmFsdWUi
Ojl9JyksKDEsJzIwMTYtMTAtMTAnLCdhbGxfdmlld3MnLAoneyJ2YWx1ZSI6
MTB9JyksKDEsJzIwMTYtMTAtMTEnLCdhbGxfdmlld3MnLAoneyJ2YWx1ZSI6
MTF9JyksKDEsJzIwMTYtMTAtMTInLCdhbGxfdmlld3MnLAoneyJ2YWx1ZSI6
MTJ9JyksKDEsJzIwMTYtMTAtMTMnLCdhbGxfdmlld3MnLAoneyJ2YWx1ZSI6
MTN9JyksKDEsJzIwMTYtMTAtMTQnLCdhbGxfdmlld3MnLAoneyJ2YWx1ZSI6
MTR9JyksKDEsJzIwMTYtMTAtMTUnLCdhbGxfdmlld3MnLAoneyJ2YWx1ZSI6
MTV9JyksKDEsJzIwMTYtMTAtMTYnLCdhbGxfdmlld3MnLAoneyJ2YWx1ZSI6
MTZ9JyksKDEsJzIwMTYtMTAtMTcnLCdhbGxfdmlld3MnLAoneyJ2YWx1ZSI6
MTd9JyksKDEsJzIwMTYtMTAtMTgnLCdhbGxfdmlld3MnLAoneyJ2YWx1ZSI6
MTh9JyksKDEsJzIwMTYtMTAtMTknLCdhbGxfdmlld3MnLCAneyJ2YWx1ZSI6
MTl9Jyk7DQoNCklOU0VSVCBJTlRPIGFydGljbGVfbWV0cmljKGFydGljbGVf
aWQsIGRhdGFfZGF0ZSwgbWV0cmljX25hbWUsIHZhbHVlKQ0KVkFMVUVTDQoo
MiwnMjAxNi0xMC0wMycsJ2FsbF92aWV3X2R1cmF0aW9uc19hdmVyYWdlJywn
eyJ2YWx1ZSI6IDEwMDB9JyksDQooMiwnMjAxNi0xMC0xMCcsJ2FsbF92aWV3
X2R1cmF0aW9uc19hdmVyYWdlJywneyJ2YWx1ZSI6IDExOX0nKTsNCg0KSU5T
RVJUIElOVE8gYXJ0aWNsZV9tZXRyaWMoYXJ0aWNsZV9pZCwgZGF0YV9kYXRl
LCBtZXRyaWNfbmFtZSwgdmFsdWUpDQpWQUxVRVMNCigyLCcyMDE2LTEwLTUn
LCdhbGxfdmlld3MnLCd7InZhbHVlIjo0fScpLCgyLCcyMDE2LTEwLTYnLCdh
bGxfdmlld3MnLCd7InZhbHVlIjo1fScpLCgyLCcyMDE2LTEwLTcnLCdhbGxf
dmlld3MnLCd7InZhbHVlIjo2fScpLCgyLCcyMDE2LTEwLTgnLCdhbGxfdmll
d3MnLCd7InZhbHVlIjo3fScpLCgyLCcyMDE2LTEwLTknLCdhbGxfdmlld3Mn
LCd7InZhbHVlIjo4fScpLCgyLCcyMDE2LTEwLTEwJywnYWxsX3ZpZXdzJywn
eyJ2YWx1ZSI6OX0nKSwoMiwnMjAxNi0xMC0xMScsJ2FsbF92aWV3cycsJ3si
dmFsdWUiOjEwfScpLCgyLCcyMDE2LTEwLTEyJywnYWxsX3ZpZXdzJywneyJ2
YWx1ZSI6MTF9JyksKDIsJzIwMTYtMTAtMTMnLCdhbGxfdmlld3MnLCd7InZh
bHVlIjoxMn0nKSwoMiwnMjAxNi0xMC0xNCcsJ2FsbF92aWV3cycsJ3sidmFs
dWUiOjEzfScpLCgyLCcyMDE2LTEwLTE1JywnYWxsX3ZpZXdzJywneyJ2YWx1
ZSI6MTR9JyksKDIsJzIwMTYtMTAtMTYnLCdhbGxfdmlld3MnLCd7InZhbHVl
IjoxNX0nKSwoMiwnMjAxNi0xMC0xNycsJ2FsbF92aWV3cycsJ3sidmFsdWUi
OjE2fScpLCgyLCcyMDE2LTEwLTE4JywnYWxsX3ZpZXdzJywneyJ2YWx1ZSI6
MTd9JyksKDIsJzIwMTYtMTAtMTknLCdhbGxfdmlld3MnLCd7InZhbHVlIjox
OH0nKSwoMiwnMjAxNi0xMC0yMCcsJ2FsbF92aWV3cycsJ3sidmFsdWUiOjE5
fScpOw0KDQoNClBSRVBBUkUgZ2V0X2FydGljbGVzXzEgQVMNClNFTEVDVA0K
ICBmaWEuaWQsDQogIGFsbF92aWV3cy50b3RhbCBBUyB2aWV3c19pbl9wZXJp
b2QNCkZST00NCiAgYXJ0aWNsZSBmaWENCkpPSU4gKA0KU0VMRUNUDQpkYWls
eV92aWV3cy5hcnRpY2xlX2lkDQpGUk9NIChTRUxFQ1QNCm1wLmRhdGUgQVMg
Z2VuZXJhdGVkX2RhdGUNCkZST00gZ2VuZXJhdGVfc2VyaWVzKCQxLCAkMiwg
JzEgZGF5Jzo6aW50ZXJ2YWwpIG1wKQ0KZGF0ZXMNCkpPSU4gYXJ0aWNsZV9t
ZXRyaWMgZGFpbHlfdmlld3MNCk9OIGRhaWx5X3ZpZXdzLmRhdGFfZGF0ZSA9
IGRhdGVzLmdlbmVyYXRlZF9kYXRlDQpXSEVSRQ0KZGFpbHlfdmlld3MubWV0
cmljX25hbWUgPSAnYWxsX3ZpZXdzJw0KR1JPVVAgQlkgZGFpbHlfdmlld3Mu
YXJ0aWNsZV9pZCkNCmF2ZXJhZ2VfcGFydHMNCk9OIGF2ZXJhZ2VfcGFydHMu
YXJ0aWNsZV9pZCA9IGZpYS5pZA0KSk9JTg0KKFNFTEVDVA0KYXJ0aWNsZV9p
ZCwNClNVTSgodmFsdWUtPj4ndmFsdWUnKTo6SU5UKSBBUyB0b3RhbA0KRlJP
TQ0KYXJ0aWNsZV9tZXRyaWMNCldIRVJFIG1ldHJpY19uYW1lID0gJ2FsbF92
aWV3cycNCkFORCBkYXRhX2RhdGUgQkVUV0VFTiAkMSBBTkQgJDINCkdST1VQ
IEJZIGFydGljbGVfaWQpIGFsbF92aWV3cw0KT04gYWxsX3ZpZXdzLmFydGlj
bGVfaWQgPSBmaWEuaWQ7DQoNClBSRVBBUkUgZ2V0X2FydGljbGVzXzIgQVMN
ClNFTEVDVA0KICBmaWEuaWQsDQogIGFsbF92aWV3cy50b3RhbCBBUyB2aWV3
c19pbl9wZXJpb2QNCkZST00NCiAgYXJ0aWNsZSBmaWENCkpPSU4NCihTRUxF
Q1QNCmFydGljbGVfaWQsDQpTVU0oKHZhbHVlLT4+J3ZhbHVlJyk6OklOVCkg
QVMgdG90YWwNCkZST00NCmFydGljbGVfbWV0cmljDQpXSEVSRSBtZXRyaWNf
bmFtZSA9ICdhbGxfdmlld3MnDQpBTkQgZGF0YV9kYXRlIEJFVFdFRU4gJDEg
QU5EICQyDQpHUk9VUCBCWSBhcnRpY2xlX2lkKSBhbGxfdmlld3MNCk9OIGFs
bF92aWV3cy5hcnRpY2xlX2lkID0gZmlhLmlkDQpKT0lOICgNClNFTEVDVA0K
ZGFpbHlfdmlld3MuYXJ0aWNsZV9pZA0KRlJPTSAoU0VMRUNUDQptcC5kYXRl
IEFTIGdlbmVyYXRlZF9kYXRlDQpGUk9NIGdlbmVyYXRlX3NlcmllcygkMSwg
JDIsICcxIGRheSc6OmludGVydmFsKSBtcCkNCmRhdGVzDQpKT0lOIGFydGlj
bGVfbWV0cmljIGRhaWx5X3ZpZXdzDQpPTiBkYWlseV92aWV3cy5kYXRhX2Rh
dGUgPSBkYXRlcy5nZW5lcmF0ZWRfZGF0ZQ0KV0hFUkUNCmRhaWx5X3ZpZXdz
Lm1ldHJpY19uYW1lID0gJ2FsbF92aWV3cycNCkdST1VQIEJZIGRhaWx5X3Zp
ZXdzLmFydGljbGVfaWQpDQphdmVyYWdlX3BhcnRzDQpPTiBhdmVyYWdlX3Bh
cnRzLmFydGljbGVfaWQgPSBmaWEuaWQ7DQoNCkVYRUNVVEUgZ2V0X2FydGlj
bGVzXzEoJzIwMTYtMDktMjhUMDA6MDA6MDAuMDAwKzAwOjAwJywKJzIwMTYt
MTAtMTZUMDA6MDA6MDAuMDAwKzAwOjAwJyk7DQpFWEVDVVRFIGdldF9hcnRp
Y2xlc18yKCcyMDE2LTA5LTI4VDAwOjAwOjAwLjAwMCswMDowMCcsCicyMDE2
LTEwLTE2VDAwOjAwOjAwLjAwMCswMDowMCcpOw0KDQoKCg==

Re: BUG #14398: Order of Joins results in different results returned

От
Tom Lane
Дата:
vjchem@gmail.com writes:
> This appears to ultimately be a casting issue, but it was surprising to us
> and thus I thought I'd file a bug report. I have a query that has two JOINs,
> where each JOIN uses parameters $1 and $2. The order of the JOIN changes the
> results returned. I can get the results I expect by explicitly casting $1
> and $2 or by changing the order of the JOINs. Is this expected behavior? It
> feels like I should get an error if the casting is ambiguous or that the
> order of the JOINs should not change the results.

I think the point is that you've got two separate uses of $1 and $2
in contexts that will lead to different conclusions about what their
types are (date or timestamptz, respectively).  Whichever one the
parser comes to first will determine its choice, and the other context
is not so incompatible as to result in an error; nor is the provided
input string.  But you'll get different results depending on that
choice.

Yes, it's ambiguous, but throwing an error would probably not make
more people happy than it makes unhappy.

            regards, tom lane