forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit18bac60
committed
Let regexp_replace() make use of REG_NOSUB when feasible.
If the replacement string doesn't contain \1...\9, then we don'tneed sub-match locations, so we can use the REG_NOSUB optimizationhere too. There's already a pre-scan of the replacement stringto look for backslashes, so extend that to check for digits, andrefactor to allow that to happen before we compile the regexp.While at it, try to speed up the pre-scan by using memchr() insteadof a handwritten loop. It's likely that this is lost in the noisecompared to the regexp processing proper, but maybe not. In anycase, this coding is shorter.Also, add some test cases to improve the poor coverage ofappendStringInfoRegexpSubstr().Discussion:https://postgr.es/m/3534632.1628536485@sss.pgh.pa.us1 parente126945 commit18bac60
File tree
5 files changed
+90
-65
lines changed- src
- backend/utils/adt
- include/utils
- test/regress
- expected
- sql
5 files changed
+90
-65
lines changedLines changed: 9 additions & 14 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
630 | 630 |
| |
631 | 631 |
| |
632 | 632 |
| |
633 |
| - | |
634 |
| - | |
635 |
| - | |
636 | 633 |
| |
637 |
| - | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
638 | 637 |
| |
639 | 638 |
| |
640 | 639 |
| |
| |||
648 | 647 |
| |
649 | 648 |
| |
650 | 649 |
| |
651 |
| - | |
652 | 650 |
| |
653 | 651 |
| |
654 | 652 |
| |
| |||
672 | 670 |
| |
673 | 671 |
| |
674 | 672 |
| |
675 |
| - | |
676 |
| - | |
677 |
| - | |
678 |
| - | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
679 | 676 |
| |
680 | 677 |
| |
681 | 678 |
| |
| |||
694 | 691 |
| |
695 | 692 |
| |
696 | 693 |
| |
697 |
| - | |
698 | 694 |
| |
699 | 695 |
| |
700 | 696 |
| |
| |||
723 | 719 |
| |
724 | 720 |
| |
725 | 721 |
| |
726 |
| - | |
727 |
| - | |
728 |
| - | |
729 | 722 |
| |
730 |
| - | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
731 | 726 |
| |
732 | 727 |
| |
733 | 728 |
| |
|
Lines changed: 53 additions & 48 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
4359 | 4359 |
| |
4360 | 4360 |
| |
4361 | 4361 |
| |
4362 |
| - | |
| 4362 | + | |
4363 | 4363 |
| |
4364 |
| - | |
| 4364 | + | |
| 4365 | + | |
| 4366 | + | |
4365 | 4367 |
| |
4366 |
| - | |
4367 |
| - | |
| 4368 | + | |
| 4369 | + | |
4368 | 4370 |
| |
| 4371 | + | |
4369 | 4372 |
| |
4370 | 4373 |
| |
4371 | 4374 |
| |
4372 |
| - | |
4373 |
| - | |
4374 |
| - | |
4375 |
| - | |
4376 |
| - | |
4377 |
| - | |
4378 |
| - | |
4379 |
| - | |
4380 |
| - | |
| 4375 | + | |
4381 | 4376 |
| |
4382 |
| - | |
| 4377 | + | |
| 4378 | + | |
| 4379 | + | |
| 4380 | + | |
| 4381 | + | |
| 4382 | + | |
| 4383 | + | |
4383 | 4384 |
| |
4384 |
| - | |
4385 |
| - | |
| 4385 | + | |
| 4386 | + | |
| 4387 | + | |
| 4388 | + | |
4386 | 4389 |
| |
4387 | 4390 |
| |
4388 |
| - | |
4389 |
| - | |
| 4391 | + | |
4390 | 4392 |
| |
4391 | 4393 |
| |
4392 | 4394 |
| |
| |||
4403 | 4405 |
| |
4404 | 4406 |
| |
4405 | 4407 |
| |
4406 |
| - | |
4407 | 4408 |
| |
4408 |
| - | |
| 4409 | + | |
4409 | 4410 |
| |
4410 | 4411 |
| |
4411 | 4412 |
| |
4412 | 4413 |
| |
4413 | 4414 |
| |
4414 |
| - | |
4415 |
| - | |
4416 |
| - | |
4417 |
| - | |
4418 |
| - | |
4419 |
| - | |
4420 |
| - | |
4421 |
| - | |
4422 |
| - | |
4423 |
| - | |
4424 |
| - | |
| 4415 | + | |
| 4416 | + | |
| 4417 | + | |
| 4418 | + | |
4425 | 4419 |
| |
4426 | 4420 |
| |
4427 | 4421 |
| |
| |||
4473 | 4467 |
| |
4474 | 4468 |
| |
4475 | 4469 |
| |
4476 |
| - | |
| 4470 | + | |
4477 | 4471 |
| |
4478 | 4472 |
| |
4479 | 4473 |
| |
| |||
4491 | 4485 |
| |
4492 | 4486 |
| |
4493 | 4487 |
| |
4494 |
| - | |
4495 |
| - | |
4496 | 4488 |
| |
4497 | 4489 |
| |
4498 | 4490 |
| |
4499 |
| - | |
| 4491 | + | |
| 4492 | + | |
| 4493 | + | |
4500 | 4494 |
| |
| 4495 | + | |
| 4496 | + | |
4501 | 4497 |
| |
4502 | 4498 |
| |
4503 | 4499 |
| |
4504 |
| - | |
4505 |
| - | |
4506 |
| - | |
4507 | 4500 |
| |
4508 | 4501 |
| |
4509 |
| - | |
| 4502 | + | |
4510 | 4503 |
| |
| 4504 | + | |
4511 | 4505 |
| |
4512 | 4506 |
| |
4513 | 4507 |
| |
4514 |
| - | |
| 4508 | + | |
4515 | 4509 |
| |
4516 | 4510 |
| |
4517 | 4511 |
| |
4518 |
| - | |
| 4512 | + | |
| 4513 | + | |
4519 | 4514 |
| |
4520 | 4515 |
| |
4521 | 4516 |
| |
4522 | 4517 |
| |
4523 |
| - | |
| 4518 | + | |
4524 | 4519 |
| |
4525 | 4520 |
| |
4526 | 4521 |
| |
4527 | 4522 |
| |
4528 | 4523 |
| |
4529 | 4524 |
| |
4530 | 4525 |
| |
4531 |
| - | |
4532 |
| - | |
| 4526 | + | |
| 4527 | + | |
| 4528 | + | |
| 4529 | + | |
| 4530 | + | |
| 4531 | + | |
| 4532 | + | |
| 4533 | + | |
| 4534 | + | |
| 4535 | + | |
| 4536 | + | |
| 4537 | + | |
| 4538 | + | |
4533 | 4539 |
| |
4534 | 4540 |
| |
4535 | 4541 |
| |
| |||
4546 | 4552 |
| |
4547 | 4553 |
| |
4548 | 4554 |
| |
4549 |
| - | |
| 4555 | + | |
4550 | 4556 |
| |
4551 | 4557 |
| |
4552 | 4558 |
| |
| |||
4602 | 4608 |
| |
4603 | 4609 |
| |
4604 | 4610 |
| |
4605 |
| - | |
4606 |
| - | |
| 4611 | + | |
4607 | 4612 |
| |
4608 |
| - | |
| 4613 | + | |
4609 | 4614 |
| |
4610 | 4615 |
| |
4611 | 4616 |
| |
|
Lines changed: 2 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
33 | 33 |
| |
34 | 34 |
| |
35 | 35 |
| |
36 |
| - | |
| 36 | + | |
37 | 37 |
| |
| 38 | + | |
38 | 39 |
| |
39 | 40 |
| |
40 | 41 |
|
Lines changed: 20 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
571 | 571 |
| |
572 | 572 |
| |
573 | 573 |
| |
574 |
| - | |
| 574 | + | |
575 | 575 |
| |
576 | 576 |
| |
577 | 577 |
| |
578 | 578 |
| |
579 | 579 |
| |
580 | 580 |
| |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
581 | 600 |
| |
582 | 601 |
| |
583 | 602 |
| |
|
Lines changed: 6 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
187 | 187 |
| |
188 | 188 |
| |
189 | 189 |
| |
190 |
| - | |
| 190 | + | |
191 | 191 |
| |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
192 | 197 |
| |
193 | 198 |
| |
194 | 199 |
| |
|
0 commit comments
Comments
(0)