Re: Another regression in 4.2

Lon Varscsak <[email protected]>
Newsgroups gmane.comp.java.cayenne.user
Message-ID <CALAw18zocObSxTmq=GfrJENBRCgXXR0H5BjvPhPc+Ab4i3XE0A@mail.gmail.com>
In 4.1.B2-SNAPSHOT, I do not get the RTRIM behavior:

SELECT DISTINCT [t0].[average_cost], [t0].[backorder_flag],
[t0].[break_match_code], [t0].[case_location], [t0].[case_qty],
[t0].[category_code], [t0].[cgs_gl_account], [t0].[charges_group_code],
[t0].[composition_family], [t0].[composition_output_definition],
[t0].[custom_vendor], [t0].[description], [t0].[drop_ship_code],
[t0].[duties_percent], [t0].[duties_tax_cost_percent],
[t0].[envelope_item_number], [t0].[expect_date], [t0].[first_sale_date],
[t0].[freight_cost_percent], [t0].[inventory_gl_account], [t0].[lead_time],
[t0].[license_required], [t0].[market], [t0].[material],
[t0].[merchandise_cost_percent], [t0].[operator_message], [t0].[origin],
[t0].[part_number], [t0].[personalization_flag], [t0].[primary_location],
[t0].[print_specification], [t0].[print_template], [t0].[procurement_code],
[t0].[qty_expected], [t0].[qty_on_backorder], [t0].[qty_on_hand],
[t0].[qty_reserved], [t0].[qty_available], [t0].[return_gl_account],
[t0].[sales_gl_account], [t0].[sales_unit], [t0].[serial_number_flag],
[t0].[special_process], [t0].[status], [t0].[tax_flag],
[t0].[tesla_qty_on_backorder], [t0].[tesla_qty_reserved],
[t0].[unit_of_measure], [t0].[vap_cost_percent], [t0].[vendor_code],
[t0].[weight], [t0].[root_part_number] FROM [production].[dbo].[part] [t0]
WHERE *[t0].[part_number] *= ? [bind: 1->part_number:'120476']

Having the RTRIM on the lefthand side would cause any database to ignore
the index and do a table scan.

On Tue, Jul 23, 2019 at 6:23 AM Arseni Bulatski <[email protected]>
wrote:

> Hi Lon,
> I looked through your issue and tried to reproduce it.
> As I understand you have table with char PK.
> I run it on both 4.1 and 4.2 and have such results:
> For 4.1 SELECT t0.OTHER_COL, t0.PK_COL FROM CHAR_PK_TEST t0 WHERE
> RTRIM(t0.PK_COL) = ? [bind: 1->PK_COL:123]
> For 4.2 SELECT RTRIM(t0.OTHER_COL), RTRIM(t0.PK_COL) FROM CHAR_PK_TEST t0
> WHERE RTRIM(t0.PK_COL) = ? [bind: 1->PK_COL:123]
> Maybe you can add some more details for it?
>
> On Thu, Jul 18, 2019 at 7:47 PM Lon Varscsak <[email protected]>
> wrote:
>
> > Hey Nikita, this is still a problem, but looks like it's happening on
> > straight-forward fetches (possibly with "char" datatypes):
> >
> > SELECT DISTINCT [t0].[average_cost], [t0].[backorder_flag],
> > [t0].[break_match_code], [t0].[case_location], [t0].[case_qty],
> > [t0].[category_code], [t0].[cgs_gl_account],
> > RTRIM([t0].[charges_group_code]), [t0].[composition_family],
> > [t0].[composition_output_definition], [t0].[custom_vendor],
> > [t0].[description], RTRIM([t0].[drop_ship_code]), [t0].[duties_percent],
> > [t0].[duties_tax_cost_percent], RTRIM([t0].[envelope_item_number]),
> > [t0].[expect_date], [t0].[first_sale_date], [t0].[freight_cost_percent],
> > [t0].[inventory_gl_account], [t0].[lead_time], [t0].[license_required],
> > RTRIM([t0].[market]), [t0].[material], [t0].[merchandise_cost_percent],
> > [t0].[operator_message], [t0].[origin], RTRIM([t0].[part_number]),
> > [t0].[personalization_flag], [t0].[primary_location],
> > [t0].[print_specification], [t0].[print_template],
> > RTRIM([t0].[procurement_code]), [t0].[qty_expected],
> > [t0].[qty_on_backorder], [t0].[qty_on_hand], [t0].[qty_reserved],
> > [t0].[qty_available], [t0].[return_gl_account], [t0].[sales_gl_account],
> > [t0].[sales_unit], [t0].[serial_number_flag], [t0].[special_process],
> > [t0].[status], [t0].[tax_flag], [t0].[tesla_qty_on_backorder],
> > [t0].[tesla_qty_reserved], [t0].[unit_of_measure],
> [t0].[vap_cost_percent],
> > RTRIM([t0].[vendor_code]), [t0].[weight], RTRIM([t0].[root_part_number])
> > FROM [production.dbo.part] [t0] WHERE *RTRIM([t0].[part_number])* = ?
> > [bind: 1->part_number:'120476']
> >
> >
> >
> > On Tue, May 14, 2019 at 10:47 AM Lon Varscsak <[email protected]>
> > wrote:
> >
> > > Thanks!
> > >
> > > On Sat, May 11, 2019 at 5:04 AM Nikita Timofeev <
> > [email protected]>
> > > wrote:
> > >
> > >> Hi,
> > >>
> > >> Fixed this, see [1]. Thank you for another catch!
> > >>
> > >> [1] https://issues.apache.org/jira/browse/CAY-2578
> > >>
> > >> On Mon, May 6, 2019 at 11:28 PM Lon Varscsak <[email protected]>
> > >> wrote:
> > >> >
> > >> > Hey all,
> > >> >
> > >> > I have a join from order_detail_sales to continuity_detail based on
> > >> > order_number and order_line_number.  When fetching the to-one
> > >> > getContinuityDetail I'm getting an error because the query generated
> > is
> > >> > swapping the keys:
> > >> >
> > >> > SELECT [t0].[intent_date], [t0].[line_end_date],
> > [t0].[line_setup_date],
> > >> > [t0].[next_ship_date], RTRIM([t0].[process_flag]),
> > [t0].[reminder_date],
> > >> > [t0].[reminder_days], [t0].[scheduled_shipments],
> > [t0].[ship_frequency],
> > >> > [t0].[order_number], [t0].[order_line_number] FROM
> > >> > [production.dbo.continuity_detail] [t0] WHERE *( (
> [t0].[order_number]
> > >> = ?
> > >> > ) AND ( [t0].[order_line_number] = ? ) ) [bind: 1:1, 2:57874832]*
> > >> >
> > >> > In reality "57874832" is the order_number and "1" is the
> > >> order_line_number,
> > >> > but the query generator has swapped them.  I've verified the joins
> in
> > >> the
> > >> > modeler (and 4.1 works).
> > >> >
> > >> > Thanks,
> > >> >
> > >> > Lon
> > >>
> > >>
> > >>
> > >> --
> > >> Best regards,
> > >> Nikita Timofeev
> > >>
> > >
> >
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.