Changeset: 3c2436287db3 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/3c2436287db3 Branch: Aug2024 Log Message:
Merge heads diffs (truncated from 542 to 300 lines): diff --git a/clients/odbc/winsetup/setup.c b/clients/odbc/winsetup/setup.c --- a/clients/odbc/winsetup/setup.c +++ b/clients/odbc/winsetup/setup.c @@ -297,7 +297,7 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR SetDlgItemText(hwndDlg, IDC_EDIT_TIMEZONE, datap->timezone ? datap->timezone : ""); SetDlgItemText(hwndDlg, IDC_EDIT_LOGFILE, datap->logfile ? datap->logfile : ""); // Client Info - SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTINFO, datap->clientinfo ? datap->clientinfo : "off"); + SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTINFO, datap->clientinfo ? datap->clientinfo : "on"); SetDlgItemText(hwndDlg, IDC_EDIT_APPLICNAME, datap->applicationname ? datap->applicationname : ""); SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTREMARK, datap->clientremark ? datap->clientremark : ""); if (datap->request == ODBC_ADD_DSN && datap->dsn && *datap->dsn) @@ -333,7 +333,7 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR } GetDlgItemText(hwndDlg, IDC_EDIT_CLIENTINFO, buf, sizeof(buf)); if (strcmp("on", buf) != 0 && strcmp("off", buf) != 0) { - MessageBox(hwndDlg, "Client Info must be set to on or off.\nDefault is off.", NULL, MB_ICONERROR); + MessageBox(hwndDlg, "Client Info must be set to on or off.\nDefault is on.", NULL, MB_ICONERROR); return TRUE; } @@ -585,7 +585,7 @@ ConfigDSN(HWND parent, WORD request, LPC MergeFromProfileString(data.dsn, &data.autocommit, "AutoCommit", "on"); MergeFromProfileString(data.dsn, &data.timezone, "TimeZone", ""); MergeFromProfileString(data.dsn, &data.logfile, "LogFile", ""); - MergeFromProfileString(data.dsn, &data.clientinfo, "ClientInfo", "off"); + MergeFromProfileString(data.dsn, &data.clientinfo, "ClientInfo", "on"); MergeFromProfileString(data.dsn, &data.applicationname, "AppName", ""); MergeFromProfileString(data.dsn, &data.clientremark, "ClientRemark", ""); diff --git a/clients/odbc/winsetup/winredist/ds16gt.dll b/clients/odbc/winsetup/winredist/ds16gt.dll deleted file mode 100755 index ea94cdd0ef7d009441d6b56da7464cb8f2515384..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 diff --git a/clients/odbc/winsetup/winredist/ds32gt.dll b/clients/odbc/winsetup/winredist/ds32gt.dll deleted file mode 100755 index 0cc5f7be21475f4b88dee87edcc50689d812f298..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 diff --git a/clients/odbc/winsetup/winredist/odbc16gt.dll b/clients/odbc/winsetup/winredist/odbc16gt.dll deleted file mode 100755 index 30ca156b9f363d1b4095ab4bf1c7d8285d51a467..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 diff --git a/clients/odbc/winsetup/winredist/odbc32.dll b/clients/odbc/winsetup/winredist/odbc32.dll deleted file mode 100755 index b5c2ac81f64cfe599710e3928d4cf1d39ebfbb6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 diff --git a/clients/odbc/winsetup/winredist/odbc32gt.dll b/clients/odbc/winsetup/winredist/odbc32gt.dll deleted file mode 100755 index d420ecbb2dd84495100ccb2075d30f24557c18e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 diff --git a/clients/odbc/winsetup/winredist/odbccp32.cpl b/clients/odbc/winsetup/winredist/odbccp32.cpl deleted file mode 100755 index 9160bc01ab105cb0e3e1d1b6146c31c9ecf93b41..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 diff --git a/clients/odbc/winsetup/winredist/odbccp32.dll b/clients/odbc/winsetup/winredist/odbccp32.dll deleted file mode 100755 index c75f2deedd5b1d730d80bf5ff672c5b13fe055ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 diff --git a/clients/odbc/winsetup/winredist/odbccr32.dll b/clients/odbc/winsetup/winredist/odbccr32.dll deleted file mode 100755 index 42471b014a009d1023e47f2f028b1d96cec8f338..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 diff --git a/clients/odbc/winsetup/winredist/odbcinst.chm b/clients/odbc/winsetup/winredist/odbcinst.chm deleted file mode 100644 index 5587f04fc28e3e764118e5c6088e614ddcc222a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 diff --git a/clients/odbc/winsetup/winredist/odbcint.dll b/clients/odbc/winsetup/winredist/odbcint.dll deleted file mode 100755 index f18360479e3e64b74be5dd452c61e4cd360b7b05..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 diff --git a/clients/odbc/winsetup/winredist/odbctrac.dll b/clients/odbc/winsetup/winredist/odbctrac.dll deleted file mode 100755 index b62ab440c550bbd284effc294bfad8cff2258a7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@<O00001 diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c --- a/gdk/gdk_select.c +++ b/gdk/gdk_select.c @@ -762,11 +762,35 @@ fullscan_str(BATiter *bi, struct candite oid o; QryCtx *qry_ctx = MT_thread_get_qry_ctx(); - if (!equi || !GDK_ELIMDOUBLES(bi->vh)) + if (anti && tl == th && !bi->nonil && GDK_ELIMDOUBLES(bi->vh) && + strcmp(tl, str_nil) != 0 && + strLocate(bi->vh, str_nil) == (var_t) -2) { + /* anti-equi select for non-nil value, and there are no + * nils, so we can use fast path; trigger by setting + * nonil */ + bi->nonil = true; + } + if (!((equi || + (anti && tl == th && (bi->nonil || strcmp(tl, str_nil) == 0))) && + GDK_ELIMDOUBLES(bi->vh))) return fullscan_any(bi, ci, bn, tl, th, li, hi, equi, anti, lval, hval, lnil, cnt, hseq, dst, maximum, imprints, algo); if ((pos = strLocate(bi->vh, tl)) == (var_t) -2) { + if (anti) { + /* return the whole shebang */ + *algo = "select: fullscan anti-equi strelim (all)"; + if (BATextend(bn, ncand) != GDK_SUCCEED) { + BBPreclaim(bn); + return BUN_NONE; + } + dst = Tloc(bn, 0); + TIMEOUT_LOOP_IDX(p, ncand, qry_ctx) { + dst[p] = canditer_next(ci); + } + TIMEOUT_CHECK(qry_ctx, GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); + return ncand; + } *algo = "select: fullscan equi strelim (nomatch)"; return 0; } @@ -774,40 +798,74 @@ fullscan_str(BATiter *bi, struct candite BBPreclaim(bn); return BUN_NONE; } - *algo = "select: fullscan equi strelim"; + *algo = anti ? "select: fullscan anti-equi strelim" : "select: fullscan equi strelim"; assert(pos >= GDK_VAROFFSET); switch (bi->width) { case 1: { const unsigned char *ptr = (const unsigned char *) bi->base; pos -= GDK_VAROFFSET; if (ci->tpe == cand_dense) { - TIMEOUT_LOOP_IDX(p, ncand, qry_ctx) { - o = canditer_next_dense(ci); - if (ptr[o - hseq] == pos) { - dst = buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) - * (dbl) (ncand-p) * 1.1 + 1024), - maximum); - if (dst == NULL) { - BBPreclaim(bn); - return BUN_NONE; + if (anti) { + TIMEOUT_LOOP_IDX(p, ncand, qry_ctx) { + o = canditer_next_dense(ci); + if (ptr[o - hseq] != pos) { + dst = buninsfix(bn, dst, cnt, o, + (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) + * (dbl) (ncand-p) * 1.1 + 1024), + maximum); + if (dst == NULL) { + BBPreclaim(bn); + return BUN_NONE; + } + cnt++; } - cnt++; + } + } else { + TIMEOUT_LOOP_IDX(p, ncand, qry_ctx) { + o = canditer_next_dense(ci); + if (ptr[o - hseq] == pos) { + dst = buninsfix(bn, dst, cnt, o, + (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) + * (dbl) (ncand-p) * 1.1 + 1024), + maximum); + if (dst == NULL) { + BBPreclaim(bn); + return BUN_NONE; + } + cnt++; + } } } } else { - TIMEOUT_LOOP_IDX(p, ncand, qry_ctx) { - o = canditer_next(ci); - if (ptr[o - hseq] == pos) { - dst = buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) - * (dbl) (ncand-p) * 1.1 + 1024), - maximum); - if (dst == NULL) { - BBPreclaim(bn); - return BUN_NONE; + if (anti) { + TIMEOUT_LOOP_IDX(p, ncand, qry_ctx) { + o = canditer_next(ci); + if (ptr[o - hseq] != pos) { + dst = buninsfix(bn, dst, cnt, o, + (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) + * (dbl) (ncand-p) * 1.1 + 1024), + maximum); + if (dst == NULL) { + BBPreclaim(bn); + return BUN_NONE; + } + cnt++; } - cnt++; + } + } else { + TIMEOUT_LOOP_IDX(p, ncand, qry_ctx) { + o = canditer_next(ci); + if (ptr[o - hseq] == pos) { + dst = buninsfix(bn, dst, cnt, o, + (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) + * (dbl) (ncand-p) * 1.1 + 1024), + maximum); + if (dst == NULL) { + BBPreclaim(bn); + return BUN_NONE; + } + cnt++; + } } } } @@ -817,33 +875,67 @@ fullscan_str(BATiter *bi, struct candite const unsigned short *ptr = (const unsigned short *) bi->base; pos -= GDK_VAROFFSET; if (ci->tpe == cand_dense) { - TIMEOUT_LOOP_IDX(p, ncand, qry_ctx) { - o = canditer_next_dense(ci); - if (ptr[o - hseq] == pos) { - dst = buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) - * (dbl) (ncand-p) * 1.1 + 1024), - maximum); - if (dst == NULL) { - BBPreclaim(bn); - return BUN_NONE; + if (anti) { + TIMEOUT_LOOP_IDX(p, ncand, qry_ctx) { + o = canditer_next_dense(ci); + if (ptr[o - hseq] != pos) { + dst = buninsfix(bn, dst, cnt, o, + (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) + * (dbl) (ncand-p) * 1.1 + 1024), + maximum); + if (dst == NULL) { + BBPreclaim(bn); + return BUN_NONE; + } + cnt++; } - cnt++; + } + } else { + TIMEOUT_LOOP_IDX(p, ncand, qry_ctx) { + o = canditer_next_dense(ci); + if (ptr[o - hseq] == pos) { + dst = buninsfix(bn, dst, cnt, o, + (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) + * (dbl) (ncand-p) * 1.1 + 1024), + maximum); + if (dst == NULL) { + BBPreclaim(bn); + return BUN_NONE; + } + cnt++; + } } } } else { - TIMEOUT_LOOP_IDX(p, ncand, qry_ctx) { - o = canditer_next(ci); - if (ptr[o - hseq] == pos) { - dst = buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) - * (dbl) (ncand-p) * 1.1 + 1024), - maximum); - if (dst == NULL) { _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org