So, I forgot I had emails from the list turned off....

Integrity check shows no results.

The query fails from the CLI

The schema (of a very much cut down database) is attached.



And if it does still crash, please provide the database schema to help with debugging.


-----Original Message-----
From: sqlite-users [mailto:sqlite-users-bounces at mailinglists.sqlite.org] On Behalf Of Simon Slavin
Sent: Tuesday, March 05, 2019 3:14 PM
To: SQLite mailing list
Subject: Re: [sqlite] Segmentation fault running a query

On 5 Mar 2019, at 8:06pm, Peter Hardman <peter at somborneshetlands.co.uk> 
wrote:

> If i run the following query from Python 3.7 using the sqlite3 DBAPI adapter or from sqlitebrowser I get a segmentation fault.

Please find the SQLite command-line tool on your computer. If you don't already have one you can download one for your platform in the section "Precompiled Binaries" on

<https://sqlite.org/download.html>

Using that program, please run

PRAGMA integrity_check;

If that reports no problems (should return no results) then please run your SELECT query in that program just to verify that it gets the same result your own code does.
--

Peter Hardman
('CREATE TABLE version (\nmajor_version INTEGER NOT NULL PRIMARY 
KEY,\nminor_version INTEGER NOT NULL,\nparadox_upload TEXT,\nconverted 
TIMESTAMP NOT NULL,\ncreated TIMESTAMP NOT NULL)',)
('CREATE TABLE mem_class (\nclass_name VARCHAR(16) NOT NULL PRIMARY 
KEY,\ndescription VARCHAR(32) NOT NULL UNIQUE,\nbase_subscription INTEGER NOT 
NULL,\ndiscount INTEGER NOT NULL,\nrenewal_period INTEGER NOT 
NULL,\njoining_fee INTEGER NOT NULL,\nvotes INTEGER NOT NULL,\nrenewal_notice 
INTEGER NOT NULL CHECK(renewal_notice in (0, 1)),\nis_active INTEGER NOT NULL 
CHECK(is_active in (0, 1)),\nchange_reason VARCHAR(32) NOT NULL,\nlast_changed 
TIMESTAMP NOT NULL)',)
('CREATE TABLE mem_dates (\nrenewal_date DATE NOT NULL PRIMARY 
KEY,\ndiscount_end_date DATE NOT NULL,\nmembership_ceases DATE NOT 
NULL,\njoiner_rollfwd_date DATE NOT NULL,\nlast_renewal_date DATE NOT 
NULL,\nnext_renewal_date DATE NOT NULL,\nchange_reason VARCHAR(32) NOT 
NULL,\nlast_changed TIMESTAMP NOT NULL)',)
('CREATE TABLE pmt_method (\npmt_method VARCHAR(16) NOT NULL PRIMARY 
KEY,\nmethod_code VARCHAR(8) NOT NULL UNIQUE,\nchange_reason VARCHAR(32) NOT 
NULL,\nlast_changed TIMESTAMP NOT NULL)',)
('CREATE TABLE mem_source (\nsource VARCHAR(32) NOT NULL PRIMARY 
KEY,\nsource_code VARCHAR(8) NOT NULL UNIQUE,\nchange_reason VARCHAR(32) NOT 
NULL,\nlast_changed TIMESTAMP NOT NULL)',)
('CREATE TABLE nonren_reason (\nreason VARCHAR(64) NOT NULL PRIMARY 
KEY,\nreason_code VARCHAR(8) NOT NULL UNIQUE,\nchange_reason VARCHAR(32) NOT 
NULL,\nlast_changed TIMESTAMP NOT NULL)',)
('CREATE TABLE phone_type (\nphone_type VARCHAR(16) NOT NULL PRIMARY 
KEY,\nchange_reason VARCHAR(32) NOT NULL,\nlast_changed TIMESTAMP NOT NULL)',)
('CREATE TABLE role_type (\nrole_type VARCHAR(32) NOT NULL PRIMARY 
KEY,\nrole_code VARCHAR(1) NOT NULL,\nchange_reason VARCHAR(32) NOT 
NULL,\nlast_changed TIMESTAMP NOT NULL)',)
('CREATE TABLE county (\ncounty VARCHAR(32) NOT NULL PRIMARY KEY,\ncounty_code 
VARCHAR(2) NOT NULL UNIQUE,\nchange_reason VARCHAR(32) NOT NULL,\nlast_changed 
TIMESTAMP NOT NULL)',)
('CREATE TABLE adj_county (\nrec_id INTEGER NOT NULL PRIMARY KEY 
AUTOINCREMENT,\ncounty VARCHAR(32) NOT NULL REFERENCES county (county) ON 
UPDATE RESTRICT ON DELETE RESTRICT,\nadj_county VARCHAR(32) NOT NULL REFERENCES 
county (county) ON UPDATE RESTRICT ON DELETE RESTRICT,\nchange_reason 
VARCHAR(32) NOT NULL,\nlast_changed TIMESTAMP NOT NULL,\nCONSTRAINT 
adj_county_key UNIQUE (county, adj_county))',)
('CREATE TABLE sqlite_sequence(name,seq)',)
("CREATE TABLE country (\ncountry VARCHAR(32) NOT NULL PRIMARY 
KEY,\ncountry_code VARCHAR(2) NOT NULL UNIQUE,\ncalling_code VARCHAR(4) NOT 
NULL CHECK(calling_code REGEXP '^[0-9 ]*$'),\nchange_reason VARCHAR(32) NOT 
NULL,\nlast_changed TIMESTAMP NOT NULL)",)
('CREATE TABLE region (\nregion VARCHAR(32) NOT NULL PRIMARY KEY,\nregion_code 
VARCHAR(2) NOT NULL UNIQUE,\nchange_reason VARCHAR(32) NOT NULL,\nlast_changed 
TIMESTAMP NOT NULL)',)
('CREATE TABLE in_region (\nrec_id INTEGER NOT NULL PRIMARY KEY 
AUTOINCREMENT,\nregion VARCHAR(32) NOT NULL REFERENCES region (region) ON 
UPDATE RESTRICT ON DELETE RESTRICT,\ncounty VARCHAR(32) NOT NULL REFERENCES 
county (county) ON UPDATE RESTRICT ON DELETE RESTRICT,\ncountry VARCHAR(32) NOT 
NULL REFERENCES country (country) ON UPDATE RESTRICT ON DELETE 
RESTRICT,\nchange_reason VARCHAR(32) NOT NULL,\nlast_changed TIMESTAMP NOT 
NULL,\nCONSTRAINT in_region_key UNIQUE (region, county, country))',)
('CREATE TABLE post_area (\noutward_code VARCHAR(4) NOT NULL PRIMARY 
KEY,\narea_name VARCHAR(32) NOT NULL UNIQUE,\nlatitude FLOAT NOT 
NULL,\nlongitude FLOAT NOT NULL,\neasting INTEGER NOT NULL,\nnorthing INTEGER 
NOT NULL,\ngrid_ref CHARACTER(8) NOT NULL,\nchange_reason VARCHAR(32) NOT 
NULL,\nlast_changed TIMESTAMP NOT NULL)',)
('CREATE TABLE person (\nperson_id INTEGER NOT NULL PRIMARY KEY,\nactive 
INTEGER NOT NULL CHECK(active in (0, 1)),\ntitle VARCHAR(20) NOT 
NULL,\ninitials VARCHAR(30) NOT NULL,\nforename VARCHAR(40) NOT NULL,\nsurname 
VARCHAR(40) NOT NULL,\ncreated TIMESTAMP NOT NULL,\nchange_reason VARCHAR(32) 
NOT NULL,\nlast_changed TIMESTAMP NOT NULL)',)
('CREATE TABLE member (\nmember_no VARCHAR(6) NOT NULL PRIMARY 
KEY,\nprimary_person_id INTEGER NOT NULL REFERENCES person (person_id) ON 
UPDATE RESTRICT ON DELETE RESTRICT,\naddress_1 VARCHAR(30) NOT NULL,\naddress_2 
VARCHAR(30) NOT NULL,\naddress_3 VARCHAR(30) NOT NULL,\npost_town VARCHAR(24) 
NOT NULL,\ncounty VARCHAR(32) NOT NULL REFERENCES county (county) ON UPDATE 
RESTRICT ON DELETE RESTRICT,\npost_code VARCHAR(16) NOT NULL,\ncountry 
VARCHAR(32) NOT NULL REFERENCES country (country) ON UPDATE RESTRICT ON DELETE 
RESTRICT,\nshare_info CHAR(8) NOT NULL,\njoined DATE NOT NULL,\nnon_renewal 
VARCHAR(64) NOT NULL,\nsource VARCHAR(32) NOT NULL,\nnote VARCHAR(256) NOT 
NULL,\nchange_reason VARCHAR(32) NOT NULL,\nlast_changed TIMESTAMP NOT NULL)',)
('CREATE TABLE mem_pers (\nperson_id INTEGER NOT NULL PRIMARY KEY REFERENCES 
person (person_id) ON UPDATE RESTRICT ON DELETE RESTRICT,\nmember_no VARCHAR(6) 
NOT NULL REFERENCES member (member_no) ON UPDATE RESTRICT ON DELETE 
RESTRICT,\nchange_reason VARCHAR(32) NOT NULL,\nlast_changed TIMESTAMP NOT 
NULL)',)
('CREATE TABLE mem_pmts (\npayment_id INTEGER NOT NULL PRIMARY KEY 
AUTOINCREMENT,\nmember_no VARCHAR(6) NOT NULL REFERENCES member (member_no) ON 
UPDATE RESTRICT ON DELETE RESTRICT,\nclass_name VARCHAR(16) NOT NULL REFERENCES 
mem_class (class_name) ON UPDATE RESTRICT ON DELETE RESTRICT,\nrenewed DATE NOT 
NULL,\nexpires DATE NOT NULL,\npmt_method VARCHAR(16) NOT NULL REFERENCES 
pmt_method (pmt_method) ON UPDATE RESTRICT ON DELETE RESTRICT,\npmt_ref 
VARCHAR(18) NOT NULL,\ngift_aid INTEGER NOT NULL CHECK(gift_aid in (0, 
1)),\nchange_reason VARCHAR(32) NOT NULL,\nlast_changed TIMESTAMP NOT NULL)',)
("CREATE TABLE phone (\nphone_id INTEGER NOT NULL PRIMARY KEY 
AUTOINCREMENT,\nperson_id INTEGER NOT NULL REFERENCES person (person_id) ON 
UPDATE RESTRICT ON DELETE RESTRICT,\ncalling_code VARCHAR(4) NOT NULL 
CHECK(calling_code REGEXP '^[0-9 ]*$'),\nnumber VARCHAR(14) NOT NULL 
CHECK(number REGEXP '^[0-9 ]*$'),\nphone_type VARCHAR(16) NOT NULL REFERENCES 
phone_type (phone_type) ON UPDATE RESTRICT ON DELETE RESTRICT,\ncomment 
VARCHAR(64) NOT NULL,\ndate_assigned TIMESTAMP NOT NULL,\nchange_reason 
VARCHAR(32) NOT NULL,\nlast_changed TIMESTAMP NOT NULL,\nCONSTRAINT 
phone_assigned UNIQUE (person_id, date_assigned))",)
('CREATE TABLE email (\nemail_id INTEGER NOT NULL PRIMARY KEY 
AUTOINCREMENT,\nperson_id INTEGER NOT NULL REFERENCES person (person_id) ON 
UPDATE RESTRICT ON DELETE RESTRICT,\naddress VARCHAR(254) NOT NULL,\ncomment 
VARCHAR(64) NOT NULL,\ndate_assigned TIMESTAMP NOT NULL,\nchange_reason 
VARCHAR(32) NOT NULL,\nlast_changed TIMESTAMP NOT NULL,\nCONSTRAINT 
email_assigned UNIQUE (person_id, date_assigned))',)
('CREATE TABLE roles (\nrec_id INTEGER NOT NULL PRIMARY KEY 
AUTOINCREMENT,\nperson_id INTEGER NOT NULL REFERENCES person (person_id) ON 
UPDATE RESTRICT ON DELETE RESTRICT,\nrole VARCHAR(32) NOT NULL REFERENCES 
role_type (role_type) ON UPDATE RESTRICT ON DELETE RESTRICT,\nexpires 
DATE,\nchange_reason VARCHAR(32) NOT NULL,\nlast_changed TIMESTAMP NOT 
NULL,\nCONSTRAINT roles_key UNIQUE (person_id, role))',)
('CREATE TABLE reps_area (\nrec_id INTEGER NOT NULL PRIMARY KEY 
AUTOINCREMENT,\nperson_id INTEGER NOT NULL REFERENCES person (person_id) ON 
UPDATE RESTRICT ON DELETE RESTRICT,\narea VARCHAR(32) NOT NULL,\nchange_reason 
VARCHAR(32) NOT NULL,\nlast_changed TIMESTAMP NOT NULL,\nCONSTRAINT 
reps_area_key UNIQUE (person_id, area))',)
('CREATE TABLE sel_pers (\nrec_id INTEGER NOT NULL PRIMARY KEY 
AUTOINCREMENT,\nperson_id INTEGER NOT NULL REFERENCES person (person_id) ON 
UPDATE RESTRICT ON DELETE RESTRICT,\nreason VARCHAR(32) NOT 
NULL,\nchange_reason VARCHAR(32) NOT NULL,\nlast_changed TIMESTAMP NOT NULL)',)
('CREATE INDEX mem_pers_mem_no_index ON mem_pers (member_no)',)
('CREATE INDEX mem_pmts_mem_no_index ON mem_pmts (member_no)',)
('CREATE INDEX last_change_index ON mem_pmts (last_changed)',)
('CREATE INDEX email_assigned_index ON email (date_assigned)',)
('CREATE INDEX phone_assigned_index ON phone (date_assigned)',)
('CREATE INDEX sel_pers_index ON sel_pers (person_id)',)
("CREATE VIEW current_member_status AS\n    SELECT latest.payment_id, 
latest.member_no, latest.class_name, latest.renewed, \n    latest.expires, 
latest.pmt_method, latest.pmt_ref, latest.gift_aid, \n    latest.change_reason, 
latest.last_changed\n    FROM mem_pmts latest \n    WHERE NOT EXISTS (SELECT 
'x' FROM mem_pmts even_later\n        WHERE even_later.member_no = 
latest.member_no AND \n                                    
even_later.last_changed > latest.last_changed)",)
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to