Обзор новых возможностей PostgreSQL 7.4

06.05.2004 14:28

Разбор на примерах некоторых возможностей появившихся в PostgreSQL 7.4. Кратко, главное:

  • Определение типов данных используя "CREATE DOMAIN":
      CREATE DOMAIN ZIP_CODE CHAR(5) NOT NULL   DEFAULT '00000'    CHECK ( VALUE ~ '^[0-9]{5}$'     AND ( ( VALUE = '00000' ) OR     ( VALUE BETWEEN '00210' AND '99950'      ) ) );   CREATE TABLE contact_addresses (   contact_id INT NOT NULL    REFERENCES contacts(contact_id),   ...   state STATE_CODE,   zip ZIP_CODE );  
  • Вычисляемые индексы:
      CREATE INDEX idx_compensation    ON personnel(     (salary + bonus + commission) );   Оптимально для SELECT в котором содержится (salary + bonus + commission) 
  • SQL 99 массивы:
       SELECT ARRAY[2 * 3, 4 * 5, 6 * 7];   SELECT ARRAY[unique1, unique2, even]   SELECT ARRAY['hello world','happy birthday'];  
  • Полнотекстовые индексы через подсистему Tsearch2:
      ALTER TABLE companies   ADD COLUMN fti_business tsvector;   UPDATE companies SET fti_business = to_tsvector('default',business_model);   VACUUM FULL ANALYZE companies;   CREATE INDEX idx_fti_business ON companies USING gist(fti_business);   CREATE TRIGGER tg_fti_companies   BEFORE UPDATE OR INSERT ON companies  FOR EACH ROW EXECUTE PROCEDURE   tsearch2(fti_business, business_model);   SELECT company_name, business_model  FROM companies  WHERE fti_business @@   to_tsquery('default','bushing | engine');