рдореИрдВ 1C рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рднреВрд▓рднреБрд▓реИрдпрд╛ рдХреА рд╕рднреА рдореГрдд-рдЕрдВрдд рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдЙрд╕реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрд╣реАрдВ рднреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ - рдЬреЛ рдХрд┐ рд╣рдордиреЗ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдкреНрд░рд╣рд╛рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдзреВрдореНрд░рдкрд╛рди рдХрд┐рдпрд╛ рд╣реИред 1 рд╕реА рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рдХреА рдкреНрд░рдЪреБрд░рддрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдиреЗ рднреА рд╣рдорд╛рд░реЗ рдореБрдЦреНрдп рд░реЗрдХ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд╡реЗ рд╕рднреА рд╕рддрд╣реА рдирд┐рдХрд▓реЗ рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрддрд╛рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рднрд░рдирд╛ рд╣рдорд╛рд░рд╛ рдХрд░реНрддрд╡реНрдп рдорд╛рдирд╛ рд╣реИ :-)
рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Gentoo рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдХрд┐рд╕реА RPM рд╕рдВрдХреБрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред Gentoo рдХреЗ рд▓рд┐рдП rpm рдкреНрд░рд╛рд░реВрдк рдореЗрдВ 1C рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ (рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВ), рдЗрд╕рд▓рд┐рдП src.rpm рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ rpmbuild рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЕрдм рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рдерд╛ рд╡рд╣ rpm2tgz рдХреЛ rpm рдкреНрд░рд╛рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯрд╛рд░рдЧреЗрдЯ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдЕрдирдкреИрдХ рдХрд░рдирд╛ рдерд╛, рдЬреЛ рд╣рдордиреЗ рдХрд┐рдпрд╛ рдерд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдг-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рд╣реИред
0. рдкрд░реНрдпрд╛рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд░рдирд╛: mkdir / tmp / t5 && cd / tmp / t5 (рд╢реБрд░реВ рд╕реЗ 5 рдереЗ) :-)
1. рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ: wget v8.1c.ru/overview/postgresql_patches/8-4-1/postgresql-8.4.1-1.1C.sr.rpm
2. рд╣рдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ: rpm2tar postgresql-8.4.1-1.1C.src.rpm && rm postgresql-8.4.1-1.1C.src.rpm
3. рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВ: tar xf postgresql-8.4.1-1.1C.src.tarред рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдирдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╕рд╛рдл рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддреБрд░рдВрдд postgresql-8.4.1.tar.bz2 рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ:
tar xfj postgresql-8.4.1.tar.bz2 && cd cd postgresql-8.4.1
4. рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ ../postgresql-8.4.1C.spec рдФрд░ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ :-) рдЗрд╕рдореЗрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╡рд░реНрдгрд┐рдд рд╣реИ рдЬреЛ rpmbuild рдХрд░реЗрдЧрд╛ (рдпрджрд┐ рдпрд╣ рд╕рдм рдЗрддрдирд╛ рд╕рд░рд▓ рдерд╛!)ред рд╣рдо рдЙрд╕ рдЦрдВрдб рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдкреИрдЪ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рд╣рдо рдРрд╕рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕ рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ):
рдкреИрдЪ -p1 <../ rpm-pgsql.patch
рдкреИрдЪ -p1 <../ postgresql-logging.patch
рдкреИрдЪ -p1 <../ postgresql-perl-rpath.patch
рдкреИрдЪ -p1 <../ postgresql-рдкрд╕рдВрдж-ncurses.patch
рдкреИрдЪ -p0 <../ 1c_FULL_84-0.19.2.patch (p0, p1 рдирд╣реАрдВ!)
рдкреИрдЪ -p1 <../ postgresql-1c-8.3.patch - рдЪреБрдЯрдХреБрд▓реЗ рднреЗрдЬреЗрдВ, рдкреИрдЪ рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ! рдФрд░ рдпрд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд┐рддрд░рдг рдореЗрдВ рд╣реИред рд╣рдордиреЗ рдХрднреА рдирд╣реАрдВ рдкрд╛рдпрд╛ рдХрд┐ рдЖрд░рдкреАрдПрдо рдХрд▓реНрдкрдирд╛ рдХреНрдпрд╛ рдмрджрд▓рддреА рд╣реИ рддрд╛рдХрд┐ рдРрд╕рд╛ рдкреИрдЪ рдУрд╡рд░рд▓реИрдк рд╣реЛ рдЬрд╛рдПред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдкреИрдЪ рдЫреЛрдЯрд╛ рдФрд░ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рд╣реИрдВрдбрд▓ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдареАрдХ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдмреАрдЪ, рд╣рдордиреЗ рдЗрд╕ рдкрд░ рд░рди рдмрдирд╛рдП рдФрд░ рдЖрдЧреЗ рдмрдврд╝ рдЧрдПред
рдкреИрдЪ -p0 <../ applock-1c-8.4.0.patch
5. рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдмрд┐рд▓реНрдб rpm рд╕реНрдкреЗрдХ рд╕реЗрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдХрд┐ 1C рдкрд░реНрд▓, рдкрд╛рдпрдерди рдпрд╛ рдЯреИрдХреН рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ (рдФрд░ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 1C рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рд╣рдо рдЕрдкрдиреЗ рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ 1C рдбреЗрд╡рд▓рдкрд░реНрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рд╡реЗ рд╕рд╛рдорд╛рдиреНрдп рдореВрд▓ рдкреЛрд╕реНрдЯ-рдЧреЗрдо рдореЗрдВ рд░рд╣рддреЗ рд╣реЛрдВ), рдЗрд╕рд▓рд┐рдП рд╣рдо рдмрд╕ рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВред рдХреБрд▓ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛:
./configure --disable-rpath --enable-nls --disable-integer-datetimes --enable-thread-safety
6. && рдореЗрдХ рдЗрдирд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд░реВрдЯ рдХреЛ / usr / рд▓реЛрдХрд▓ / pgsql рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдХрдВрдЯреНрд░реАрдм рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ, рдПрдХ рдкреИрдЪ рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛? рдпрд╣ 1C: mchar, fulleq рдФрд░ fasttrun рд╕реЗ contrib / Makefile 3 рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред Mchar рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ ICU рдШрдЯрдХ рд╕рдВрд╕реНрдХрд░рдг 3.8 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
mkdir / tmp / icu && cd / tmp / icu && wget download.icu-project.org/files/icu4c/3.8.1/icu4c-3_8_1-srcb.gz
tar zxf icu4c-3_8_1-src.tgz && cd icu / source
./configure --prefix = / usr / рд▓реЛрдХрд▓ / icu && рдореЗрдХ && рдореЗрдХ рдЗрдирд╕реНрдЯреЙрд▓
рдЖрдИрд╕реАрдпреВ / usr / рд╕реНрдерд╛рдиреАрдп / icu рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдорд╛рд░ рджреЗрдВрдЧреЗред
рдЖрдЗрдП рд╡рд╛рдкрд╕ рдХрдВрдЯреНрд░рд┐рдм рдмрд┐рд▓реНрдб рдкрд░ рдЬрд╛рдПрдВред
cd /tmp/t5/postgresql-8.4.1/
7. рдЖрдкрдХреЛ contrib / mchar / Makefile рдлрд╛рдЗрд▓ рдХреЛ рдПрдбрд┐рдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ PG_CPPFLAGS рдХреЛ ICU рдкрде рдкрд░ рдлрд┐рдХреНрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
PG_CPPFLAGS = -I / usr / рд╕реНрдерд╛рдиреАрдп / icu / рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрд╣реБрдд рдиреАрдЪреЗ SHLIB_LINK рдореЗрдВ рдкрде рдХреЛ рдареАрдХ рдХрд░реЗрдВ:
SHLIB_LINK + = -L / usr / рд╕реНрдерд╛рдиреАрдп / icu / lib -ucuuc -l $ (ICUNAME) -Wl, -rpath, '$$ ORIGIN'
8. рдЗрд╕рдХреЗ рдмрд╛рдж, рдХрдВрдЯрд┐рдиреНрдпреВ / рдореЗрдХрдлрд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ (38 рд▓рд╛рдЗрди, v8.1c.ru/overview/postgresql_patches/8-4-1/postesql-1c-8.4.patch ) рдореЗрдВ WANTED_DIRS рдореЗрдВ рддреАрди 1C рдШрдЯрдХ рдЬреЛрдбрд╝реЗрдВред
рд╡реИрдХреНрдпреВрдо
рдордЪрд░ \ _
рдлреБрд▓реЗрдХ \ _
fasttrun
9. рдЪрд▓реЛ рдХрдВрдЯреНрд░реАрдм рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ:
Make -C contrib && рдореЗрдХ -C contrib рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
10. рдкреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдЖрдИрд╕реАрдпреВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ:
cp -a / usr / рд╕реНрдерд╛рдиреАрдп / icu / lib / * / usr / рд╕реНрдерд╛рдиреАрдп / pgsql / lib /
rm -rf / usr / рд╕реНрдерд╛рдиреАрдп / icu
11. рд╕рдВрдХрд▓рд┐рдд / рд╕реНрдерд╛рдкрд┐рдд / usr / рд╕реНрдерд╛рдиреАрдп / pgsql рдореЗрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЯреНрд╕ред рдЕрднреА рдХреЙрдиреНрдлрд┐рдЧреНрд╕ рдХреЛ рдПрдбрд┐рдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдЦрд╛рддрд╛ рдмрдирд╛рдПрдБ рдЬрд┐рд╕рдХреЗ рддрд╣рдд рдЖрдзрд╛рд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛:
useradd -d / usr / рд╕реНрдерд╛рдиреАрдп / pgsql / -s / bin / bash pgmaster
mkdir / usr / рд╕реНрдерд╛рдиреАрдп / pgsql / рдбреЗрдЯрд╛
chown pgmaster / usr / local / pgsql / data && chmod 700 / usr / рд▓реЛрдХрд▓ / pgsql / рдбреЗрдЯрд╛
рдмрд┐рд▓реНрд▓реА >> /usr/local/pgsql/.bash_profile << EOF
рдирд┐рд░реНрдпрд╛рдд LANG = ru_RU.UTF-8
рдирд┐рд░реНрдпрд╛рдд PGPORT = 5434
рдирд┐рд░реНрдпрд╛рдд рдкрд╛рде = / usr / рд╕реНрдерд╛рдиреАрдп / pgsql / bin: / usr / рд╕реНрдерд╛рдиреАрдп / pgsql / sbin: $ PATH
рдирд┐рд░реНрдпрд╛рдд LD_LIBRARY_PATH = / usr / рд╕реНрдерд╛рдиреАрдп / pgsql / lib
EOF
рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд╕рд░реНрд╡рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП 1C рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдПрдХ рдЕрд▓рдЧ рдкреЛрд░реНрдЯ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЕрдХрд╛рдЙрдВрдЯ рдЪреБрдирд╛, рдПрдХ bash рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬреЛ su - pgmaster рдХреЗ рд╕рд╛рде рдЪрд▓рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдкрде рдФрд░ рдЪрд░ рд╕реЗрдЯ рд╣реИрдВред
12. рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдЪрд▓рд╛рдПрдВ:
mkdir / usr / рд╕реНрдерд╛рдиреАрдп / pgsql / log рдФрд░& chown pgmaster / usr / рд╕реНрдерд╛рдиреАрдп / pgsql / рд▓реЙрдЧ
su - pgmaster
initdb -D / usr / рд╕реНрдерд╛рдиреАрдп / pgsql / рдбреЗрдЯрд╛
postgres -h 0.0.0.0 -p 5434 -D / usr / рд╕реНрдерд╛рдиреАрдп / pgsql / рдбреЗрдЯрд╛
рдирд┐рдпрдВрддреНрд░рдг рдЯрд░реНрдорд┐рдирд▓ рдХреЛ рдЦреЛрдП рдмрд┐рдирд╛ рд╕рд░реНрд╡рд░ рдЪреБрдкрдЪрд╛рдк рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ред
рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╕реБрдкрд░ рдкреНрд▓реЗрдпрд░ рдореЗрдВ рдмрджрд▓реЗрдВ (рд╕реНрдХреНрд░реАрди рдбреНрд░рд╛рдЗрд╡, рд╣реЗрд╣реЗ):
su - pgmaster
psql template1
psql (8.4.1)
рдорджрдж рдХреЗ рд▓рд┐рдП "рдорджрдж" рдЯрд╛рдЗрдк рдХрд░реЗрдВред
template1 = # рдкрд╛рд╕рд╡рд░реНрдб 'рдкрд╛рд╕-рдкрд╛рд╕' рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ pgmaster рдХреЛ рдмрджрд▓рдирд╛;
рдЬреЛрд░ рд╕реЗ рдмреЛрд▓реЛ
рдЯреЗрдореНрдкрд▓реЗрдЯ 1 = #
CTRL + D
рдЕрдм CTRL + C рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЛ рдмрд╛рд╣рд░ рдХрд░реЗрдВ, рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
13. рдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ / pg_hba.conf, рдЗрд╕рдореЗрдВ рдЖрдкрдХреЛ md5 рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рднреА рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
рд╕реНрдерд╛рдиреАрдп рд╕рднреА md5
рд╕рднреА рдХреЛ 127.0.0.1/32 md5 рд╣реЛрд╕реНрдЯ рдХрд░реЗрдВ
рд╕рднреА рдХреЛ 0.0.0.0/0 md5 рд╣реЛрд╕реНрдЯ рдХрд░реЗрдВ
14. рдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ / postgresql.conf, рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдкреИрдЪ рд╕реЗ рднрд╛рдЧ, рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рднрд╛рдЧ):
log_destination = 'stderr'
logging_collector = off # рдбреЗрдЯрд╛ / pg_log рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╕рдордп рдмрдВрдж рдХрд░реЗрдВ, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛)
log_statement = 'all' # рд╣рдо рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ 1C рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА!
рд╕реБрди_рджрд╛рджрд░реА = '' '# рдЬрд┐рд╕ рдкрд░ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛ
effective_cache_size = 512MB # 1C рдЕрдиреБрд╢рдВрд╕рд╛
max_locks_per_transaction = 150 # 1C рдЕрдиреБрд╢рдВрд╕рд╛
15. рд╕рд╛рдЭрд╛ рдХреА рдЧрдИ рд╕реНрдореГрддрд┐ред рдпрд╛ рддреЛ sysctl -w kernel.shmmax = 256000000, рдпрд╛ /etc/sysctl.conf рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рд╡рд╣рд╛рдВ kernel.shmmax = 256000000 рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдлрд┐рд░ sysctl -pред
16. рдФрд░ рдЕрдм рдордЬрд╝рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдлрд┐рд░ рд╕реЗ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (рдкреЛрд╕реНрдЯ-рдбреА рдбреЗрдЯрд╛ -p 5434)ред рд╣рдо 1C рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдмрдирд╛рддреЗ рд╣реИрдВ:
$ psql template1
рдкрд╛рд╕рд╡рд░реНрдб:
psql (8.4.1)
рдорджрдж рдХреЗ рд▓рд┐рдП "рдорджрдж" рдЯрд╛рдЗрдк рдХрд░реЗрдВред
рдЯреЗрдореНрдкрд▓реЗрдЯ 1 = #
17. рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ 1 рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ plpgsql рднрд╛рд╖рд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
template1 = # рднрд╛рд╖рд╛ plpgsql рдмрдирд╛рдПрдБ;
рднрд╛рд╖рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдЯреЗрдореНрдкрд▓реЗрдЯ 1 = #
18. рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ 1 рд╕реА рд╕реЗ 3 рдШрдЯрдХреЛрдВ рд╕реЗ SQL рдХреЛрдб рдХреЗ рд╕рд╛рде рднрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрд╣реАрдВ рдирд╣реАрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рд╣рдордиреЗ рд╕рдВрдкреВрд░реНрдг RPM рдпреБрдХреНрддрд┐ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛, рдЪреЗрдХ, рдкрд░реАрдХреНрд╖рдг рдЖрджрд┐ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдпрд╣ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ рд╕рдм рдХреЛрдб RPM рдкреИрдХреЗрдЬ рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ 1 рдореЗрдВ рдХреИрд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ:
template1 = # \ _tmp/t5/postgresql-8.4.1/contrib/mchar/mchar.sql
template1 = # \ _tmp/t5/postgresql-8.4.1/contrib/fulleq/fulleq.sql
рдЯреЗрдореНрдкрд▓реЗрдЯ 1 = # \ _tmp/t5/postgresql-8.4.1/contrib/fasttrun/fasttrun.sql
рдпрджрд┐ рдЖрдк рдЕрдЪрд╛рдирдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП mchar.so рдкрд░ рд╢рдкрде рд▓реЗрддреЗ рд╣реИрдВ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ libicu * рдирд╣реАрдВ рдорд┐рд▓рд╛, рддреЛ рдЖрдк LD_LIBRARY_PATH рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдП рдпрд╛ ICUs рдХреЛ / usr / рд╕реНрдерд╛рдиреАрдп / pgsql / lib рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ, рдкрд╣рд▓реЗ рдкрдврд╝реЗрдВ :-P
19. рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИ !!! рдореБрдЦреНрдп рдпрд╛рддрд╛рдпрд╛рдд рдЬрд╛рдо, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╡реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝ рд╕рдХреЗред рд╣рдо рдмреЗрд╕ 1C рдкрд░ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдо рд▓реЙрдЧ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ:
рд▓реЙрдЧ: рдХрдерди: pg_proc рд╕реЗ 1 рдЪреБрдиреЗрдВ рдЬрд╣рд╛рдВ ('plpgsql_call_handler', 'datediff', 'mchar_in', 'mc_mv_icase_cmp', 'fasttruncate') рдореЗрдВ рдирд╛рдо
рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж 1C рдХрд╣рддрд╛ рд╣реИ: "рдЖрдкрдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдЦрд░рд╛рдм рд╣реИ, рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реИред"
рд╣рдо рдХрдВрд╕реЛрд▓ рд╕реЗ рдпрд╣ рдЕрдиреБрд░реЛрдз рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ:
рдЯреЗрдореНрдкрд▓реЗрдЯ 1 = # 1 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ pg_proc рд╕реЗ рдЬрд╣рд╛рдВ ('plpgsql_call_handler', 'datediff', 'mchar_in', 'mc_mv_icase_cmp', 'fasttruncate') рдореЗрдВ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
рдХреЙрд▓рдо?
- 1
1
1
1
(4 рдкрдВрдХреНрддрд┐рдпрд╛рдБ)
рдЪрд╛рд░ рдЪрд╛рд░, рд▓реЗрдХрд┐рди рдкрд╛рдВрдЪ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП! рдЙрдиреНрдореВрд▓рди рд╕реЗ, рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рджрд┐рдирд╛рдВрдХрд┐рдд рдЧрд╛рдпрдм рд╣реИред Postgresql рдФрд░ 1C рдкреИрдЪ рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╕рдлрд▓рддрд╛ рдХреА рдУрд░ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ:
рд╕реНрдиреЛрдлреНрд▓реЗрдХ рд╕реНрдерд╛рдиреАрдп # рд╕реАрдбреА / tmp / t5 /
рд╕реНрдиреЛрдлреНрд▓реЗрдХ рдЯреА 5 # рдПрд▓.рдПрд╕.
1c_FULL_84-0.19.2.patch pg_config.h postgresql-8.4.1C.spec postgresql.pam
applock-1c-8.4.0.patch postgresql-1c-8.3.patch postgresql-8.4.1.tar.bz2 postgresql-perl-rpath.patch
ecpg_config.h postgresql-8.4.1 postgresql-bashprofile postgresql-рдкреНрд░рд╛рдердорд┐рдХрддрд╛-ncurses.patch
Filter-requires-perl-Pg.sh postgresql-8.4.1-1.1C.src.tar postgresql.init README.rpm-dist
Makefile.regress postgresql-8.4.1-A4.pdf рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬреЗрдХрд▓-рд▓реЙрдЧрд┐рдВрдЧ.рдЪреЗрдХ rpm-pgsql.patch
рд╕реНрдиреЛрдлреНрд▓реЗрдХ t5 # fgrep -ri рдбреЗрдЯреЗрдбрд┐рдлрд╝ *
рд╕реНрдиреЛрдлреНрд▓реЗрдХ t5 #
рд╣рдордиреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреБрдЫ рджрд┐рдирд╛рдВрдХрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдкрд╛рдПред рдпрд╣ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдЗрди рд╕рднреА рдкреИрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ред 1C рдХреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ SQLSQL рдХреЛ MSSQL рдХреА рддрд░рд╣ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛! рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд╣рд╛рдБ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛! рд╡реИрд╕реЗ рднреА, рд╣рдореЗрдВ рдПрдХ рджрд┐рдирд╛рдВрдХрд┐рдд рдорд┐рд▓рд╛ рд╣реИред
рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣рд╛рдБ рдЙрд╕рдХрд╛ рдХреЛрдб рд╣реИ:
рд╕реГрдЬрди рдпрд╛ рд╕рдореАрдХреНрд╖рд╛ рд╕рдорд╛рд░реЛрд╣ рджрд┐рдирд╛рдВрдХрд┐рдд (рдЪрд░рд┐рддреНрд░ рднрд┐рдиреНрди, рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд┐рдирд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк, рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд┐рдирд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк)
рд░рд┐рдЯрд░реНрдиреНрд╕ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ
$ BODY $
рдШреЛрд╖рд┐рдд
$ 1 рдХреЗ рд▓рд┐рдП arg_mode рдЙрдкрдирд╛рдо;
$ 2 рдХреЗ рд▓рд┐рдП arg_d2 рдЙрдкрдирд╛рдо;
$ 3 рдХреЗ рд▓рд┐рдП arg_d1 рдЙрдкрдирд╛рдо;
рд╢реБрд░реВ
рдЕрдЧрд░ arg_mode = 'SECOND' рддрдм
рд╡рд╛рдкрд╕реА date_part ('epoch', arg_d1) - date_part ('epoch', arg_d2);
elsif arg_mode = 'MINUTE' рддрдм
рд╡рд╛рдкрд╕реА рдЫрдд ((date_part ('epoch', arg_d1) - date_part ('epoch', arg_d2)) / 60);
elsif arg_mode = 'HOUR' рддрдм
рд╡рд╛рдкрд╕реА рдЫрдд ((date_part ('epoch', arg_d1) - date_part ('epoch', arg_d2)) / 3600);
elsif arg_mode = 'DAY' рддрдм
рд░рд┐рдЯрд░реНрди рдХрд╛рд╕реНрдЯ (рддрд╛рд░реАрдЦ рдХреЗ рд░реВрдк рдореЗрдВ arg_d1) - рдХрд╛рд╕реНрдЯ (рддрд╛рд░реАрдЦ рдХреЗ рд░реВрдк рдореЗрдВ arg_d2);
elsif arg_mode = 'WEEK' рддрдм
рд░рд┐рдЯрд░реНрди рд╕реАрдЗрд▓ ((рдХрд╛рд╕реНрдЯ (рддрд╛рд░реАрдЦ рдХреЗ рд░реВрдк рдореЗрдВ arg_d1) - рдХрд╛рд╕реНрдЯ (рддрд╛рд░реАрдЦ рдХреЗ рд░реВрдк рдореЗрдВ arg_d2)) / 7.0);
elsif arg_mode = 'рдорд╣реАрдиреЗ' рддрдм
рд╡рд╛рдкрд╕реА 12 * (date_part ('рд╡рд░реНрд╖', arg_d1) - date_part ('рд╡рд░реНрд╖', arg_d2)
+ date_part ('рдорд╣реАрдирд╛', arg_d1) - date_part ('рдорд╣реАрдирд╛', arg_d2);
elsif arg_mode = 'QUARTER' рддрдм
рд╡рд╛рдкрд╕реА 4 * (date_part ('рд╡рд░реНрд╖', arg_d1) - date_part ('рд╡рд░реНрд╖', arg_d2)
+ date_part ('рддрд┐рдорд╛рд╣реА', arg_d1) - date_part ('рддрд┐рдорд╛рд╣реА', arg_d2);
elsif arg_mode = 'YEAR' рддрдм
рд╡рд╛рдкрд╕реА (date_part ('рд╡рд░реНрд╖', arg_d1) - date_part ('рд╡рд░реНрд╖', arg_d2));
рдЕрдВрдд рдЕрдЧрд░;
рдЕрдВрдд
$ BODY $
рднрд╛рд╖рд╛ plpgsql VOLATILE
COST 100;
рдЪреЗрддрд╛рд╡рдиреА! рд╣реЗрдмреНрд░рд┐рд╕ рдкрд░ рдкреНрд░рд╛рд░реВрдкрдг рдкрд╛рда рдПрдХ рд╣рд╛рдЗрдлрд╝рди рдХреЗ рд╕рд╛рде рдЛрдг рдЪрд┐рд╣реНрди рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд╛рда рдХреЛ рдкрд╣рд▓реЗ рдПрдХ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ, рдФрд░ рд╡рд╣рд╛рдВ рдереЛрдХ рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рдорд╛рдЗрдирд╕ рдХреЗ рд╕рд╛рде рд▓рдВрдмреА рд╣рд╛рдЗрдлрд╝рди рдХреЛ рдмрджрд▓реЗрдВ, рдЕрдиреНрдпрдерд╛ рдкреЛрд╕реНрдЯрдЧреНрд░рд╛рдЙрдВрдбреНрд╕ рд╢рдкрде рд▓реЗрдВрдЧреЗ :-)
рд▓реЛрдЧреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЧрд┐рдиреЗрдВ :-)
рдЯреЗрдореНрдкрд▓реЗрдЯ 1 = # 1 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ pg_proc рд╕реЗ рдЬрд╣рд╛рдВ ('plpgsql_call_handler', 'datediff', 'mchar_in', 'mc_mv_icase_cmp', 'fasttruncate') рдореЗрдВ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
рдХреЙрд▓рдо?
- 1
1
1
1
1
(5 рдкрдВрдХреНрддрд┐рдпрд╛рдБ)
рдЪреАрдпрд░реНрд╕ рдХреА рддрд░рд╣! рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣рд╛рдБ рдерд╛ :-) 10 рдмрд╛рд░ рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдкрд╛рдВрдЪ рд╣реИрдВред рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╛рдБрдЪ рд╣реИрдВ! рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ 1 рд╕реА рдЕрднреА рднреА рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЖрдзрд╛рд░ рдЦрд░рд╛рдм рд╣реИ, рдФрд░ рдпрд╣ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝рддрд╛ рд╣реИред рд╣рдо рдлрд┐рд░ рд╕реЗ рд╕рднреА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ (рдЯреБрдХрдбрд╝реЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА!) 1C рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрд░реЛрдзред рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣ рдЬреЛ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреА рд╣реИ, рд╡рд╣ рд╕рднреА рдХреЛ рдЧрд┐рдирдирд╛ рд╣реИ! рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ 5 рд╣реИрдВ !!!
рд╣рдордиреЗ 1 рд╕реА рд╕рд╛рдЗрдЯ рд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж 3 рдШрдВрдЯреЗ рдореЗрдВ рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред рдлрд┐рд░ рдПрдХ рдирд░реНрддрдХреА рдХреЗ рд╕рд╛рде рдиреГрддреНрдп рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдХрдИ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг, рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдПрдЯрд░рд╕реЙрдлреНрдЯ рд╕реЗ рд╡рд┐рддрд░рдг ... рд▓реЗрдХрд┐рди рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд╣реА рд╣реИ: рдкрд╛рдВрдЪ рдХрд╛рд░реНрдп, рдкрд╛рдВрдЪ рдЗрдХрд╛рдЗрдпрд╛рдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рджреАрд╡рд╛рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рд┐рд░ред
рдФрд░ рдлрд┐рд░ рдПрдХ рдХрд╛рд░реНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ ... рд╣рдо рдПрдХ рджреЛрд╕реНрдд рдХреЛ рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкрд╛рда рднреЗрдЬрддреЗ рд╣реИрдВ, рд╡рд╣ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЦрд┐рд▓рд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рднреЗрдЬрддрд╛ рд╣реИ:
рдбреЗрдореЛ = # 1 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ pg_proc рд╕реЗ рдЬрд╣рд╛рдВ ('plpgsql_call_handler', 'datediff', 'mchar_in', 'mc_mv_icase_cmp', 'fasttruncate') рдореЗрдВ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
рдХреЙрд▓рдо?
- 1
1
1
1
1
1
(6 рдкрдВрдХреНрддрд┐рдпрд╛рдБ)
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╢рд╛рдВрдд рд╕реНрддреВрдк рд╣реИред рд╡рд┐рдЪрд╛рд░ рдХрдард┐рдирд╛рдИ рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдиреЗ рдиреЛрдЯрд┐рд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ :-))
рддрд╛рд░реНрдХрд┐рдХ рд╣реИред рдореЗрд▓ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ plpgsql_call_handler рджреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╣реИред рдбреЗрдореЛ рдорд╢реАрди рдкрд░ pg_proc рдЬрд╣рд╛рдБ proname = 'plpgsql_call_handler' рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реБрдП, pronamespace рдлрд╝реАрд▓реНрдб рдХреЛ рдЫреЛрдбрд╝рдХрд░, рджреЛ рд╕рдорд╛рди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛ред
рд╣рд╛рдереЛрдВ рд╕реЗ рдЖрдЧреЗ рд▓рдВрдмреЗ рдкреНрд░рдпрд╛рд╕ pg_proc рд╕рд┐рд╕реНрдЯрдо рдЯреЗрдмрд▓ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд┐рд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЦрд┐рд▓рд╛рдП рдЧрдП рдореВрд▓реНрдпреЛрдВ рдкрд░ рд╢рдкрде рд▓реЗрддреЗ рд╣реИрдВред
рдлрд┐рд░ рд╕реЗ рд╕реНрддрдмреНрдзред рдХрд╛рд░рдг рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ - рдирд╣реАрдВред
рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рдпреИрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдПрдХ рд╢рдмреНрдж рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ: plpgsql_call_handler (рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдиреЗ Google рдХреА рдХреЛрд╢рд┐рд╢ рдХреА)ред рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╕рд╛рдЗрдЯ рд╣реИ www.samag.ru/art/10.2004/2004_07.html , рдЬрд╣рд╛рдБ рдпрд╣ рдХрд╣рддреА рд╣реИ:
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рднрд╛рд╖рд╛ PL / pgSQL рдирд┐рд░реНрдорд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
pg_language рд╕реЗ * рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ;
рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ plpgsql рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ, рддреЛ рдЕрдкрдиреЗ OS рдХреЗ рдХрдорд╛рдВрдб рд╢реЗрд▓ рд╕реЗ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
$ createlang -U pgsql plpgsql рдирд╛рдЗрдпреЛрдВ
-U рд╡рд┐рдХрд▓реНрдк рдбреЗрдЯрд╛рдмреЗрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдУрд░ рд╕реЗ рдпрд╣ рдСрдкрд░реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдирд┐рдореНрди рджреЛ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, psql) рд╕реЗ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рднреА рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ plpgsql_call_handler ()
рднрд╛рд╖рд╛_рд╣реИрдВрдбрд▓рд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
'$ libdir / plpgsql' рдХреЗ рд░реВрдк рдореЗрдВ, 'plpgsql_call_handler'
рднрд╛рд╖рд╛ 'рдЧ';
рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рднрд╛рд╖рд╛ 'plpgsql' рдмрдирд╛рдПрдВ
рд╣реИрдВрдбрд▓рд░ plpgsql_call_handler;
рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ - рдкреАрдПрд▓ / рдкреАрдЬреАрд╕реАрдХреНрдпреВ рднрд╛рд╖рд╛ рд╕реНрд╡рдпрдВ рдКрдкрд░ рдмрдирд╛рдП рдЧрдП рд╣реИрдВрдбрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдФрд░ рдлрд┐рд░ рдЗрд╕ рдкрд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -: -рдкреЙ
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдбрд╛рд▓реЛ:
рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ plpgsql_call_handler ()
рднрд╛рд╖рд╛_рд╣реИрдВрдбрд▓рд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
'$ libdir / plpgsql' рдХреЗ рд░реВрдк рдореЗрдВ, 'plpgsql_call_handler'
рднрд╛рд╖рд╛ 'рдЧ';
рдЯреЗрдореНрдкрд▓реЗрдЯ 1 = # рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ plpgsql_call_handler ()
template1- # рд░рд┐рдЯрд░реНрди рднрд╛рд╖рд╛_рд╣реИрдВрдбрд▓рд░
template1- # as '$ libdir / plpgsql', 'plpgsql_call_handler'
template1- # рднрд╛рд╖рд╛ 'рдЧ';
рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп
template1 = # select * pg_proc рд╕реЗ рдЬрд╣рд╛рдВ proname = 'plpgsql_call_handler';
рд╕рд░реНрд╡рдирд╛рдо | рд╕рд░реНрд╡рдирд╛рдо | рднрд╡рд┐рд╖реНрдпрд╡рдХреНрддрд╛ | рдкреНрд░реЛрд▓рдВрдЧ | procost | prorows | рдкреНрд░реЛрд╡реЗрд░рд╛рдбрд┐рдХ | proisagg | proiswindow | рдЕрднрд┐рдпреЛрдЧ | рднрд╡рд┐рд╖реНрдпрджреНрд╡рд╛рдгреА | proretset | рдЙрддреНрддреЗрдЬрдХ | рд╕рд░реНрд╡рдирд╛рдо | pronargdefaults | prorettype | proggtypes | proallargtypes | рдкреНрд░рд╛рд░реНрдЧрдореЛрдбреНрд╕ | рдкреНрд░рд╛рдЧрд░реНрдирд╛рдореЗрдВ | proggdefaults | рдкреЗрд╢реЗрд╡рд░реЛрдВ рдкреНрд░реЛрдмрд┐рди | proconfig | proacl
---------------------- + -------------- + ---------- + - -------- + --------- + --------- + ------------- + ------- --- + ------------- + ----------- + ------------- + ------ ----- + ------------- + ---------- + ----------------- + - ----------- + ------------- + ---------------- + ------- ------ + ------------- + ---------------- + ------------ ---------- + ----------------- + ----------- + --------
plpgsql_call_handler | 11 | 10 | 13 | 1 | 0 | 0 | рдЪ | рдЪ | рдЪ | рдЪ | рдЪ | рд╡реА | 0 | 0 | 2280 | | | | | | plpgsql_call_handler | $ libdir / plpgsql | |
plpgsql_call_handler | 2200 | 10 | 13 | 1 | 0 | 0 | рдЪ | рдЪ | рдЪ | рдЪ | рдЪ | рд╡реА | 0 | 0 | 2280 | | | | | | plpgsql_call_handler | $ libdir / plpgsql | |
(2 рдкрдВрдХреНрддрд┐рдпрд╛рдБ)
рдпрд╣рд╛рдБ рд╡реЗ рд╣реИрдВ :-)
рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
рдЯреЗрдореНрдкрд▓реЗрдЯ 1 = # 1 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ pg_proc рд╕реЗ рдЬрд╣рд╛рдВ ('plpgsql_call_handler', 'datediff', 'mchar_in', 'mc_mv_icase_cmp', 'fasttruncate') рдореЗрдВ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
рдХреЙрд▓рдо?
- 1
1
1
1
1
1
(6 рдкрдВрдХреНрддрд┐рдпрд╛рдБ)
рдЕрдВрддрд┐рдо - рдЯреЗрдореНрдкрд▓реЗрдЯ 1 рд╕реЗ рдПрдХ рдЖрдзрд╛рд░ рдмрдирд╛рдПрдВ:
template1 = # рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рдмрдирд╛рдПрдБ;
DATABASE рдмрдирд╛рдПрдВ
рдФрд░ рдЕрдм рд╣рдо 1C рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрджреНрдпрдо рдкрд░ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ ... рдУрд╣ рдЪрдорддреНрдХрд╛рд░! рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ 1C рдиреЗ рдкреВрд░реЗ рдврд╛рдВрдЪреЗ рдХреЛ рдмрд╛рдврд╝ рджрд┐рдпрд╛ред
рдФрд░ рдЕрдм рд╕рд╡рд╛рд▓ред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ 1C рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рджреЛ рд╕рдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИрдВ ???
:-)))
PS рддрдм, рдЬрдм рд╡реЗ рдЦреЗрд▓ рд░рд╣реЗ рдереЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдбреИрдЯрд┐рдбрд┐рдл рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ plpgsql_call_handler рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:
template1 = # рдбреНрд░реЙрдк рднрд╛рд╖рд╛ plpgsql;
рддреНрд░реБрдЯрд┐: рднрд╛рд╖рд╛ plpgsql рдХреЛ рдирд╣реАрдВ рдЫреЛрдбрд╝ рд╕рдХрддреА рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рд╡рд╕реНрддреБрдПрдБ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ
рд╡рд┐рд╡рд░рдг: рдлрд╝рдВрдХреНрд╢рди рдбреЗрдбрд┐рдЯрдл (рд╡рд░реНрдг рднрд┐рдиреНрдирддрд╛, рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдХреЗ рдмрд┐рдирд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк, рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдХреЗ рдмрд┐рдирд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк) рднрд╛рд╖рд╛ рдХреЗ рдкреНрд▓реЗрдЯреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
рд▓реЗрдХрд┐рди рд╕рднреА рдПрдХ рд╣реА, рд╡реЗ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рдкрд╛рдП рдХрд┐ рдпрд╣ рдПрдорд░реНрд╕реЙрдлреНрдЯ рдпрд╛ 1 рд╕реА :-) рдХреЗ рдЗрдХрдЯреНрдареЗ рд╡рд┐рддрд░рдг рдореЗрдВ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рд╣реИ)