Re: \if, \elseif, \else, \endif (was Re: [HACKERS] PSQL commands:\quit_if, \quit_unless)
От | Fabien COELHO |
---|---|
Тема | Re: \if, \elseif, \else, \endif (was Re: [HACKERS] PSQL commands:\quit_if, \quit_unless) |
Дата | |
Msg-id | alpine.DEB.2.20.1702102217390.26448@lancre обсуждение исходный текст |
Ответ на | Re: \if, \elseif, \else, \endif (was Re: [HACKERS] PSQL commands:\quit_if, \quit_unless) (Corey Huinker <corey.huinker@gmail.com>) |
Ответы |
Re: \if, \elseif, \else, \endif (was Re: [HACKERS] PSQL commands:\quit_if, \quit_unless)
Re: [HACKERS] \if, \elseif, \else, \endif (was Re: PSQL commands: \quit_if, \quit_unless) |
Список | pgsql-hackers |
Hello, I'm looking forward to the doc update. My 0.02€ about prompting: >> Given that there is no more barking, then having some prompt indication >> that the code is inside a conditional branch becomes more important, so >> ISTM that there should be some plan to add it. > > Yeah, prompting just got more important. I see a few ways to go about this: > > 1. Add a new prompt type, either %T for true (heh, pun) or %Y for > branching. It would print a string of chained 't' (branch is true), 'f' > (branch is false), 'z' (branch already had its true section). The depth > traversal would have a limit, say 3 levels deep, and if the tree goes more > than that deep, then '...' would be printed in the stead of any deeper > values. So the prompt would change through a session like: > > command prompt is now > ----------- --------------------------------------- > \echo bob '' = initial state, no branch going on at all > \if yes 't' = inside a true branch > \if no 'tf' = false inside a true > \endif 't' = back to just the true branch > \if yes 'tt' > \if yes 'ttt' > \if yes '...ttt' = only show the last 3, but let it be known that > there's at least one more' > \else '...ttz' = past the point of a true bit of this branch I like the "tfz" idea. I'm not sure whether the up to 6 characters is a good, though. > 2. The printing of #1 could be integrated into %R only in PROMPT_READY > cases, either prepended or appended to the !/=/^, possibly separated by a : Hmmm. Logically I would say prepend, but the default prompt is with the dbname, which is mostly letters, so it means adding a separator as well. > 3. Like #2, but prepended/appended in all circumstances I would say yes. > 4. Keep %T (or %Y), and reflect the state of pset.active_branch within %R, > a single t/f/z Yep, but with a separator? > 5. Like #4, but also printing the if-stack depth if > 1 Hmmm, not sure... Based on the your ideas above, I would suggest the following: calvin=> \if true calvin?t=> SELECT 1 + calvin?t-> 2; 3 calvin?t=> \if true calvin?t=> \echo hello hello calvin?t=> \endif calvin?t=> \else calvin?z=> \echo ignored calvin?t=> \endif calvin=> Or maybe use "?.t" for the nested if... -- Fabien
В списке pgsql-hackers по дате отправления: