mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 00:05:29 -04:00 
			
		
		
		
	Remove some gratuituous message differences by making the AM name previously embedded in each message be a %s instead. While at it, get rid of terminology that's unclear and unnecessary in one message. Discussion: https://postgr.es/m/20170523001557.bq2hbq7hxyvyw62q@alvherre.pgsql
		
			
				
	
	
		
			267 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			267 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| --
 | |
| -- Test ISN extension
 | |
| --
 | |
| CREATE EXTENSION isn;
 | |
| -- Check whether any of our opclasses fail amvalidate
 | |
| -- ... they will, because of missing cross-type operators
 | |
| SELECT amname, opcname
 | |
| FROM (SELECT amname, opcname, opc.oid
 | |
|       FROM pg_opclass opc LEFT JOIN pg_am am ON am.oid = opcmethod
 | |
|       WHERE opc.oid >= 16384
 | |
|       ORDER BY 1, 2 OFFSET 0) ss
 | |
| WHERE NOT amvalidate(oid);
 | |
| INFO:  operator family "isn_ops" of access method btree is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method btree is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method btree is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method btree is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method btree is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method btree is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method btree is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method btree is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method hash is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method hash is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method hash is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method hash is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method hash is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method hash is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method hash is missing cross-type operator(s)
 | |
| INFO:  operator family "isn_ops" of access method hash is missing cross-type operator(s)
 | |
|  amname |  opcname   
 | |
| --------+------------
 | |
|  btree  | ean13_ops
 | |
|  btree  | isbn13_ops
 | |
|  btree  | isbn_ops
 | |
|  btree  | ismn13_ops
 | |
|  btree  | ismn_ops
 | |
|  btree  | issn13_ops
 | |
|  btree  | issn_ops
 | |
|  btree  | upc_ops
 | |
|  hash   | ean13_ops
 | |
|  hash   | isbn13_ops
 | |
|  hash   | isbn_ops
 | |
|  hash   | ismn13_ops
 | |
|  hash   | ismn_ops
 | |
|  hash   | issn13_ops
 | |
|  hash   | issn_ops
 | |
|  hash   | upc_ops
 | |
| (16 rows)
 | |
| 
 | |
| --
 | |
| -- test valid conversions
 | |
| --
 | |
| SELECT '9780123456786'::EAN13, -- old book
 | |
|        '9790123456785'::EAN13, -- music
 | |
|        '9791234567896'::EAN13, -- new book
 | |
|        '9771234567898'::EAN13, -- serial
 | |
|        '0123456789012'::EAN13, -- upc
 | |
|        '1234567890128'::EAN13;
 | |
|        ean13       |       ean13       |      ean13      |       ean13       |      ean13      |      ean13      
 | |
| -------------------+-------------------+-----------------+-------------------+-----------------+-----------------
 | |
|  978-0-12-345678-6 | 979-0-1234-5678-5 | 979-123456789-6 | 977-1234-567-89-8 | 012-345678901-2 | 123-456789012-8
 | |
| (1 row)
 | |
| 
 | |
| SELECT '9780123456786'::ISBN,
 | |
|        '123456789X'::ISBN,
 | |
|        '9780123456786'::ISBN13::ISBN,
 | |
|        '9780123456786'::EAN13::ISBN;
 | |
|      isbn      |     isbn      |     isbn      |     isbn      
 | |
| ---------------+---------------+---------------+---------------
 | |
|  0-12-345678-9 | 1-234-56789-X | 0-12-345678-9 | 0-12-345678-9
 | |
| (1 row)
 | |
| 
 | |
| SELECT -- new books, shown as ISBN13 even for ISBN...
 | |
|        '9791234567896'::ISBN,
 | |
|        '9791234567896'::ISBN13::ISBN,
 | |
|        '9791234567896'::EAN13::ISBN;
 | |
|       isbn       |      isbn       |      isbn       
 | |
| -----------------+-----------------+-----------------
 | |
|  979-123456789-6 | 979-123456789-6 | 979-123456789-6
 | |
| (1 row)
 | |
| 
 | |
| SELECT '9780123456786'::ISBN13,
 | |
|        '123456789X'::ISBN13,
 | |
|        '9791234567896'::ISBN13,
 | |
|        '9791234567896'::EAN13::ISBN13;
 | |
|       isbn13       |      isbn13       |     isbn13      |     isbn13      
 | |
| -------------------+-------------------+-----------------+-----------------
 | |
|  978-0-12-345678-6 | 978-1-234-56789-7 | 979-123456789-6 | 979-123456789-6
 | |
| (1 row)
 | |
| 
 | |
| SELECT '9790123456785'::ISMN,
 | |
|        '9790123456785'::EAN13::ISMN,
 | |
|        'M123456785'::ISMN,
 | |
|        'M-1234-5678-5'::ISMN;
 | |
|      ismn      |     ismn      |     ismn      |     ismn      
 | |
| ---------------+---------------+---------------+---------------
 | |
|  M-1234-5678-5 | M-1234-5678-5 | M-1234-5678-5 | M-1234-5678-5
 | |
| (1 row)
 | |
| 
 | |
| SELECT '9790123456785'::ISMN13,
 | |
|        'M123456785'::ISMN13,
 | |
|        'M-1234-5678-5'::ISMN13;
 | |
|       ismn13       |      ismn13       |      ismn13       
 | |
| -------------------+-------------------+-------------------
 | |
|  979-0-1234-5678-5 | 979-0-1234-5678-5 | 979-0-1234-5678-5
 | |
| (1 row)
 | |
| 
 | |
| SELECT '9771234567003'::ISSN,
 | |
|        '12345679'::ISSN;
 | |
|    issn    |   issn    
 | |
| -----------+-----------
 | |
|  1234-5679 | 1234-5679
 | |
| (1 row)
 | |
| 
 | |
| SELECT '9771234567003'::ISSN13,
 | |
|        '12345679'::ISSN13,
 | |
|        '9771234567898'::ISSN13,
 | |
|        '9771234567898'::EAN13::ISSN13;
 | |
|       issn13       |      issn13       |      issn13       |      issn13       
 | |
| -------------------+-------------------+-------------------+-------------------
 | |
|  977-1234-567-00-3 | 977-1234-567-00-3 | 977-1234-567-89-8 | 977-1234-567-89-8
 | |
| (1 row)
 | |
| 
 | |
| SELECT '0123456789012'::UPC,
 | |
|        '0123456789012'::EAN13::UPC;
 | |
|      upc      |     upc      
 | |
| --------------+--------------
 | |
|  123456789012 | 123456789012
 | |
| (1 row)
 | |
| 
 | |
| --
 | |
| -- test invalid checksums
 | |
| --
 | |
| SELECT '1234567890'::ISBN;
 | |
| ERROR:  invalid check digit for ISBN number: "1234567890", should be X
 | |
| LINE 1: SELECT '1234567890'::ISBN;
 | |
|                ^
 | |
| SELECT 'M123456780'::ISMN;
 | |
| ERROR:  invalid check digit for ISMN number: "M123456780", should be 5
 | |
| LINE 1: SELECT 'M123456780'::ISMN;
 | |
|                ^
 | |
| SELECT '12345670'::ISSN;
 | |
| ERROR:  invalid check digit for ISSN number: "12345670", should be 9
 | |
| LINE 1: SELECT '12345670'::ISSN;
 | |
|                ^
 | |
| SELECT '9780123456780'::ISBN;
 | |
| ERROR:  invalid check digit for ISBN number: "9780123456780", should be 6
 | |
| LINE 1: SELECT '9780123456780'::ISBN;
 | |
|                ^
 | |
| SELECT '9791234567890'::ISBN13;
 | |
| ERROR:  invalid check digit for ISBN number: "9791234567890", should be 6
 | |
| LINE 1: SELECT '9791234567890'::ISBN13;
 | |
|                ^
 | |
| SELECT '0123456789010'::UPC;
 | |
| ERROR:  invalid check digit for UPC number: "0123456789010", should be 2
 | |
| LINE 1: SELECT '0123456789010'::UPC;
 | |
|                ^
 | |
| SELECT '1234567890120'::EAN13;
 | |
| ERROR:  invalid check digit for EAN13 number: "1234567890120", should be 8
 | |
| LINE 1: SELECT '1234567890120'::EAN13;
 | |
|                ^
 | |
| --
 | |
| -- test invalid conversions
 | |
| --
 | |
| SELECT '9790123456785'::ISBN; -- not a book
 | |
| ERROR:  cannot cast ISMN to ISBN for number: "9790123456785"
 | |
| LINE 1: SELECT '9790123456785'::ISBN;
 | |
|                ^
 | |
| SELECT '9771234567898'::ISBN; -- not a book
 | |
| ERROR:  cannot cast ISSN to ISBN for number: "9771234567898"
 | |
| LINE 1: SELECT '9771234567898'::ISBN;
 | |
|                ^
 | |
| SELECT '0123456789012'::ISBN; -- not a book
 | |
| ERROR:  cannot cast UPC to ISBN for number: "0123456789012"
 | |
| LINE 1: SELECT '0123456789012'::ISBN;
 | |
|                ^
 | |
| SELECT '9790123456785'::ISBN13; -- not a book
 | |
| ERROR:  cannot cast ISMN to ISBN for number: "9790123456785"
 | |
| LINE 1: SELECT '9790123456785'::ISBN13;
 | |
|                ^
 | |
| SELECT '9771234567898'::ISBN13; -- not a book
 | |
| ERROR:  cannot cast ISSN to ISBN for number: "9771234567898"
 | |
| LINE 1: SELECT '9771234567898'::ISBN13;
 | |
|                ^
 | |
| SELECT '0123456789012'::ISBN13; -- not a book
 | |
| ERROR:  cannot cast UPC to ISBN for number: "0123456789012"
 | |
| LINE 1: SELECT '0123456789012'::ISBN13;
 | |
|                ^
 | |
| SELECT '9780123456786'::ISMN; -- not music
 | |
| ERROR:  cannot cast ISBN to ISMN for number: "9780123456786"
 | |
| LINE 1: SELECT '9780123456786'::ISMN;
 | |
|                ^
 | |
| SELECT '9771234567898'::ISMN; -- not music
 | |
| ERROR:  cannot cast ISSN to ISMN for number: "9771234567898"
 | |
| LINE 1: SELECT '9771234567898'::ISMN;
 | |
|                ^
 | |
| SELECT '9791234567896'::ISMN; -- not music
 | |
| ERROR:  cannot cast ISBN to ISMN for number: "9791234567896"
 | |
| LINE 1: SELECT '9791234567896'::ISMN;
 | |
|                ^
 | |
| SELECT '0123456789012'::ISMN; -- not music
 | |
| ERROR:  cannot cast UPC to ISMN for number: "0123456789012"
 | |
| LINE 1: SELECT '0123456789012'::ISMN;
 | |
|                ^
 | |
| SELECT '9780123456786'::ISSN; -- not serial
 | |
| ERROR:  cannot cast ISBN to ISSN for number: "9780123456786"
 | |
| LINE 1: SELECT '9780123456786'::ISSN;
 | |
|                ^
 | |
| SELECT '9790123456785'::ISSN; -- not serial
 | |
| ERROR:  cannot cast ISMN to ISSN for number: "9790123456785"
 | |
| LINE 1: SELECT '9790123456785'::ISSN;
 | |
|                ^
 | |
| SELECT '9791234567896'::ISSN; -- not serial
 | |
| ERROR:  cannot cast ISBN to ISSN for number: "9791234567896"
 | |
| LINE 1: SELECT '9791234567896'::ISSN;
 | |
|                ^
 | |
| SELECT '0123456789012'::ISSN; -- not serial
 | |
| ERROR:  cannot cast UPC to ISSN for number: "0123456789012"
 | |
| LINE 1: SELECT '0123456789012'::ISSN;
 | |
|                ^
 | |
| SELECT '9780123456786'::UPC; -- not a product
 | |
| ERROR:  cannot cast ISBN to UPC for number: "9780123456786"
 | |
| LINE 1: SELECT '9780123456786'::UPC;
 | |
|                ^
 | |
| SELECT '9771234567898'::UPC; -- not a product
 | |
| ERROR:  cannot cast ISSN to UPC for number: "9771234567898"
 | |
| LINE 1: SELECT '9771234567898'::UPC;
 | |
|                ^
 | |
| SELECT '9790123456785'::UPC; -- not a product
 | |
| ERROR:  cannot cast ISMN to UPC for number: "9790123456785"
 | |
| LINE 1: SELECT '9790123456785'::UPC;
 | |
|                ^
 | |
| SELECT '9791234567896'::UPC; -- not a product
 | |
| ERROR:  cannot cast ISBN to UPC for number: "9791234567896"
 | |
| LINE 1: SELECT '9791234567896'::UPC;
 | |
|                ^
 | |
| SELECT 'postgresql...'::EAN13;
 | |
| ERROR:  invalid input syntax for EAN13 number: "postgresql..."
 | |
| LINE 1: SELECT 'postgresql...'::EAN13;
 | |
|                ^
 | |
| SELECT 'postgresql...'::ISBN;
 | |
| ERROR:  invalid input syntax for ISBN number: "postgresql..."
 | |
| LINE 1: SELECT 'postgresql...'::ISBN;
 | |
|                ^
 | |
| SELECT 9780123456786::EAN13;
 | |
| ERROR:  cannot cast type bigint to ean13
 | |
| LINE 1: SELECT 9780123456786::EAN13;
 | |
|                             ^
 | |
| SELECT 9780123456786::ISBN;
 | |
| ERROR:  cannot cast type bigint to isbn
 | |
| LINE 1: SELECT 9780123456786::ISBN;
 | |
|                             ^
 | |
| --
 | |
| -- test some comparisons, must yield true
 | |
| --
 | |
| SELECT '12345679'::ISSN = '9771234567003'::EAN13 AS "ok",
 | |
|        'M-1234-5678-5'::ISMN = '9790123456785'::EAN13 AS "ok",
 | |
|        '9791234567896'::EAN13 != '123456789X'::ISBN AS "nope";
 | |
|  ok | ok | nope 
 | |
| ----+----+------
 | |
|  t  | t  | t
 | |
| (1 row)
 | |
| 
 | |
| --
 | |
| -- cleanup
 | |
| --
 | |
| DROP EXTENSION isn;
 |