Re: csv format for psql

2018-03-31 Thread Fabien COELHO
Hello Isaac, Personnaly I do not have any problem with CSV defaulting to '|' separator, given that anyway people often use anything but a comma for the purpose, including '|'. However Pavel wants to block the patch on this point. Too bad. OK, mostly trying to avoid commenting because I doubt

Re: [HACKERS] Removing [Merge]Append nodes which contain a single subpath

2018-03-31 Thread David Rowley
On 16 March 2018 at 02:46, Robert Haas wrote: > If we stick with your idea of using AppendPath, do we actually need > generate_proxy_paths()? What paths get lost if we don't have a > special case for them here? Actually, we do a surprisingly good job of allowing plan shapes to stay the same when

Re: [HACKERS][PATCH] adding simple sock check for windows

2018-03-31 Thread Tom Lane
Amit Kapila writes: > oops, I just saw that you have already pushed a fix for it. I am not > sure if we should try to do anything about walrcv_receive's output > still uses pgsocket instead of int as the usage in itself doesn't have > any problem. I see a few places where we're still assigning P

Re: lazy detoasting

2018-03-31 Thread Tom Lane
Chapman Flack writes: > If I copy an out-of-line, on-disk TOAST pointer into a memory context > with transaction lifetime, with an eye to detoasting it later in the > same transaction, are there circumstances where it wouldn't work? Should be safe *as long as you hold onto a snapshot that can see

lazy detoasting

2018-03-31 Thread Chapman Flack
Hi, If I copy an out-of-line, on-disk TOAST pointer into a memory context with transaction lifetime, with an eye to detoasting it later in the same transaction, are there circumstances where it wouldn't work? Thanks, -Chap

Re: [HACKERS] why not parallel seq scan for slow functions

2018-03-31 Thread Amit Kapila
On Fri, Mar 30, 2018 at 1:41 AM, Robert Haas wrote: > On Thu, Mar 29, 2018 at 12:55 AM, Amit Kapila wrote: >> I think that is under acceptable range. I am seeing few regression >> failures with the patch series. The order of targetlist seems to have >> changed for Remote SQL. Kindly find the f

Re: [HACKERS][PATCH] adding simple sock check for windows

2018-03-31 Thread Amit Kapila
On Sun, Apr 1, 2018 at 8:59 AM, Amit Kapila wrote: > On Sat, Mar 31, 2018 at 11:33 PM, Tom Lane wrote: >> ... Oh, just to make things even more fun, PQsocket() returns int, not >> pgsocket; see its header comment. Therefore, that test is correctly >> coded as-is (though it's still useless), and

Re: [HACKERS] A design for amcheck heapam verification

2018-03-31 Thread Peter Geoghegan
On Sat, Mar 31, 2018 at 8:32 PM, Andres Freund wrote: > LGTM, pushed. Closing CF entry. Yay! Only 110 to go. Thanks Andres! -- Peter Geoghegan

Re: [HACKERS] A design for amcheck heapam verification

2018-03-31 Thread Andres Freund
On 2018-03-31 20:25:24 -0700, Peter Geoghegan wrote: > On Sat, Mar 31, 2018 at 8:09 PM, Peter Geoghegan wrote: > > I was thinking of using rint(), which is what you get if you call > > round(float8) from SQL. > > Attached patch does it that way. Note that there are float/int cast > regression tes

Re: [HACKERS][PATCH] adding simple sock check for windows

2018-03-31 Thread Amit Kapila
On Sat, Mar 31, 2018 at 11:33 PM, Tom Lane wrote: > ... Oh, just to make things even more fun, PQsocket() returns int, not > pgsocket; see its header comment. Therefore, that test is correctly > coded as-is (though it's still useless), and the real problem is that > ParallelSlot.sock ought to be

Re: [HACKERS] A design for amcheck heapam verification

2018-03-31 Thread Peter Geoghegan
On Sat, Mar 31, 2018 at 8:09 PM, Peter Geoghegan wrote: > I was thinking of using rint(), which is what you get if you call > round(float8) from SQL. Attached patch does it that way. Note that there are float/int cast regression tests that ensure that rint() behaves consistently on supported plat

Re: [HACKERS] A design for amcheck heapam verification

2018-03-31 Thread Peter Geoghegan
On Sat, Mar 31, 2018 at 8:08 PM, Andres Freund wrote: >> round() is from C99, apparently. I'll investigate a fix. > > Just replacing it with a floor(val + 0.5) ought to do the trick, right? I was thinking of using rint(), which is what you get if you call round(float8) from SQL. -- Peter Geoghe

Re: [HACKERS] A design for amcheck heapam verification

2018-03-31 Thread Andres Freund
On 2018-03-31 19:43:45 -0700, Peter Geoghegan wrote: > On Sat, Mar 31, 2018 at 3:15 PM, Peter Geoghegan wrote: > > On Sat, Mar 31, 2018 at 2:59 PM, Peter Geoghegan wrote: > >> WFM. I have all the information I need to produce the next revision now. > > > > I might as well post this one first. I'l

Re: [HACKERS] A design for amcheck heapam verification

2018-03-31 Thread Peter Geoghegan
On Sat, Mar 31, 2018 at 3:15 PM, Peter Geoghegan wrote: > On Sat, Mar 31, 2018 at 2:59 PM, Peter Geoghegan wrote: >> WFM. I have all the information I need to produce the next revision now. > > I might as well post this one first. I'll have 0002 for you in a short while. Looks like thrips doesn'

Re: WIP: Covering + unique indexes.

2018-03-31 Thread Peter Geoghegan
On Fri, Mar 30, 2018 at 6:24 AM, Alexander Korotkov wrote: >> With an extreme enough case, this could result in a failure to find a >> split point. Or at least, if that isn't true then it's not clear why, >> and I think it needs to be explained. > > > I don't think this could result in a failure t

Re: PostgreSQL's handling of fsync() errors is unsafe and risks data loss at least on XFS

2018-03-31 Thread Michael Paquier
On Sat, Mar 31, 2018 at 12:38:12PM -0400, Tom Lane wrote: > Craig Ringer writes: >> So we should just use the big hammer here. > > And bitch, loudly and publicly, about how broken this kernel behavior is. > If we make enough of a stink maybe it'll get fixed. That won't fix anything released alre

Re: [HACKERS] A design for amcheck heapam verification

2018-03-31 Thread Peter Geoghegan
On Sat, Mar 31, 2018 at 3:15 PM, Peter Geoghegan wrote: >> WFM. I have all the information I need to produce the next revision now. > > I might as well post this one first. I'll have 0002 for you in a short while. Attached is 0002 -- the amcheck enhancement itself. As requested by Andres, this ad

Re: some last patches breaks plan cache

2018-03-31 Thread Tomas Vondra
On 03/31/2018 08:28 PM, Tomas Vondra wrote: > > > On 03/31/2018 07:56 PM, Tomas Vondra wrote: >> On 03/31/2018 07:38 PM, Pavel Stehule wrote: >>> Hi >>> >>> CREATE OR REPLACE PROCEDURE public.proc(a integer, INOUT b integer, c >>> integer) >>>  LANGUAGE plpgsql >>> AS $procedure$ >>> begin >>>

Re: Foreign keys and partitioned tables

2018-03-31 Thread Alvaro Herrera
Peter Eisentraut wrote: > On 3/29/18 23:19, Alvaro Herrera wrote: > > 0003 is the matter of interest. This is essentially the same code I > > posted earlier, rebased to the committed row triggers patch, with a few > > minor bug fixes and some changes in the regression tests to try and make > > the

Re: [HACKERS] A design for amcheck heapam verification

2018-03-31 Thread Peter Geoghegan
On Sat, Mar 31, 2018 at 2:59 PM, Peter Geoghegan wrote: > WFM. I have all the information I need to produce the next revision now. I might as well post this one first. I'll have 0002 for you in a short while. -- Peter Geoghegan v8-0001-Add-Bloom-filter-data-structure-implementation.patch Desc

Re: [HACKERS] A design for amcheck heapam verification

2018-03-31 Thread Peter Geoghegan
On Sat, Mar 31, 2018 at 2:56 PM, Andres Freund wrote: >> So you're asking for something like bt_index_check_heap() + >> bt_index_parent_check_heap()? Or, are you talking about function >> overloading? > > The latter. That addresses my concerns about dropping the function and > causing issues due t

Re: [HACKERS] A design for amcheck heapam verification

2018-03-31 Thread Andres Freund
On 2018-03-31 11:27:14 -0700, Peter Geoghegan wrote: > On Fri, Mar 30, 2018 at 7:04 PM, Andres Freund wrote: > > I'm just saying that there should be two functions here, rather than > > dropping the old definition, and creating s new one with a default argument. > > So you're asking for somethin

Re: [PROPOSAL] Shared Ispell dictionaries

2018-03-31 Thread Arthur Zakirov
Tomas Vondra wrote: > > On 03/31/2018 12:42 PM, Arthur Zakirov wrote: > > Hello all, > > > > I'd like to add new optional function to text search template named fini > > in addition to init() and lexize(). It will be called by > > RemoveTSDictionaryById() and AlterTSDictionary(). dispell_fini() wil

Re: [HACKERS] [PATCH] Incremental sort

2018-03-31 Thread Tomas Vondra
On 03/31/2018 10:43 PM, Tomas Vondra wrote: > ... > But I'm pretty sure it may lead to surprising behavior - for example if > you disable incremental sorts (enable_incrementalsort=off), the plan > will switch to plain sort without the additional costs. So you'll get a > cheaper plan by disabling s

Re: [HACKERS] [PATCH] Incremental sort

2018-03-31 Thread Tomas Vondra
Hi, I've been doing a bit more review of the patch today, focusing on the planner part, and I'm starting to have some doubts regarding the way incremental sort paths are created. I do have some question about the executor and other parts too. I'll mark this as 'waiting on author' to make it clear

Re: some last patches breaks plan cache

2018-03-31 Thread Tomas Vondra
On 03/31/2018 07:56 PM, Tomas Vondra wrote: > On 03/31/2018 07:38 PM, Pavel Stehule wrote: >> Hi >> >> CREATE OR REPLACE PROCEDURE public.proc(a integer, INOUT b integer, c >> integer) >>  LANGUAGE plpgsql >> AS $procedure$ >> begin >>   b := a + c; >> end; >> $procedure$ >> >> CREATE OR REPLACE

Re: [HACKERS] A design for amcheck heapam verification

2018-03-31 Thread Peter Geoghegan
On Fri, Mar 30, 2018 at 7:04 PM, Andres Freund wrote: > I'm just saying that there should be two functions here, rather than dropping > the old definition, and creating s new one with a default argument. So you're asking for something like bt_index_check_heap() + bt_index_parent_check_heap()? Or

Re: [HACKERS][PATCH] adding simple sock check for windows

2018-03-31 Thread Tom Lane
... Oh, just to make things even more fun, PQsocket() returns int, not pgsocket; see its header comment. Therefore, that test is correctly coded as-is (though it's still useless), and the real problem is that ParallelSlot.sock ought to be declared int not pgsocket. If you look around at our other

Re: some last patches breaks plan cache

2018-03-31 Thread Tomas Vondra
On 03/31/2018 07:38 PM, Pavel Stehule wrote: > Hi > > CREATE OR REPLACE PROCEDURE public.proc(a integer, INOUT b integer, c > integer) >  LANGUAGE plpgsql > AS $procedure$ > begin >   b := a + c; > end; > $procedure$ > > CREATE OR REPLACE PROCEDURE public.testproc() >  LANGUAGE plpgsql > AS $proc

some last patches breaks plan cache

2018-03-31 Thread Pavel Stehule
Hi CREATE OR REPLACE PROCEDURE public.proc(a integer, INOUT b integer, c integer) LANGUAGE plpgsql AS $procedure$ begin b := a + c; end; $procedure$ CREATE OR REPLACE PROCEDURE public.testproc() LANGUAGE plpgsql AS $procedure$ declare r int; begin call proc(10, r, 20); end; $procedure$ pos

Re: [HACKERS][PATCH] adding simple sock check for windows

2018-03-31 Thread CharSyam
Hi, Tom, Thank you for your review. so Do you think it is better to remove if statement like below diff --git src/bin/scripts/vacuumdb.c src/bin/scripts/vacuumdb.c index 887fa48fbd..243d842d06 100644 --- src/bin/scripts/vacuumdb.c +++ src/bin/scripts/vacuumdb.c @@ -947,13 +947,6 @@ init_slot(Paral

Re: [HACKERS][PATCH] adding simple sock check for windows

2018-03-31 Thread Tom Lane
CharSyam writes: > [ simple_check.patch ] This is a good catch. However, it looks to me like the reason nobody has noticed a problem here is that actually, this error test is useless; we can never get here with a bad connection, because connectDatabase would have failed. I'm inclined to think w

Re: Foreign keys and partitioned tables

2018-03-31 Thread Peter Eisentraut
On 3/29/18 23:19, Alvaro Herrera wrote: > 0003 is the matter of interest. This is essentially the same code I > posted earlier, rebased to the committed row triggers patch, with a few > minor bug fixes and some changes in the regression tests to try and make > them more comprehensive, including le

Re: Feature Request - DDL deployment with logical replication

2018-03-31 Thread Andres Freund
On 2018-03-31 22:13:42 +0800, Craig Ringer wrote: > We'll still need a mechanism to transport them to downstreams (like WAL > messages) and to send responses upstream. For responses I think we will > finally want to add a backchannel to the logical replication protocol as > I've wanted for a long w

Re: PostgreSQL's handling of fsync() errors is unsafe and risks data loss at least on XFS

2018-03-31 Thread Tom Lane
Craig Ringer writes: > So we should just use the big hammer here. And bitch, loudly and publicly, about how broken this kernel behavior is. If we make enough of a stink maybe it'll get fixed. regards, tom lane

Re: PostgreSQL's handling of fsync() errors is unsafe and risks data loss at least on XFS

2018-03-31 Thread Craig Ringer
On 31 March 2018 at 21:24, Anthony Iliopoulos wrote: > On Fri, Mar 30, 2018 at 10:18:14AM +1300, Thomas Munro wrote: > > > >> Yeah, I see why you want to PANIC. > > > > > > Indeed. Even doing that leaves question marks about all the kernel > > > versions before v4.13, which at this point is prett

Re: [PROPOSAL] Shared Ispell dictionaries

2018-03-31 Thread Tomas Vondra
On 03/31/2018 12:42 PM, Arthur Zakirov wrote: > Hello all, > > I'd like to add new optional function to text search template named fini > in addition to init() and lexize(). It will be called by > RemoveTSDictionaryById() and AlterTSDictionary(). dispell_fini() will > call ts_dict_shmem_release(

Re: [HACKERS] Runtime Partition Pruning

2018-03-31 Thread Alvaro Herrera
David Rowley wrote: > To put the new patch to the test, I tried pgbench -S -M prepared -s > 100 with and without having modified pgbench_accounts to separate into > 10 RANGE partitions of equal size. > > A non-partitioned table was getting 12503 TPS. > With partitioned tables, the old version of

Re: Online enabling of checksums

2018-03-31 Thread Tomas Vondra
On 03/31/2018 05:05 PM, Magnus Hagander wrote: > On Sat, Mar 31, 2018 at 4:21 PM, Tomas Vondra > mailto:tomas.von...@2ndquadrant.com>> wrote: > > ... > > I do think just waiting for all running transactions to complete is > fine, and it's not the first place where we use it - CREATE SUBSC

Re: WIP: a way forward on bootstrap data

2018-03-31 Thread Tom Lane
John Naylor writes: > And in the department of second thoughts, it occurred to me that the > only reason that the .dat files are in include/catalog is because > that's where the DATA() statements were. Since they are separate now, > one could make the case that they actually belong in backend/cata

Re: csv format for psql

2018-03-31 Thread Isaac Morland
On 31 March 2018 at 04:33, Fabien COELHO wrote: > > Bonjour Daniel, > > For csv, Fabien and Peter expressed the opinion that we shouldn't >> create another fieldsep-like variable specifically for it, but instead >> reuse fieldsep. That's what my latest patch does. >> >> Now it turns out that shar

Re: Small proposal to improve out-of-memory messages

2018-03-31 Thread Tom Lane
Alvaro Herrera writes: > Tom Lane wrote: >> In the wake of commit 442accc3f one might think that the message should >> also include the context "identifier" if any. But I'm specifically not >> proposing that, because of the point made in the discussion of that patch >> that some identifier string

Re: Online enabling of checksums

2018-03-31 Thread Magnus Hagander
On Sat, Mar 31, 2018 at 4:21 PM, Tomas Vondra wrote: > > On 03/31/2018 02:02 PM, Magnus Hagander wrote: > > On Sat, Mar 31, 2018 at 2:08 AM, Tomas Vondra > > mailto:tomas.von...@2ndquadrant.com>> > wrote: > > > > > > But wait - there is more ;-) BuildRelationList is using > heap_beginscan > >

Re: Parallel Aggregates for string_agg and array_agg

2018-03-31 Thread David Rowley
On 30 March 2018 at 02:55, Tomas Vondra wrote: > On 03/29/2018 03:09 PM, David Rowley wrote: >> I meant to mention earlier that I coded >> agg_args_have_sendreceive_funcs() to only check for send/receive >> functions. Really we could allow a byval types without send/receive >> functions, since the

Re: Online enabling of checksums

2018-03-31 Thread Tomas Vondra
Hi, On 03/31/2018 02:02 PM, Magnus Hagander wrote: > On Sat, Mar 31, 2018 at 2:08 AM, Tomas Vondra > mailto:tomas.von...@2ndquadrant.com>> wrote: > > ... > > (a) Should not be difficult to do, I think. We don't have relation_open > with a missing_ok flag, but implementing something like t

Re: Feature Request - DDL deployment with logical replication

2018-03-31 Thread Craig Ringer
On 31 March 2018 at 15:53, Nikhil Sontakke wrote: > Hi Jeremy, > > > My whole point is that in most architectures, DBAs decide to deploy the > same > > SQL on providers and subscribers. Yes it isn't perfect, but IMO, it is > very > > helpful to try to automate that idea, as opposed to trying to

Re: Small proposal to improve out-of-memory messages

2018-03-31 Thread Alvaro Herrera
Tom Lane wrote: > In the wake of commit 442accc3f one might think that the message should > also include the context "identifier" if any. But I'm specifically not > proposing that, because of the point made in the discussion of that patch > that some identifier strings might contain security-sens

Re: WIP: a way forward on bootstrap data

2018-03-31 Thread John Naylor
Attached is v13, rebased against b0c90c85fc. Patch 0001: -The data files are formatted to at most 80 columns wide. -Rename rewrite_dat.pl to reformat_dat_file.pl. -Refactor Catalog.pm and reformat_dat_file.pl to have better separation of concerns. -Add src/include/catalog/Makefile with convenience

Re: hot_standby_feedback vs excludeVacuum and snapshots

2018-03-31 Thread Amit Kapila
On Thu, Mar 29, 2018 at 4:47 PM, Greg Stark wrote: > I'm poking around to see debug a vacuuming problem and wondering if > I've found something more serious. > > As far as I can tell the snapshots on HOT standby are built using a > list of running xids that the primary builds and puts in the WAL a

Re: Foreign keys and partitioned tables

2018-03-31 Thread Peter Eisentraut
On 3/29/18 23:19, Alvaro Herrera wrote: > 0001 prohibits having foreign keys pointing to partitioned tables, as > discussed above. This is already prohibited. You get an error ERROR: cannot reference partitioned table "fk_partitioned_pk" Your patch 0001 just adds the same error check a few lin

Re: [HACKERS][PATCH] adding simple sock check for windows

2018-03-31 Thread Amit Kapila
On Sat, Mar 31, 2018 at 6:08 PM, CharSyam wrote: > Thanks Amit. > I had a mistake. Thank you again to point it out :) > Thanks, your new patch looks good. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com

Re: [PATCH] Verify Checksums during Basebackups

2018-03-31 Thread Michael Banck
Hi, On Fri, Mar 30, 2018 at 07:46:02AM -0400, Stephen Frost wrote: > * Magnus Hagander (mag...@hagander.net) wrote: > > On Fri, Mar 30, 2018 at 5:35 AM, David Steele wrote: > > > > > On 3/24/18 10:32 AM, Michael Banck wrote: > > > > Am Freitag, den 23.03.2018, 17:43 +0100 schrieb Michael Banck:

Re: [HACKERS][PATCH] adding simple sock check for windows

2018-03-31 Thread CharSyam
Thanks Amit. I had a mistake. Thank you again to point it out :) 2018-03-31 19:33 GMT+09:00 Amit Kapila : > On Sat, Mar 31, 2018 at 12:05 PM, CharSyam wrote: >> Amit, I agree with you. >> >> I changed my patch :) to remove old check. >> > > - if (slot->sock < 0) > + if (slot->sock == PGINVALID_S

Re: Problem while setting the fpw with SIGHUP

2018-03-31 Thread Amit Kapila
On Wed, Mar 28, 2018 at 12:10 PM, Kyotaro HORIGUCHI wrote: > At Tue, 27 Mar 2018 22:02:26 +0900, Michael Paquier > wrote in <20180327130226.ga1...@paquier.xyz> >> On Tue, Mar 27, 2018 at 09:01:20PM +0900, Kyotaro HORIGUCHI wrote: >> > The current UpdateFullPageWrites is safe on standby and promo

Re: Online enabling of checksums

2018-03-31 Thread Magnus Hagander
On Sat, Mar 31, 2018 at 2:08 AM, Tomas Vondra wrote: > Hi, > > I've been looking at the patch a bit more, and I think there are a > couple of fairly serious issues in the error handling. > Thanks! > > Firstly ChecksumHelperLauncherMain spends quite a bit of effort on > skipping dropped databas

Re: bulk typos

2018-03-31 Thread Félix GERZAGUET
On Sat, Mar 31, 2018 at 12:56 PM, Justin Pryzby wrote: > I needed another distraction so bulk-checked for typos, limited to > comments in > *.[ch]. > I think you introduced another one while changing "explcitly" to "expilcitly" instead of "explicitly" :-) -- Félix

bulk typos

2018-03-31 Thread Justin Pryzby
I needed another distraction so bulk-checked for typos, limited to comments in *.[ch]. I'm not passionate about this, but it serves the purpose of reducing the overhead of fixing them individually. Also I heard something here recently about ugly languages.. time find . -name '*.c' -print0 |xargs

Re: [PROPOSAL] Shared Ispell dictionaries

2018-03-31 Thread Arthur Zakirov
Hello all, I'd like to add new optional function to text search template named fini in addition to init() and lexize(). It will be called by RemoveTSDictionaryById() and AlterTSDictionary(). dispell_fini() will call ts_dict_shmem_release(). It doesn't change segments leaking situation. I think it

Re: [HACKERS][PATCH] adding simple sock check for windows

2018-03-31 Thread Amit Kapila
On Sat, Mar 31, 2018 at 12:05 PM, CharSyam wrote: > Amit, I agree with you. > > I changed my patch :) to remove old check. > - if (slot->sock < 0) + if (slot->sock == PGINVALID_SOCKET || slot->sock < 0) I still see the same check. I think by mistake you have attached old patch. -- With Regards

Re: Planning counters in pg_stat_statements

2018-03-31 Thread legrand legrand
+1 Shouldn't this be added in next CF ? nb: As plan_time is not included into total_time, could it be added to usage (for statement eviction calculation) ? I will try to include plan_time into my proposed version of pgss with planid. http://www.postgresql-archive.org/Poc-pg-stat-statements-with-p

Re: csv format for psql

2018-03-31 Thread Gavin Flower
On 31/03/18 21:33, Fabien COELHO wrote: Bonjour Daniel, For csv, Fabien and Peter expressed the opinion that we shouldn't create another fieldsep-like variable specifically for it, but instead reuse fieldsep. That's what my latest patch does. Now it turns out that sharing fieldsep comes with

Re: csv format for psql

2018-03-31 Thread Fabien COELHO
Bonjour Daniel, For csv, Fabien and Peter expressed the opinion that we shouldn't create another fieldsep-like variable specifically for it, but instead reuse fieldsep. That's what my latest patch does. Now it turns out that sharing fieldsep comes with some problems. Personnaly I do not have

Re: 2018-03 Commitfest Summary (Andres #1)

2018-03-31 Thread Fabien COELHO
Hello Bruce, Has anyone considered moving pgbench out of our git tree and into a separate project where a separate team could maintain and improve it? The movements has been the exact reverse: it was initially in contrib where it had some independence, and has been promoted to the main sourc

Re: Feature Request - DDL deployment with logical replication

2018-03-31 Thread Nikhil Sontakke
Hi Jeremy, > My whole point is that in most architectures, DBAs decide to deploy the same > SQL on providers and subscribers. Yes it isn't perfect, but IMO, it is very > helpful to try to automate that idea, as opposed to trying to actually > replicate DDL at the low level. The latter is better,