Re: [GENERAL] postgres8.3beta encodding problem?

2007-12-20 Thread Tom Lane
Martijn van Oosterhout [EMAIL PROTECTED] writes:
 It does seem to be a bit wierd. For single character encodings anything
 up to 255 is OK, well, sort of. It depends on what you want chr() to do
 (oh no, not this discussion again). If you subscribe to the idea that
 it should use unicode code points then the test is completely bogus,
 since whether or not the character is valid has nothing to with whether
 the encoding is multibyte or not.

Well, the advertised purpose of the chr() changes was to prevent
generation of invalid multibyte sequences, not to cut off
potentially-useful functionality.  So I don't think it should be
preventing people from generating non-ASCII single-byte characters.

The test is clearly backwards, because in an MB encoding it will in fact
let you generate invalid encoding ...

regards, tom lane

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [GENERAL] postgres8.3beta encodding problem?

2007-12-18 Thread Martijn van Oosterhout
On Mon, Dec 17, 2007 at 10:13:54AM -0800, Jeff Davis wrote:
 http://www.postgresql.org/docs/8.3/static/release-8-3.html
 
 Ensure that chr() cannot create invalidly-encoded values (Andrew) 

Ok, but that doesn't apply in this case, his database appears to be
LATIN1 and this character is valid for that encoding...

Have a nice day,
-- 
Martijn van Oosterhout   [EMAIL PROTECTED]   http://svana.org/kleptog/
 Those who make peaceful revolution impossible will make violent revolution 
 inevitable.
  -- John F Kennedy


signature.asc
Description: Digital signature


Re: [GENERAL] postgres8.3beta encodding problem?

2007-12-18 Thread Tom Lane
Martijn van Oosterhout [EMAIL PROTECTED] writes:
 On Mon, Dec 17, 2007 at 10:13:54AM -0800, Jeff Davis wrote:
 http://www.postgresql.org/docs/8.3/static/release-8-3.html

 Ok, but that doesn't apply in this case, his database appears to be
 LATIN1 and this character is valid for that encoding...

You know what, I think the test in the code is backwards.

is_mb = pg_encoding_max_length(encoding)  1;

if ((is_mb  (cvalue  255)) || (!is_mb  (cvalue  127)))
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
 errmsg(requested character too large for encoding: %d,
cvalue)));

Shouldn't we be allowing up-to-255 for single-byte encodings, not
multibyte?

regards, tom lane

---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


Re: [GENERAL] postgres8.3beta encodding problem?

2007-12-18 Thread Martijn van Oosterhout
On Tue, Dec 18, 2007 at 10:35:39AM -0500, Tom Lane wrote:
 Martijn van Oosterhout [EMAIL PROTECTED] writes:
  Ok, but that doesn't apply in this case, his database appears to be
  LATIN1 and this character is valid for that encoding...
 
 You know what, I think the test in the code is backwards.
 
 is_mb = pg_encoding_max_length(encoding)  1;
 
 if ((is_mb  (cvalue  255)) || (!is_mb  (cvalue  127)))

It does seem to be a bit wierd. For single character encodings anything
up to 255 is OK, well, sort of. It depends on what you want chr() to do
(oh no, not this discussion again). If you subscribe to the idea that
it should use unicode code points then the test is completely bogus,
since whether or not the character is valid has nothing to with whether
the encoding is multibyte or not.

If you want the output of th chr() to (logically) depend on the encoding
then the test makes more sense, but ten it's inverted. Single-byte
encodings are by definition defined to 255 characters. And multibyte
encodings (other than UTF-8 I suppose) can only see the ASCII subset.

Have a nice day,
-- 
Martijn van Oosterhout   [EMAIL PROTECTED]   http://svana.org/kleptog/
 Those who make peaceful revolution impossible will make violent revolution 
 inevitable.
  -- John F Kennedy


signature.asc
Description: Digital signature


Re: [GENERAL] postgres8.3beta encodding problem?

2007-12-18 Thread Andrew Dunstan



Martijn van Oosterhout wrote:

On Tue, Dec 18, 2007 at 10:35:39AM -0500, Tom Lane wrote:
  

Martijn van Oosterhout [EMAIL PROTECTED] writes:


Ok, but that doesn't apply in this case, his database appears to be
LATIN1 and this character is valid for that encoding...
  

You know what, I think the test in the code is backwards.

is_mb = pg_encoding_max_length(encoding)  1;

if ((is_mb  (cvalue  255)) || (!is_mb  (cvalue  127)))




Yes.



It does seem to be a bit wierd. For single character encodings anything
up to 255 is OK, well, sort of. It depends on what you want chr() to do
(oh no, not this discussion again). If you subscribe to the idea that
it should use unicode code points then the test is completely bogus,
since whether or not the character is valid has nothing to with whether
the encoding is multibyte or not.
  


We are certainly not going to revisit that discussion at this stage. It 
was thrashed out months ago.

If you want the output of th chr() to (logically) depend on the encoding
then the test makes more sense, but ten it's inverted. Single-byte
encodings are by definition defined to 255 characters. And multibyte
encodings (other than UTF-8 I suppose) can only see the ASCII subset.
  


Right. There is a simple thinko on my part in the line of code Tom 
pointed to, which needs to be fixed.


cheers

andrew



---(end of broadcast)---
TIP 4: Have you searched our list archives?

  http://archives.postgresql.org/


[GENERAL] postgres8.3beta encodding problem?

2007-12-17 Thread marcelo Cortez

Folks


select chr(165);
ERROR:  requested character too large for encoding:
165
 it's one old scrip if not remember wrong works
postgres in 8.2.4
any clue?
best regars 
mdc 

info:
select version().
PostgreSQL 8.3beta3 on i686-pc-linux-gnu, compiled by
GCC gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.0.1)

show all 

add_missing_from;off
allow_system_table_mods;off
archive_command;(disabled)
archive_mode;off
archive_timeout;0
array_nulls;on
authentication_timeout;1min
autovacuum;on
autovacuum_analyze_scale_factor;0.1
autovacuum_analyze_threshold;50
autovacuum_freeze_max_age;2
autovacuum_max_workers;3
autovacuum_naptime;1min
autovacuum_vacuum_cost_delay;20ms
autovacuum_vacuum_cost_limit;-1
autovacuum_vacuum_scale_factor;0.2
autovacuum_vacuum_threshold;50
backslash_quote;safe_encoding
bgwriter_delay;200ms
bgwriter_lru_maxpages;100
bgwriter_lru_multiplier;2
block_size;8192
bonjour_name;
check_function_bodies;on
checkpoint_completion_target;0.5
checkpoint_segments;3
checkpoint_timeout;5min
checkpoint_warning;30s
client_encoding;latin1
client_min_messages;notice
commit_delay;0
commit_siblings;5
config_file;/usr/local/pgsql/data/postgresql.conf
constraint_exclusion;off
cpu_index_tuple_cost;0.005
cpu_operator_cost;0.0025
cpu_tuple_cost;0.01
custom_variable_classes;
data_directory;/usr/local/pgsql/data
DateStyle;ISO, DMY
db_user_namespace;off
deadlock_timeout;1s
debug_assertions;off
debug_pretty_print;off
debug_print_parse;off
debug_print_plan;off
debug_print_rewritten;off
default_statistics_target;10
default_tablespace;
default_text_search_config;pg_catalog.spanish
default_transaction_isolation;read committed
default_transaction_read_only;off
default_with_oids;off
dynamic_library_path;$libdir
effective_cache_size;128MB
enable_bitmapscan;on
enable_hashagg;on
enable_hashjoin;on
enable_indexscan;on
enable_mergejoin;on
enable_nestloop;on
enable_seqscan;on
enable_sort;on
enable_tidscan;on
escape_string_warning;on
explain_pretty_print;on
external_pid_file;
extra_float_digits;0
from_collapse_limit;8
fsync;on
full_page_writes;on
geqo;on
geqo_effort;5
geqo_generations;0
geqo_pool_size;0
geqo_selection_bias;2
geqo_threshold;12
gin_fuzzy_search_limit;0
hba_file;/usr/local/pgsql/data/pg_hba.conf
ident_file;/usr/local/pgsql/data/pg_ident.conf
ignore_system_indexes;off
integer_datetimes;off
join_collapse_limit;8
krb_caseins_users;off
krb_realm;
krb_server_hostname;
krb_server_keyfile;
krb_srvname;postgres
lc_collate;es_AR
lc_ctype;es_AR
lc_messages;es_AR
lc_monetary;es_AR
lc_numeric;es_AR
lc_time;es_AR
listen_addresses;*
local_preload_libraries;
log_autovacuum_min_duration;-1
log_checkpoints;off
log_connections;off
log_destination;stderr
log_directory;pg_log
log_disconnections;off
log_duration;off
log_error_verbosity;default
log_executor_stats;off
log_filename;postgresql-%Y-%m-%d_%H%M%S.log
log_hostname;off
log_line_prefix;
log_lock_waits;off
log_min_duration_statement;-1
log_min_error_statement;error
log_min_messages;notice
log_parser_stats;off
log_planner_stats;off
log_rotation_age;1d
log_rotation_size;10MB
log_statement;all
log_statement_stats;off
log_temp_files;-1
log_timezone;America/Buenos_Aires
log_truncate_on_rotation;off
logging_collector;off
maintenance_work_mem;16MB
max_connections;100
max_files_per_process;1000
max_fsm_pages;153600
max_fsm_relations;1000
max_function_args;100
max_identifier_length;63
max_index_keys;32
max_locks_per_transaction;64
max_prepared_transactions;5
max_stack_depth;2MB
password_encryption;on
port;5432
post_auth_delay;0
pre_auth_delay;0
random_page_cost;4
regex_flavor;advanced
search_path;$user,public
seq_page_cost;1
server_encoding;LATIN1
server_version;8.3beta3
server_version_num;80300
session_replication_role;origin
shared_buffers;24MB
shared_preload_libraries;
silent_mode;off
sql_inheritance;on
ssl;off
standard_conforming_strings;off
statement_timeout;0
superuser_reserved_connections;3
synchronous_commit;on
syslog_facility;LOCAL0
syslog_ident;postgres
tcp_keepalives_count;9
tcp_keepalives_idle;7200
tcp_keepalives_interval;75
temp_buffers;1024
temp_tablespaces;
TimeZone;America/Buenos_Aires
timezone_abbreviations;Default
trace_notify;off
trace_sort;off
track_activities;on
track_counts;on
transaction_isolation;read committed
transaction_read_only;off
transform_null_equals;off
unix_socket_directory;
unix_socket_group;
unix_socket_permissions;511
update_process_title;on
vacuum_cost_delay;0
vacuum_cost_limit;200
vacuum_cost_page_dirty;20
vacuum_cost_page_hit;1
vacuum_cost_page_miss;10
vacuum_freeze_min_age;1
wal_buffers;64kB
wal_sync_method;fdatasync
wal_writer_delay;200ms
work_mem;1MB
xmlbinary;base64
xmloption;content
zero_damaged_pages;off




  Tarjeta de crédito Yahoo! de Banco Supervielle.
Solicitá tu nueva Tarjeta de crédito. De tu PC directo a tu casa. 
www.tuprimeratarjeta.com.ar 

---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


Re: [GENERAL] postgres8.3beta encodding problem?

2007-12-17 Thread Jeff Davis
On Mon, 2007-12-17 at 13:53 -0300, marcelo Cortez wrote:
 select chr(165);
 ERROR:  requested character too large for encoding:
 165
  it's one old scrip if not remember wrong works
 postgres in 8.2.4
 any clue?


http://www.postgresql.org/docs/8.3/static/release-8-3.html

Ensure that chr() cannot create invalidly-encoded values (Andrew) 

In UTF8-encoded databases the argument of chr() is now treated as a
Unicode code point. In other multi-byte encodings chr()'s argument must
designate a 7-bit ASCII character. Zero is no longer accepted. ascii()
has been adjusted to match.

Regards,
Jeff Davis



---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq