1<?xml version="1.0" encoding="UTF-8"?> 2<!-- 3 Tests databases schema 4--> 5 6 7<schema> 8 <!-- provider specific information 9 use <replace> to replace something with something else (context can only be "/FIELDS_A/@COLUMN_TYPE" at the moment) 10 use <ignore> to ignore some parts (context can only be "/FKEY_S" or "/FIELDS_A/@COLUMN_PKEY" at the moment) 11 --> 12 <specifics> 13 <provider name="PostgreSQL"> 14 <replace context="/FIELDS_A/@COLUMN_TYPE" expr="string" replace_with="varchar"/> 15 <replace context="/FIELDS_A/@COLUMN_TYPE" expr="gint" replace_with="int"/> 16 </provider> 17 18 <provider name="MySQL"> 19 <replace context="/FIELDS_A/@COLUMN_TYPE" expr="string" replace_with="text"/> 20 <replace context="/FIELDS_A/@COLUMN_TYPE" expr="gint" replace_with="int"/> 21 <ignore context="/FKEY_S"/> 22 <ignore context="/FIELDS_A/@COLUMN_PKEY"/> 23 </provider> 24 25 <provider name="SQLite"> 26 <replace context="/FIELDS_A/@COLUMN_TYPE" expr="gint" replace_with="int"/> 27 </provider> 28 </specifics> 29 30 <!-- actor table --> 31 <table name="actor"> <!-- possibly also schema attribute --> 32 <column name="actor_id" type="gint" pkey="TRUE" autoinc="TRUE"/> 33 <column name="first_name"/> 34 <column name="last_name"/> 35 <column name="last_update" type="timestamp"> 36 <default symbolic="now"/> 37 </column> 38 </table> 39 40 <!-- film table --> 41 <table name="film"> 42 <column name="film_id" type="gint" pkey="TRUE" autoinc="TRUE"/> 43 <column name="title"/> 44 <column name="description" type="date"/> 45 <column name="language_id" type="gint"/> 46 <column name="original_language_id" type="gint" nullok="TRUE"/> 47 <column name="rental_duration" type="smallint"> 48 <extra context="COLUMN_DEFAULT">3</extra> 49 </column> 50 <column name="rental_rate" type="numeric(4,2)"> 51 <extra context="COLUMN_DEFAULT">4.99</extra> 52 </column> 53 <column name="replacement_cost" type="numeric(5,2)"> 54 <extra context="COLUMN_DEFAULT">19.99</extra> 55 </column> 56 <column name="rating" nullok="TRUE"> 57 <extra context="COLUMN_DEFAULT">G</extra> 58 </column> 59 <column name="special_features" type="[string]"/> 60 <column name="last_update" type="timestamp"> 61 <provider name="SQLite"> 62 <extra context="COLUMN_DEFAULT">CURRENT_TIMESTAMP</extra> 63 </provider> 64 <provider name="PostgreSQL"> 65 <extra context="COLUMN_DEFAULT">now()</extra> 66 </provider> 67 </column> 68 69 <check>((((rating = 'G') OR (rating = 'PG')) OR (rating = 'PG-13')) OR (rating = 'R')) OR (rating = 'NC-17')</check> 70 71 <fkey ref_table="language"> 72 <part column="language_id" ref_column="language_id"/> 73 </fkey> 74 75 <fkey ref_table="language"> 76 <part column="original_language_id" ref_column="language_id"/> 77 </fkey> 78 </table> 79 80 <!-- film_actor table --> 81 <table name="film_actor"> 82 <column name="actor_id" type="gint"/> 83 <column name="film_id" type="gint"/> 84 <column name="last_update" type="timestamp"> 85 <default symbolic="now"/> 86 </column> 87 88 <fkey ref_table="actor"> 89 <part column="actor_id" ref_column="actor_id"/> 90 </fkey> 91 92 <fkey ref_table="film"> 93 <part column="film_id" ref_column="film_id"/> 94 </fkey> 95 </table> 96 97 <!-- language table --> 98 <table name="language"> 99 <column name="language_id" type="gint" pkey="TRUE" autoinc="TRUE"/> 100 <column name="name"/> 101 <column name="last_update" type="timestamp"> 102 <default symbolic="now"/> 103 </column> 104 </table> 105 106 <!-- dummy table --> 107 <table name="dummy"> 108 <column name="name"/> 109 <unique> 110 <column name="name"/> 111 </unique> 112 </table> 113 114 <!-- films_ordered view --> 115 <view name="films_ordered" descr="Ordered list of films"> 116 <definition>SELECT * FROM films ORDER BY last_update</definition> 117 </view> 118 119</schema> 120