Reimplement text_position and related functions to use Boyer-Moore-Horspool searching instead of naive matching.  In the worst case this has the same O(M*N) complexity as the naive method, but the worst case is hard to hit, and the average case is very fast, especially with longer patterns.
Reimplement text_position and related functions to use Boyer-Moore-Horspool
searching instead of naive matching.  In the worst case this has the same
O(M*N) complexity as the naive method, but the worst case is hard to hit,
and the average case is very fast, especially with longer patterns.

David Rowley

Chibin/gpdb,50wu/gpdb,arcivanov/postgres-xl,adam8157/gpdb,lisakowen/gpdb,tpostgres-projects/tPostgres,pavanvd/postgres-xl,snaga/postgres-xl,ashwinstar/gpdb,arcivanov/postgres-xl,oberstet/postgres-xl,adam8157/gpdb,50wu/gpdb,kmjungersen/PostgresXL,arcivanov/postgres-xl,adam8157/gpdb,greenplum-db/gpdb,ovr/postgres-xl,adam8157/gpdb,yazun/postgres-xl,xinzweb/gpdb,zeroae/postgres-xl,techdragon/Postgres-XL,adam8157/gpdb,Chibin/gpdb,jmcatamney/gpdb,jmcatamney/gpdb,snaga/postgres-xl,postmind-net/postgres-xl,jmcatamney/gpdb,greenplum-db/gpdb,edespino/gpdb,zeroae/postgres-xl,oberstet/postgres-xl,lisakowen/gpdb,snaga/postgres-xl,pavanvd/postgres-xl,yuanzhao/gpdb,techdragon/Postgres-XL,tpostgres-projects/tPostgres,jmcatamney/gpdb,lisakowen/gpdb,kmjungersen/PostgresXL,pavanvd/postgres-xl,arcivanov/postgres-xl,kmjungersen/PostgresXL,lisakowen/gpdb,oberstet/postgres-xl,Postgres-XL/Postgres-XL,edespino/gpdb,greenplum-db/gpdb,lisakowen/gpdb,xinzweb/gpdb,oberstet/postgres-xl,ashwinstar/gpdb,oberstet/postgres-xl,ashwinstar/gpdb,arcivanov/postgres-xl,Postgres-XL/Postgres-XL,jmcatamney/gpdb,Chibin/gpdb,50wu/gpdb,yuanzhao/gpdb,lisakowen/gpdb,yazun/postgres-xl,xinzweb/gpdb,yuanzhao/gpdb,edespino/gpdb,tpostgres-projects/tPostgres,ovr/postgres-xl,postmind-net/postgres-xl,jmcatamney/gpdb,yuanzhao/gpdb,ashwinstar/gpdb,Chibin/gpdb,postmind-net/postgres-xl,Chibin/gpdb,Chibin/gpdb,jmcatamney/gpdb,Chibin/gpdb,snaga/postgres-xl,50wu/gpdb,ovr/postgres-xl,yuanzhao/gpdb,Postgres-XL/Postgres-XL,Chibin/gpdb,yuanzhao/gpdb,pavanvd/postgres-xl,techdragon/Postgres-XL,xinzweb/gpdb,Chibin/gpdb,kmjungersen/PostgresXL,greenplum-db/gpdb,yazun/postgres-xl,arcivanov/postgres-xl,50wu/gpdb,adam8157/gpdb,techdragon/Postgres-XL,tpostgres-projects/tPostgres,jmcatamney/gpdb,tpostgres-projects/tPostgres,yuanzhao/gpdb,ashwinstar/gpdb,Postgres-XL/Postgres-XL,yazun/postgres-xl,xinzweb/gpdb,pavanvd/postgres-xl,yazun/postgres-xl,lisakowen/gpdb,techdragon/Postgres-XL,edespino/gpdb,adam8157/gpdb,edespino/gpdb,greenplum-db/gpdb,snaga/postgres-xl,ashwinstar/gpdb,zeroae/postgres-xl,greenplum-db/gpdb,adam8157/gpdb,edespino/gpdb,Chibin/gpdb,edespino/gpdb,yuanzhao/gpdb,ovr/postgres-xl,zeroae/postgres-xl,50wu/gpdb,edespino/gpdb,xinzweb/gpdb,50wu/gpdb,postmind-net/postgres-xl,50wu/gpdb,yuanzhao/gpdb,greenplum-db/gpdb,ashwinstar/gpdb,edespino/gpdb,ashwinstar/gpdb,postmind-net/postgres-xl,yuanzhao/gpdb,greenplum-db/gpdb,edespino/gpdb,kmjungersen/PostgresXL,xinzweb/gpdb,zeroae/postgres-xl,lisakowen/gpdb,Postgres-XL/Postgres-XL,ovr/postgres-xl,xinzweb/gpdb