X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/11af5c266d95cd1218509ed1070e180c1b928469..e94f251de5cc6156083bc01db872126fe380c87d:/db/structure.sql diff --git a/db/structure.sql b/db/structure.sql index 0cd89a11d..343aec084 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -3,6 +3,7 @@ -- SET statement_timeout = 0; +SET lock_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = on; SET check_function_bodies = false; @@ -38,6 +39,17 @@ COMMENT ON EXTENSION btree_gist IS 'support for indexing common datatypes in GiS SET search_path = public, pg_catalog; +-- +-- Name: format_enum; Type: TYPE; Schema: public; Owner: - +-- + +CREATE TYPE format_enum AS ENUM ( + 'html', + 'markdown', + 'text' +); + + -- -- Name: gpx_visibility_enum; Type: TYPE; Schema: public; Owner: - -- @@ -114,7 +126,7 @@ CREATE TYPE user_status_enum AS ENUM ( CREATE FUNCTION maptile_for_point(bigint, bigint, integer) RETURNS integer LANGUAGE c STRICT - AS '/srv/www/openstreetbugs.osm.compton.nu/db/functions/libpgosm.so', 'maptile_for_point'; + AS '/srv/www/overpass.osm.compton.nu/db/functions/libpgosm.so', 'maptile_for_point'; -- @@ -123,7 +135,7 @@ CREATE FUNCTION maptile_for_point(bigint, bigint, integer) RETURNS integer CREATE FUNCTION tile_for_point(integer, integer) RETURNS bigint LANGUAGE c STRICT - AS '/srv/www/openstreetbugs.osm.compton.nu/db/functions/libpgosm.so', 'tile_for_point'; + AS '/srv/www/overpass.osm.compton.nu/db/functions/libpgosm.so', 'tile_for_point'; -- @@ -132,7 +144,7 @@ CREATE FUNCTION tile_for_point(integer, integer) RETURNS bigint CREATE FUNCTION xid_to_int4(xid) RETURNS integer LANGUAGE c IMMUTABLE STRICT - AS '/srv/www/openstreetbugs.osm.compton.nu/db/functions/libpgosm.so', 'xid_to_int4'; + AS '/srv/www/overpass.osm.compton.nu/db/functions/libpgosm.so', 'xid_to_int4'; SET default_tablespace = ''; @@ -171,6 +183,39 @@ CREATE SEQUENCE acls_id_seq ALTER SEQUENCE acls_id_seq OWNED BY acls.id; +-- +-- Name: changeset_comments; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE changeset_comments ( + id integer NOT NULL, + changeset_id bigint NOT NULL, + author_id bigint NOT NULL, + body text NOT NULL, + created_at timestamp without time zone NOT NULL, + visible boolean NOT NULL +); + + +-- +-- Name: changeset_comments_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE changeset_comments_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: changeset_comments_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE changeset_comments_id_seq OWNED BY changeset_comments.id; + + -- -- Name: changeset_tags; Type: TABLE; Schema: public; Owner: -; Tablespace: -- @@ -218,6 +263,16 @@ CREATE SEQUENCE changesets_id_seq ALTER SEQUENCE changesets_id_seq OWNED BY changesets.id; +-- +-- Name: changesets_subscribers; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE changesets_subscribers ( + subscriber_id bigint NOT NULL, + changeset_id bigint NOT NULL +); + + -- -- Name: client_applications; Type: TABLE; Schema: public; Owner: -; Tablespace: -- @@ -238,7 +293,8 @@ CREATE TABLE client_applications ( allow_write_diary boolean DEFAULT false NOT NULL, allow_write_api boolean DEFAULT false NOT NULL, allow_read_gpx boolean DEFAULT false NOT NULL, - allow_write_gpx boolean DEFAULT false NOT NULL + allow_write_gpx boolean DEFAULT false NOT NULL, + allow_write_notes boolean DEFAULT false NOT NULL ); @@ -261,39 +317,6 @@ CREATE SEQUENCE client_applications_id_seq ALTER SEQUENCE client_applications_id_seq OWNED BY client_applications.id; --- --- Name: countries; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE countries ( - id integer NOT NULL, - code character varying(2) NOT NULL, - min_lat double precision NOT NULL, - max_lat double precision NOT NULL, - min_lon double precision NOT NULL, - max_lon double precision NOT NULL -); - - --- --- Name: countries_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE countries_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: countries_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE countries_id_seq OWNED BY countries.id; - - -- -- Name: current_node_tags; Type: TABLE; Schema: public; Owner: -; Tablespace: -- @@ -461,7 +484,8 @@ CREATE TABLE diary_comments ( body text NOT NULL, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL, - visible boolean DEFAULT true NOT NULL + visible boolean DEFAULT true NOT NULL, + body_format format_enum DEFAULT 'html'::format_enum NOT NULL ); @@ -498,7 +522,8 @@ CREATE TABLE diary_entries ( latitude double precision, longitude double precision, language_code character varying(255) DEFAULT 'en'::character varying NOT NULL, - visible boolean DEFAULT true NOT NULL + visible boolean DEFAULT true NOT NULL, + body_format format_enum DEFAULT 'html'::format_enum NOT NULL ); @@ -658,7 +683,8 @@ CREATE TABLE messages ( message_read boolean DEFAULT false NOT NULL, to_user_id bigint NOT NULL, to_user_visible boolean DEFAULT true NOT NULL, - from_user_visible boolean DEFAULT true NOT NULL + from_user_visible boolean DEFAULT true NOT NULL, + body_format format_enum DEFAULT 'html'::format_enum NOT NULL ); @@ -705,7 +731,8 @@ CREATE TABLE nodes ( visible boolean NOT NULL, "timestamp" timestamp without time zone NOT NULL, tile bigint NOT NULL, - version bigint NOT NULL + version bigint NOT NULL, + redaction_id integer ); @@ -714,12 +741,11 @@ CREATE TABLE nodes ( -- CREATE TABLE note_comments ( - id integer NOT NULL, + id bigint NOT NULL, note_id bigint NOT NULL, visible boolean NOT NULL, created_at timestamp without time zone NOT NULL, - author_name character varying(255), - author_ip character varying(255), + author_ip inet, author_id bigint, body text, event note_event_enum @@ -750,13 +776,12 @@ ALTER SEQUENCE note_comments_id_seq OWNED BY note_comments.id; -- CREATE TABLE notes ( - id integer NOT NULL, + id bigint NOT NULL, latitude integer NOT NULL, longitude integer NOT NULL, tile bigint NOT NULL, updated_at timestamp without time zone NOT NULL, created_at timestamp without time zone NOT NULL, - nearby_place character varying(255), status note_status_enum NOT NULL, closed_at timestamp without time zone ); @@ -837,7 +862,8 @@ CREATE TABLE oauth_tokens ( callback_url character varying(255), verifier character varying(20), scope character varying(255), - valid_to timestamp without time zone + valid_to timestamp without time zone, + allow_write_notes boolean DEFAULT false NOT NULL ); @@ -860,6 +886,40 @@ CREATE SEQUENCE oauth_tokens_id_seq ALTER SEQUENCE oauth_tokens_id_seq OWNED BY oauth_tokens.id; +-- +-- Name: redactions; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE redactions ( + id integer NOT NULL, + title character varying(255), + description text, + created_at timestamp without time zone, + updated_at timestamp without time zone, + user_id bigint NOT NULL, + description_format format_enum DEFAULT 'markdown'::format_enum NOT NULL +); + + +-- +-- Name: redactions_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE redactions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: redactions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE redactions_id_seq OWNED BY redactions.id; + + -- -- Name: relation_members; Type: TABLE; Schema: public; Owner: -; Tablespace: -- @@ -895,7 +955,8 @@ CREATE TABLE relations ( changeset_id bigint NOT NULL, "timestamp" timestamp without time zone NOT NULL, version bigint NOT NULL, - visible boolean DEFAULT true NOT NULL + visible boolean DEFAULT true NOT NULL, + redaction_id integer ); @@ -908,38 +969,6 @@ CREATE TABLE schema_migrations ( ); --- --- Name: sessions; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE sessions ( - id integer NOT NULL, - session_id character varying(255), - data text, - created_at timestamp without time zone, - updated_at timestamp without time zone -); - - --- --- Name: sessions_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE sessions_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: sessions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE sessions_id_seq OWNED BY sessions.id; - - -- -- Name: user_blocks; Type: TABLE; Schema: public; Owner: -; Tablespace: -- @@ -953,7 +982,8 @@ CREATE TABLE user_blocks ( needs_view boolean DEFAULT false NOT NULL, revoker_id bigint, created_at timestamp without time zone, - updated_at timestamp without time zone + updated_at timestamp without time zone, + reason_format format_enum DEFAULT 'html'::format_enum NOT NULL ); @@ -1080,7 +1110,13 @@ CREATE TABLE users ( openid_url character varying(255), preferred_editor character varying(255), terms_seen boolean DEFAULT false NOT NULL, - image_fingerprint character varying(255) + description_format format_enum DEFAULT 'html'::format_enum NOT NULL, + image_fingerprint character varying(255), + changesets_count integer DEFAULT 0 NOT NULL, + traces_count integer DEFAULT 0 NOT NULL, + diary_entries_count integer DEFAULT 0 NOT NULL, + image_use_gravatar boolean DEFAULT true NOT NULL, + image_content_type character varying(255) ); @@ -1136,7 +1172,8 @@ CREATE TABLE ways ( changeset_id bigint NOT NULL, "timestamp" timestamp without time zone NOT NULL, version bigint NOT NULL, - visible boolean DEFAULT true NOT NULL + visible boolean DEFAULT true NOT NULL, + redaction_id integer ); @@ -1151,21 +1188,21 @@ ALTER TABLE ONLY acls ALTER COLUMN id SET DEFAULT nextval('acls_id_seq'::regclas -- Name: id; Type: DEFAULT; Schema: public; Owner: - -- -ALTER TABLE ONLY changesets ALTER COLUMN id SET DEFAULT nextval('changesets_id_seq'::regclass); +ALTER TABLE ONLY changeset_comments ALTER COLUMN id SET DEFAULT nextval('changeset_comments_id_seq'::regclass); -- -- Name: id; Type: DEFAULT; Schema: public; Owner: - -- -ALTER TABLE ONLY client_applications ALTER COLUMN id SET DEFAULT nextval('client_applications_id_seq'::regclass); +ALTER TABLE ONLY changesets ALTER COLUMN id SET DEFAULT nextval('changesets_id_seq'::regclass); -- -- Name: id; Type: DEFAULT; Schema: public; Owner: - -- -ALTER TABLE ONLY countries ALTER COLUMN id SET DEFAULT nextval('countries_id_seq'::regclass); +ALTER TABLE ONLY client_applications ALTER COLUMN id SET DEFAULT nextval('client_applications_id_seq'::regclass); -- @@ -1263,7 +1300,7 @@ ALTER TABLE ONLY oauth_tokens ALTER COLUMN id SET DEFAULT nextval('oauth_tokens_ -- Name: id; Type: DEFAULT; Schema: public; Owner: - -- -ALTER TABLE ONLY sessions ALTER COLUMN id SET DEFAULT nextval('sessions_id_seq'::regclass); +ALTER TABLE ONLY redactions ALTER COLUMN id SET DEFAULT nextval('redactions_id_seq'::regclass); -- @@ -1302,6 +1339,14 @@ ALTER TABLE ONLY acls ADD CONSTRAINT acls_pkey PRIMARY KEY (id); +-- +-- Name: changeset_comments_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY changeset_comments + ADD CONSTRAINT changeset_comments_pkey PRIMARY KEY (id); + + -- -- Name: changesets_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: -- @@ -1318,14 +1363,6 @@ ALTER TABLE ONLY client_applications ADD CONSTRAINT client_applications_pkey PRIMARY KEY (id); --- --- Name: countries_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: --- - -ALTER TABLE ONLY countries - ADD CONSTRAINT countries_pkey PRIMARY KEY (id); - - -- -- Name: current_node_tags_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: -- @@ -1494,6 +1531,14 @@ ALTER TABLE ONLY oauth_tokens ADD CONSTRAINT oauth_tokens_pkey PRIMARY KEY (id); +-- +-- Name: redactions_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY redactions + ADD CONSTRAINT redactions_pkey PRIMARY KEY (id); + + -- -- Name: relation_members_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: -- @@ -1518,14 +1563,6 @@ ALTER TABLE ONLY relations ADD CONSTRAINT relations_pkey PRIMARY KEY (relation_id, version); --- --- Name: sessions_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: --- - -ALTER TABLE ONLY sessions - ADD CONSTRAINT sessions_pkey PRIMARY KEY (id); - - -- -- Name: user_blocks_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: -- @@ -1639,13 +1676,6 @@ CREATE INDEX changesets_user_id_created_at_idx ON changesets USING btree (user_i CREATE INDEX changesets_user_id_id_idx ON changesets USING btree (user_id, id); --- --- Name: countries_code_idx; Type: INDEX; Schema: public; Owner: -; Tablespace: --- - -CREATE UNIQUE INDEX countries_code_idx ON countries USING btree (code); - - -- -- Name: current_nodes_tile_idx; Type: INDEX; Schema: public; Owner: -; Tablespace: -- @@ -1765,6 +1795,27 @@ CREATE INDEX gpx_files_user_id_idx ON gpx_files USING btree (user_id); CREATE INDEX gpx_files_visible_visibility_idx ON gpx_files USING btree (visible, visibility); +-- +-- Name: index_changeset_comments_on_created_at; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_changeset_comments_on_created_at ON changeset_comments USING btree (created_at); + + +-- +-- Name: index_changesets_subscribers_on_changeset_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_changesets_subscribers_on_changeset_id ON changesets_subscribers USING btree (changeset_id); + + +-- +-- Name: index_changesets_subscribers_on_subscriber_id_and_changeset_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_changesets_subscribers_on_subscriber_id_and_changeset_id ON changesets_subscribers USING btree (subscriber_id, changeset_id); + + -- -- Name: index_client_applications_on_key; Type: INDEX; Schema: public; Owner: -; Tablespace: -- @@ -1772,6 +1823,20 @@ CREATE INDEX gpx_files_visible_visibility_idx ON gpx_files USING btree (visible, CREATE UNIQUE INDEX index_client_applications_on_key ON client_applications USING btree (key); +-- +-- Name: index_note_comments_on_body; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_note_comments_on_body ON note_comments USING gin (to_tsvector('english'::regconfig, body)); + + +-- +-- Name: index_note_comments_on_created_at; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_note_comments_on_created_at ON note_comments USING btree (created_at); + + -- -- Name: index_oauth_nonces_on_nonce_and_timestamp; Type: INDEX; Schema: public; Owner: -; Tablespace: -- @@ -1891,13 +1956,6 @@ CREATE INDEX relations_changeset_id_idx ON relations USING btree (changeset_id); CREATE INDEX relations_timestamp_idx ON relations USING btree ("timestamp"); --- --- Name: sessions_session_id_idx; Type: INDEX; Schema: public; Owner: -; Tablespace: --- - -CREATE UNIQUE INDEX sessions_session_id_idx ON sessions USING btree (session_id); - - -- -- Name: unique_schema_migrations; Type: INDEX; Schema: public; Owner: -; Tablespace: -- @@ -1989,6 +2047,22 @@ CREATE INDEX ways_changeset_id_idx ON ways USING btree (changeset_id); CREATE INDEX ways_timestamp_idx ON ways USING btree ("timestamp"); +-- +-- Name: changeset_comments_author_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY changeset_comments + ADD CONSTRAINT changeset_comments_author_id_fkey FOREIGN KEY (author_id) REFERENCES users(id); + + +-- +-- Name: changeset_comments_changeset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY changeset_comments + ADD CONSTRAINT changeset_comments_changeset_id_fkey FOREIGN KEY (changeset_id) REFERENCES changesets(id); + + -- -- Name: changeset_tags_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -1997,6 +2071,22 @@ ALTER TABLE ONLY changeset_tags ADD CONSTRAINT changeset_tags_id_fkey FOREIGN KEY (changeset_id) REFERENCES changesets(id); +-- +-- Name: changesets_subscribers_changeset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY changesets_subscribers + ADD CONSTRAINT changesets_subscribers_changeset_id_fkey FOREIGN KEY (changeset_id) REFERENCES changesets(id); + + +-- +-- Name: changesets_subscribers_subscriber_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY changesets_subscribers + ADD CONSTRAINT changesets_subscribers_subscriber_id_fkey FOREIGN KEY (subscriber_id) REFERENCES users(id); + + -- -- Name: changesets_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -2189,6 +2279,14 @@ ALTER TABLE ONLY nodes ADD CONSTRAINT nodes_changeset_id_fkey FOREIGN KEY (changeset_id) REFERENCES changesets(id); +-- +-- Name: nodes_redaction_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY nodes + ADD CONSTRAINT nodes_redaction_id_fkey FOREIGN KEY (redaction_id) REFERENCES redactions(id); + + -- -- Name: note_comments_author_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -2221,6 +2319,14 @@ ALTER TABLE ONLY oauth_tokens ADD CONSTRAINT oauth_tokens_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id); +-- +-- Name: redactions_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY redactions + ADD CONSTRAINT redactions_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id); + + -- -- Name: relation_members_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -2245,6 +2351,14 @@ ALTER TABLE ONLY relations ADD CONSTRAINT relations_changeset_id_fkey FOREIGN KEY (changeset_id) REFERENCES changesets(id); +-- +-- Name: relations_redaction_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY relations + ADD CONSTRAINT relations_redaction_id_fkey FOREIGN KEY (redaction_id) REFERENCES redactions(id); + + -- -- Name: user_blocks_moderator_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -2325,10 +2439,20 @@ ALTER TABLE ONLY ways ADD CONSTRAINT ways_changeset_id_fkey FOREIGN KEY (changeset_id) REFERENCES changesets(id); +-- +-- Name: ways_redaction_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ways + ADD CONSTRAINT ways_redaction_id_fkey FOREIGN KEY (redaction_id) REFERENCES redactions(id); + + -- -- PostgreSQL database dump complete -- +SET search_path TO "$user",public; + INSERT INTO schema_migrations (version) VALUES ('1'); INSERT INTO schema_migrations (version) VALUES ('10'); @@ -2381,8 +2505,42 @@ INSERT INTO schema_migrations (version) VALUES ('20120208122334'); INSERT INTO schema_migrations (version) VALUES ('20120208194454'); +INSERT INTO schema_migrations (version) VALUES ('20120214210114'); + INSERT INTO schema_migrations (version) VALUES ('20120219161649'); +INSERT INTO schema_migrations (version) VALUES ('20120318201948'); + +INSERT INTO schema_migrations (version) VALUES ('20120328090602'); + +INSERT INTO schema_migrations (version) VALUES ('20120404205604'); + +INSERT INTO schema_migrations (version) VALUES ('20120808231205'); + +INSERT INTO schema_migrations (version) VALUES ('20121005195010'); + +INSERT INTO schema_migrations (version) VALUES ('20121012044047'); + +INSERT INTO schema_migrations (version) VALUES ('20121119165817'); + +INSERT INTO schema_migrations (version) VALUES ('20121202155309'); + +INSERT INTO schema_migrations (version) VALUES ('20121203124841'); + +INSERT INTO schema_migrations (version) VALUES ('20130328184137'); + +INSERT INTO schema_migrations (version) VALUES ('20131212124700'); + +INSERT INTO schema_migrations (version) VALUES ('20140115192822'); + +INSERT INTO schema_migrations (version) VALUES ('20140117185510'); + +INSERT INTO schema_migrations (version) VALUES ('20140210003018'); + +INSERT INTO schema_migrations (version) VALUES ('20140507110937'); + +INSERT INTO schema_migrations (version) VALUES ('20140519141742'); + INSERT INTO schema_migrations (version) VALUES ('21'); INSERT INTO schema_migrations (version) VALUES ('22'); @@ -2469,4 +2627,5 @@ INSERT INTO schema_migrations (version) VALUES ('7'); INSERT INTO schema_migrations (version) VALUES ('8'); -INSERT INTO schema_migrations (version) VALUES ('9'); \ No newline at end of file +INSERT INTO schema_migrations (version) VALUES ('9'); +