From: Ted M. <the...@mi...> - 2012-07-31 14:12:47
|
(This is posted here because a similar post received not a single response in the support mailing list!) I have a situation with numerous local databases for different users on Ubuntu. There need to be local connections (no tcp/ip) and delphi connections (over tcp/ip). Version 2.0 works just fine. I can log in as any of the different users and using qli connect to their (well the databases are owned by root) local databases (and no one else's). The same user can connect to their database over tcp/ip from delphi. All the tcp/ip connections are within a very secure LAN, no Internet connection from the outside world. When I tried version 2.1 it created a user firebird and now none of the users can connect locally to their databases. I tried adding each user to the firebird group but that did nothing. I tried several different owners firebird, root, and the user but a local connection could not be made from the user nor firebird. Only sudo to root allowed the local connection. That is a security travesty. Where are the release notes for version 2.1? I need to find out the specific differences in development between version 2.0 and version 2.1. |
From: Philippe M. <pma...@ib...> - 2012-07-31 14:57:19
|
2012/7/31 Ted Miglautsch <the...@mi...>: > > Where are the release notes for version 2.1? here : http://www.firebirdsql.org/en/release-notes/ and please come back to support list for this kind of question and if you are using Ubuntu packages it can be Ubuntu related only, so join an Ubuntu support list an join Ubuntu Maintainers of this package. |
From: JLM <so4...@ho...> - 2012-08-03 07:53:07
|
On 02/08/2012 13:51, Alex Peshkoff wrote: > Probably worth trying with O1& O2? > I understand that client is not (typically) time critical, but we will > need to compile server for that platform. It stops to run from the O1 parameter. J-L M |
From: Alex P. <pes...@ma...> - 2012-08-06 07:32:38
|
On 08/03/12 11:52, JLM wrote: > On 02/08/2012 13:51, Alex Peshkoff wrote: > >> Probably worth trying with O1& O2? >> I understand that client is not (typically) time critical, but we will >> need to compile server for that platform. > It stops to run from the O1 parameter. What a nice compiler! :( Well, will have to work with what we do have. Did you try with non-google gcc builds? |
From: Celal M. <ce...@ma...> - 2012-08-07 07:58:35
|
Help me team Wiever ID 822362083 password 123456 Connect now!!! |
From: arnaud le r. <sdn...@gm...> - 2012-08-22 16:57:59
|
Maybe this post found on necessitas could be usefull to port firebird server to android : ---------- Hello everyone, We've faced some big problems which prevent us to release alpha4 SDK, so, I think we own you some explanations why we delay it that much. First problem we've encountered it was the changes done in QtCreator (by Nokia guys), which delayed the release with more than 2-3 weeks, then we had to wait for ssl certificates for Ministro to arrive, then we've discovered that the official Android NDK had to be rebuilt for all platforms, then, again, we've found problems in QtCreator, then the SDK installer keep me busy for a couple of days, then we've face even more problems with Ministro [1] and now we've found the biggest one, which might break some apps. The problem is the C++ support on Android. The default libstdc++ library is useless, it contains only "new", "delete", "type_info" implementations, so we had to use something else which also comes with stl support, so I choose to use the static gnu libstdc++. Shortly after we release alpha3 I found that is not very wise to use static libstdc++ on more than one library, android-ndk/docs/STANDALONE-TOOLCHAIN.html says that: [quote] The standalone toolchain also comes with a copy of the GNU libstdc++ library, which provides an implementation of the C++ Standard Template Library. To use it, you however need to link with the proper library: * Use -lstdc++ to link against the _static_ library version. This ensures that all required C++ STL code is included into your final binary. This is ideal if you are only generating a single shared library or executable. This is the recommended way to do it. * Use -lgnustl_shared to link against the _shared_ library version. This is required if you have several related shared libraries or executables that need to run in the same address space at runtime (some global variables need to be defined uniquely, which is not possible if you link the static libstdc++ against each one of your executables). [/quote] Now the question is, how to fix this problem without breaking the ABI? The answer it seemed to be easy, theoretically just adding the whole libstdc++ to QtCore should do the job [2], I loved myself for that idea, but ... not for a long time, because hey, in real life nothing is that simple, after we shipped the second testing SDK, Marco post an alarming message [3] on necessitas-devel mailing list. The problem seems to be easy to fix, because I removed the STL library from the mkspecs file, the STL test didn't compile anymore and that it seemed it was the reason for the problems, but again, "la vie en rose" doesn't apply to me, because soon I discover that the --whole-archive [2] flag is not working as it should, basically it doesn't export all the symbols from libstdc++ and you can not use only QtCore to link your STL apps. We (mostly Ray) tried a lot of different paths but all of them ended badly, then Ray reported this issue to Google http://code.google.com/p/android/issues/detail?id=36472, we really hopped that we did something stupid but ... it seems we didn't. Now we must decide what we do next, we see the following solutions: 1 - Release the SDK in a few days, but we must keep it as it is, try to embed the whole libstdc++ library into QtCore, even it is not exported all of it,but it seems it fixes the "static libstdc++" problem described above, but we are not 100% sure. 2 - Delay the release, and fix the bloody linker, make it export everything it should from libstdc++. The "static libstdc++" problem will be 100% fixed (at least theoretically). 3 - Delay the release, switch to shared libstdc++ library, but this move it will break the ABI, because all existing apps will search for stl and c++ symbols into QtCore not in the shared libstdc++. Of course we can not afford to break all existing apps, so we Ministro will need more love to handle multiple ABI versions. 4. Is a combination between first and the seconds solution: we ship the SDK now (1), but we (actually Ray is doing this tremendous job, I'm just the assistant) keep working on (2). Please let us know your opinions on this matter. Any help with (2) will be very appreciated. Cheers, BogDan. ------------ Le 19/07/2012 10:57, J-L M a écrit : > Hello, > > We are trying to compile Firebird 2.1 for Android in order to use the > embedded version in our mobile device of our software. > > But for the moment it seems impossible for some reasons : Android uses > his own Libc called Bionic. And the problem is that there is a lot of > missing features in. There is no implementation of the POSIX IPC or > System V IPC inside, Android drop this to avoid denial-of-service. So, > use of semaphore, shared memory, etc, is not possible. > > We have written a more complet document of this porterage which > describes the problems in detail. > > > Somebody have already attempt to compile or to make an Android version > of Firebird ? > > What would be the good way to do that ? > > Otherwise, how to interest Firebird developpers to make this Android > version ? (Maybe I can create a topic in the tracker ) > > Thanks in advance. > > > > Jean-Louis Meuriot > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > > > > Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel > |
From: arnaud le r. <sdn...@gm...> - 2012-08-22 16:58:42
|
Maybe this post found on necessitas could be usefull to port firebird server to android : ---------- Hello everyone, We've faced some big problems which prevent us to release alpha4 SDK, so, I think we own you some explanations why we delay it that much. First problem we've encountered it was the changes done in QtCreator (by Nokia guys), which delayed the release with more than 2-3 weeks, then we had to wait for ssl certificates for Ministro to arrive, then we've discovered that the official Android NDK had to be rebuilt for all platforms, then, again, we've found problems in QtCreator, then the SDK installer keep me busy for a couple of days, then we've face even more problems with Ministro [1] and now we've found the biggest one, which might break some apps. The problem is the C++ support on Android. The default libstdc++ library is useless, it contains only "new", "delete", "type_info" implementations, so we had to use something else which also comes with stl support, so I choose to use the static gnu libstdc++. Shortly after we release alpha3 I found that is not very wise to use static libstdc++ on more than one library, android-ndk/docs/STANDALONE-TOOLCHAIN.html says that: [quote] The standalone toolchain also comes with a copy of the GNU libstdc++ library, which provides an implementation of the C++ Standard Template Library. To use it, you however need to link with the proper library: * Use -lstdc++ to link against the _static_ library version. This ensures that all required C++ STL code is included into your final binary. This is ideal if you are only generating a single shared library or executable. This is the recommended way to do it. * Use -lgnustl_shared to link against the _shared_ library version. This is required if you have several related shared libraries or executables that need to run in the same address space at runtime (some global variables need to be defined uniquely, which is not possible if you link the static libstdc++ against each one of your executables). [/quote] Now the question is, how to fix this problem without breaking the ABI? The answer it seemed to be easy, theoretically just adding the whole libstdc++ to QtCore should do the job [2], I loved myself for that idea, but ... not for a long time, because hey, in real life nothing is that simple, after we shipped the second testing SDK, Marco post an alarming message [3] on necessitas-devel mailing list. The problem seems to be easy to fix, because I removed the STL library from the mkspecs file, the STL test didn't compile anymore and that it seemed it was the reason for the problems, but again, "la vie en rose" doesn't apply to me, because soon I discover that the --whole-archive [2] flag is not working as it should, basically it doesn't export all the symbols from libstdc++ and you can not use only QtCore to link your STL apps. We (mostly Ray) tried a lot of different paths but all of them ended badly, then Ray reported this issue to Google http://code.google.com/p/android/issues/detail?id=36472, we really hopped that we did something stupid but ... it seems we didn't. Now we must decide what we do next, we see the following solutions: 1 - Release the SDK in a few days, but we must keep it as it is, try to embed the whole libstdc++ library into QtCore, even it is not exported all of it,but it seems it fixes the "static libstdc++" problem described above, but we are not 100% sure. 2 - Delay the release, and fix the bloody linker, make it export everything it should from libstdc++. The "static libstdc++" problem will be 100% fixed (at least theoretically). 3 - Delay the release, switch to shared libstdc++ library, but this move it will break the ABI, because all existing apps will search for stl and c++ symbols into QtCore not in the shared libstdc++. Of course we can not afford to break all existing apps, so we Ministro will need more love to handle multiple ABI versions. 4. Is a combination between first and the seconds solution: we ship the SDK now (1), but we (actually Ray is doing this tremendous job, I'm just the assistant) keep working on (2). Please let us know your opinions on this matter. Any help with (2) will be very appreciated. Cheers, BogDan. ------------ Le 19/07/2012 10:57, J-L M a écrit : > Hello, > > We are trying to compile Firebird 2.1 for Android in order to use the > embedded version in our mobile device of our software. > > But for the moment it seems impossible for some reasons : Android uses > his own Libc called Bionic. And the problem is that there is a lot of > missing features in. There is no implementation of the POSIX IPC or > System V IPC inside, Android drop this to avoid denial-of-service. So, > use of semaphore, shared memory, etc, is not possible. > > We have written a more complet document of this porterage which > describes the problems in detail. > > > Somebody have already attempt to compile or to make an Android version > of Firebird ? > > What would be the good way to do that ? > > Otherwise, how to interest Firebird developpers to make this Android > version ? (Maybe I can create a topic in the tracker ) > > Thanks in advance. > > > > Jean-Louis Meuriot > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > > > > Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel > |
From: marius a. p. <ma...@gm...> - 2012-12-06 08:03:38
|
The generated the c++ code browser for the firebird database. You can find it online here: http://code.woboq.org/firebird/firebird It is created using the Woboq Code Browser generator. It focuses on improving the code navigation with proper semantic |
From: Dmitry Y. <fir...@ya...> - 2012-12-06 08:17:07
|
06.12.2012 12:03, marius adrian popa wrote: > The generated the c++ code browser for the firebird database. > You can find it online here: > http://code.woboq.org/firebird/firebird > > It is created using the Woboq Code Browser generator. > > It focuses on improving the code navigation with proper semantic It would be more useful if it would use less than eight spaces for a tab character ;-) Dmitry |
From: Adriano d. S. F. <adr...@gm...> - 2012-12-06 10:23:46
|
On 06/12/2012 06:16, Dmitry Yemanov wrote: > 06.12.2012 12:03, marius adrian popa wrote: > >> The generated the c++ code browser for the firebird database. >> You can find it online here: >> http://code.woboq.org/firebird/firebird >> >> It is created using the Woboq Code Browser generator. >> >> It focuses on improving the code navigation with proper semantic > It would be more useful if it would use less than eight spaces for a tab > character ;-) > > I see this problem in every code browser. They let the browser's default or convert to a single space. AFAIK there is no CSS property to easily change that. Adriano |
From: Paul B. <pb...@ib...> - 2015-02-18 13:01:42
|
<<and the related question with startup script issue http://stackoverflow.com/questions/28544413/start-firebird-service-under-osx-yosemite>> > I am downloading Yosemite now. Hmm - everything looks fine if you install SuperServer directly, i.e. SuperServer starts without a problem. But on reboot - it doesn't start automatically as it should. Going to /Library/StartupItems/Firebird and running ./Firebird start will start the server assuming that the files needed are there. But I assume if you install Yosemite without reinstalling Firebird then the StartupItems directory does not exist anymore, so a reinstall will be necessary, and manual startup on reboot. A search tells me the following: Startup Items Deprecation Note: Startup items are a deprecated technology. Launching of daemons through this process may be removed or eliminated in a future release of OS X. Which is obviously what has happened. This is followed by "Unless your software requires compatibility with OS X v10.3 or earlier, use the launchd facility instead." Which is currently what Classic does. I am going to have to redo how SuperServer starts, to be compatible with Yosemite (10.10) Regards Paul |
From: levi m. <lev...@gm...> - 2019-07-31 18:42:31
|
How do I find the server name for fleet manager network edition |
From: Mark R. <ma...@la...> - 2019-08-02 16:15:51
|
On 31-7-2019 20:42, levi miller wrote: > How do I find the server name for fleet manager network edition You should ask the support team of the company that wrote Fleet Manager (whatever that is), or possibly the system administrator of your company. Mark -- Mark Rotteveel |
From: Kjell R. <kje...@ma...> - 2019-09-24 14:59:43
Attachments:
kjell_rilbe.vcf
|
Hi, The built-in function ASCII_CHAR(n) seems to only accept integers 0..255 and not have any character set support whatsoever. Are there any plans to add support for character set awareness, presumably under a new function name? For example: char_from_code(n, character_set_name) As a workaround, do string literals include some escape syntax to insert an arbitrary code point, similar to for example in C#? For example: '|\u0066|' = 'f' Or are such escape mechanisms in the plans? Mvh, Kjell |
From: Dimitry S. <sd...@ib...> - 2019-09-24 15:03:25
|
24.09.2019 16:27, Kjell Rilbe wrote: > The built-in function ASCII_CHAR(n) seems to only accept integers 0..255 > and not have any character set support whatsoever. ASCII (which this function has in name) define only 127 symbols. > As a workaround, do string literals include some escape syntax to insert > an arbitrary code point, similar to for example in C#? > For example: > '|\u0066|' = 'f' > > Or are such escape mechanisms in the plans? Yes. Read README.hex_literals.txt in docs. -- WBR, SD. |
From: Kjell R. <kje...@ma...> - 2019-09-25 08:11:13
Attachments:
kjell_rilbe.vcf
|
Den 2019-09-24 kl. 17:03, skrev Dimitry Sibiryakov: > 24.09.2019 16:27, Kjell Rilbe wrote: >> The built-in function ASCII_CHAR(n) seems to only accept integers 0..255 >> and not have any character set support whatsoever. > > ASCII (which this function has in name) define only 127 symbols. Yes, obviously. >> As a workaround, do string literals include some escape syntax to insert >> an arbitrary code point, similar to for example in C#? >> For example: >> '|\u0066|' = 'f' >> >> Or are such escape mechanisms in the plans? > > Yes. Read README.hex_literals.txt in docs. > As far as I can see, that document concerns 1) ability to specify integer values using hex notation, and 2) ability to specify an arbitrary sequence of bytes as a string of character set octets. While the latter would allow you to "manually" encode a unicode character in for example UTF-8, it's not very practical. It would be a lot more useful with an ability to specify the character codepoint inside a string literal, and have that codepoint automatically encoded into the string using that string's character set and encoding. For example, the capital letter Ö with Unicode codepoint U+00D6 would be written as for example '\u00d6' inside an UTF-8 string literal, and encoded as the sequence 0xC3 0xB6. If '\u00d6' were written in an WIN1252 string literal, it would be encoded as a single 0xD6. If it were written inside a ISO8859_7 string literal that code point doesn't exist, and should throw a (transliteration) error. The suggested <binary string literal> could be used to write characters using the literal's encoding directly. E.g. För UTF-8 literal, the character Ö could be written as '\xC3\xB6', and in an WIN1252 literal it could be written as '\xD6'. Since these kinds of escapes would be a breaking change to how string literals are parsed, a solution would have to be found to determine if a specific string literal is to be parsed with these kinds of escapes or not. A prefix than could be combined with any character set prefix? Another approach, that might suffice, would be to add a function that would take the codepoint and a character set and return that codepoint encoded in that character set. For example: UNICODE_CHAR(0xD6 as UTF8) would return a string in UTF8 character set containing bytes 0xC3 0xB6. UNICODE_CHAR(0xD6 as WIN1252) would return a string in WIN1252 character set containing byte 0xD6. UNICODE_CHAR(0xD6 as ISO8859_7) would throw a transliteration error. cast(x'C3B6' as varchar(10) character set UTF8) would return an UTF8 string 'Ö', so the suggested <binary string literal> does solve the case when you want to write the character code sequence for the specific character set that you're using. But it doesn't help if you want to specify the Unicode codepoint. Regards, Kjell |
From: Dimitry S. <sd...@ib...> - 2019-09-25 09:35:39
|
25.09.2019 10:11, Kjell Rilbe wrote: > It would be a > lot more useful with an ability to specify the character codepoint > inside a string literal, and have that codepoint automatically encoded > into the string using that string's character set and encoding. > > For example, the capital letter Ö with Unicode codepoint U+00D6 would be > written as for example '\u00d6' inside an UTF-8 string literal What does prevent you from putting into a literal the letter itself? I see no problem to type "ABC АБВ ÖÜË" and so on from keyboard. -- WBR, SD. |
From: Kjell R. <kje...@ma...> - 2019-09-25 11:24:28
Attachments:
kjell_rilbe.vcf
|
Den 2019-09-25 kl. 11:35, skrev Dimitry Sibiryakov: > 25.09.2019 10:11, Kjell Rilbe wrote: >> It would be a >> lot more useful with an ability to specify the character codepoint >> inside a string literal, and have that codepoint automatically encoded >> into the string using that string's character set and encoding. >> >> For example, the capital letter Ö with Unicode codepoint U+00D6 would be >> written as for example '\u00d6' inside an UTF-8 string literal > > What does prevent you from putting into a literal the letter itself? > I see no problem to type "ABC АБВ ÖÜË" and so on from keyboard. Somewhat strange question. Why does e.g. C# support this? Maybe you should ask MS that? Most Unicode characaters are not available on most keyboards. For example, I have a Swedish keyboard. To enter a "Φ" (U+03A6), I will need to find it in Windows character table app (browse, browse, browse...) or find it on the Internet, like I did this time and copy+paste. And even then you just might stumble upon problems with the connection character set having limitations (unless you're using UTF8, which I always do myself unless using ISQL from command line) or your terminal's or editor's character set limitations. Furthermore, there are loads of non printable characters and characters that are difficult to see in a normal text editor, e.g. U+2000..U+200F. I wouldn't want those to appear in an SQL script. I would much prefer a notation where I can see the codepoint. Wouldn't you? Maybe you don't care about readability in your code? Regards, Kjell |
From: Dimitry S. <sd...@ib...> - 2019-09-25 11:45:50
|
25.09.2019 11:52, Kjell Rilbe wrote: > Most Unicode characaters are not available on most keyboards. For > example, I have a Swedish keyboard. To enter a "Φ" (U+03A6), I will need > to find it in Windows character table app (browse, browse, browse...) or > find it on the Internet, like I did this time and copy+paste. Alt + Numeric keypad works better. -- WBR, SD. |
From: Kjell R. <kje...@ma...> - 2019-09-25 14:54:47
Attachments:
kjell_rilbe.vcf
|
Den 2019-09-25 kl. 13:45, skrev Dimitry Sibiryakov: > 25.09.2019 11:52, Kjell Rilbe wrote: >> Most Unicode characaters are not available on most keyboards. For >> example, I have a Swedish keyboard. To enter a "Φ" (U+03A6), I will need >> to find it in Windows character table app (browse, browse, browse...) or >> find it on the Internet, like I did this time and copy+paste. > > Alt + Numeric keypad works better. Unfortunately not. You can't enter Unicode codepoints that way. And even if it were possible, it wouldn't solve the other issues. Alt+NNN (first N non-zero) will enter char with the typed code from the current DOS codepage, e.g. DOS850. For example, in my case, typing Alt+200 enters '╚'. And NNN is interpreted modulo 256, i.e. Alt+2000 enters ð, whose code is 208 in DOS850. Alt+0NNN will enter char with the typed code from the current Windows codepage, e.g. WIN1252, again modulo256. For example, in my case, typing Alt+02000 enters Ð, whose code is 208 in WIN1252. Regards, Kjell |
From: Mark R. <ma...@la...> - 2019-09-25 16:05:17
|
On 25-9-2019 10:11, Kjell Rilbe wrote: > The suggested <binary string literal> could be used to write characters > using the literal's encoding directly. E.g. För UTF-8 literal, the > character Ö could be written as '\xC3\xB6', and in an WIN1252 literal it > could be written as '\xD6'. > > Since these kinds of escapes would be a breaking change to how string > literals are parsed, a solution would have to be found to determine if a > specific string literal is to be parsed with these kinds of escapes or > not. A prefix than could be combined with any character set prefix? The SQL standard option would be for Firebird to introduce support for the Unicode character string literal U&'...' UESCAPE '<char>' (where the default unicode escape is \ if the UESCAPE clause is absent). With this syntax, your example would be U&'\C3B6'. From 5.3 <literal>: <Unicode character string literal> ::= [ <introducer> <character set specification> ] U <ampersand> <quote> [ <Unicode representation>... ] <quote> [ { <separator> <quote> [ <Unicode representation>... ] <quote> }... ] <Unicode escape specifier> <Unicode representation> ::= <character representation> | <Unicode escape value> Relevant syntax rules: 2) In a <Unicode character string literal>, the sequence: <quote> <Unicode representation>... <quote> <separator> <quote> <Unicode representation>... <quote> is equivalent to the sequence: <quote> <Unicode representation>... <Unicode representation>... <quote> 3) In a <Unicode character string literal>, the introductory 'U' may be represented either in upper case (as 'U') or in lower case (as 'u'). [..] 7) In a <character string literal>, <national character string literal>, <Unicode character string literal>, or <binary string literal>, a <separator> shall contain a <newline>. [..] 10) In a <Unicode character string literal> that specifies “<introducer><character set specification>”, there shall be no <separator> between the <introducer> and the <character set specification>. 11) In a <Unicode character string literal>, there shall be no <separator> between the “U” and the <ampersand> nor between the <ampersand> and the <quote>. 12) The character set of a <Unicode character string literal> that specifies “<introducer><character set specification>” is the character set specified by the <character set specification>. The character set of a <Unicode character string literal> that does not specify “<introducer><character set specification>” is the character set of the SQL-client module that contains the <Unicode character string literal>. 13) A <Unicode character string literal> is equivalent to a <character string literal> in which every <Unicode escape value> has been replaced with the equivalent Unicode character. The set of characters contained in the <Unicode character string literal> shall be wholly contained in the character set of the <Unicode character string literal>. NOTE 139 — The requirement for “wholly contained” applies after the replacement of <Unicode escape value>s with equivalent Unicode characters. (rules 14-19 are also relevant, but apply to all string literals, left out for brevity) From 5.2 <token> and <separator>: <Unicode escape specifier> ::= [ UESCAPE <quote> <Unicode escape character> <quote> ] <Unicode escape value> ::= <Unicode 4 digit escape value> | <Unicode 6 digit escape value> | <Unicode character escape value> <Unicode 4 digit escape value> ::= <Unicode escape character> <hexit> <hexit> <hexit> <hexit> <Unicode 6 digit escape value> ::= <Unicode escape character> <plus sign> <hexit> <hexit> <hexit> <hexit> <hexit> <hexit> <Unicode character escape value> ::= <Unicode escape character> <Unicode escape character> <Unicode escape character> ::= Relevant syntax rules: 16) <Unicode escape character> shall be a single character from the source language character set other than a <hexit>, <plus sign>, <quote>, <double quote>, or <white space>. 17) If the source language character set contains <reverse solidus>, then let DEC be <reverse solidus>; otherwise, let DEC be an implementation-defined character from the source language character set that is not a <hexit>, <plus sign>, <quote>, <double quote>, or <white space>. 18) If a <Unicode escape specifier> does not contain <Unicode escape character>, then “UESCAPE <quote>DEC<quote>” is implicit. 19) In a <Unicode escape value> there shall be no <separator> between the <Unicode escape character> and the first <hexit>, nor between any of the <hexit>s. [..] 21) <Unicode 4 digit escape value> '<Unicode escape character>xyzw' is equivalent to the character at the Unicode code point specified by U+xyzw. 22) <Unicode 6 digit escape value> '<Unicode escape character>+xyzwrs' is equivalent to the character at the Unicode code point specified by U+xyzwrs. NOTE 132 — The 6-hexit notation is derived by taking the UCS-4 notation defined in [ISO10646] and removing the leading two hexits, whose values are always 0 (zero). 23) <Unicode character escape value> is equivalent to a single instance of <Unicode escape character>. -- Mark Rotteveel |
From: Kjell R. <kje...@ma...> - 2019-09-26 05:50:11
Attachments:
kjell_rilbe.vcf
|
Den 2019-09-25 kl. 18:05, skrev Mark Rotteveel: > On 25-9-2019 10:11, Kjell Rilbe wrote: >> The suggested <binary string literal> could be used to write characters >> using the literal's encoding directly. E.g. För UTF-8 literal, the >> character Ö could be written as '\xC3\xB6', and in an WIN1252 literal it >> could be written as '\xD6'. >> >> Since these kinds of escapes would be a breaking change to how string >> literals are parsed, a solution would have to be found to determine if a >> specific string literal is to be parsed with these kinds of escapes or >> not. A prefix than could be combined with any character set prefix? > > The SQL standard option would be for Firebird to introduce support for > the Unicode character string literal U&'...' UESCAPE '<char>' (where > the default unicode escape is \ if the UESCAPE clause is absent). > > With this syntax, your example would be U&'\C3B6'. > > From 5.3 <literal>: > > <Unicode character string literal> ::= > [ <introducer> <character set specification> ] > U <ampersand> <quote> [ <Unicode representation>... ] <quote> > [ { <separator> <quote> [ <Unicode representation>... ] <quote> }... ] > <Unicode escape specifier> > > <Unicode representation> ::= > <character representation> > | <Unicode escape value> > > Relevant syntax rules: > > 2) In a <Unicode character string literal>, the sequence: > <quote> <Unicode representation>... <quote> <separator> <quote> > <Unicode representation>... <quote> > is equivalent to the sequence: > <quote> <Unicode representation>... <Unicode representation>... <quote> > 3) In a <Unicode character string literal>, the introductory 'U' may > be represented either in upper case (as 'U') or in lower case (as 'u'). > [..] > 7) In a <character string literal>, <national character string > literal>, <Unicode character string literal>, or <binary string > literal>, a <separator> shall contain a <newline>. > [..] > 10) In a <Unicode character string literal> that specifies > “<introducer><character set specification>”, there shall be no > <separator> between the <introducer> and the <character set > specification>. > 11) In a <Unicode character string literal>, there shall be no > <separator> between the “U” and the <ampersand> nor between the > <ampersand> and the <quote>. > 12) The character set of a <Unicode character string literal> that > specifies “<introducer><character set specification>” is the character > set specified by the <character set specification>. The character set > of a <Unicode character string literal> that does not specify > “<introducer><character set specification>” is the character set of > the SQL-client module that contains the <Unicode character string > literal>. > 13) A <Unicode character string literal> is equivalent to a <character > string literal> in which every <Unicode escape value> has been > replaced with the equivalent Unicode character. The set of characters > contained > in the <Unicode character string literal> shall be wholly contained in > the character set of the <Unicode character string literal>. > NOTE 139 — The requirement for “wholly contained” applies after the > replacement of <Unicode escape value>s with equivalent Unicode > characters. > (rules 14-19 are also relevant, but apply to all string literals, left > out for brevity) > > From 5.2 <token> and <separator>: > > <Unicode escape specifier> ::= > [ UESCAPE <quote> <Unicode escape character> <quote> ] > > <Unicode escape value> ::= > <Unicode 4 digit escape value> > | <Unicode 6 digit escape value> > | <Unicode character escape value> > > <Unicode 4 digit escape value> ::= > <Unicode escape character> <hexit> <hexit> <hexit> <hexit> > > <Unicode 6 digit escape value> ::= > <Unicode escape character> <plus sign> > <hexit> <hexit> <hexit> <hexit> <hexit> <hexit> > > <Unicode character escape value> ::= > <Unicode escape character> <Unicode escape character> > <Unicode escape character> ::= > > Relevant syntax rules: > > 16) <Unicode escape character> shall be a single character from the > source language character set other than a <hexit>, <plus sign>, > <quote>, <double quote>, or <white space>. > 17) If the source language character set contains <reverse solidus>, > then let DEC be <reverse solidus>; otherwise, let DEC be an > implementation-defined character from the source language character > set that is not a <hexit>, <plus sign>, <quote>, <double quote>, or > <white space>. > 18) If a <Unicode escape specifier> does not contain <Unicode escape > character>, then “UESCAPE <quote>DEC<quote>” is implicit. > 19) In a <Unicode escape value> there shall be no <separator> between > the <Unicode escape character> and the first <hexit>, nor between any > of the <hexit>s. > [..] > 21) <Unicode 4 digit escape value> '<Unicode escape character>xyzw' is > equivalent to the character at the Unicode code point specified by > U+xyzw. > 22) <Unicode 6 digit escape value> '<Unicode escape character>+xyzwrs' > is equivalent to the character at the Unicode code point specified by > U+xyzwrs. > NOTE 132 — The 6-hexit notation is derived by taking the UCS-4 > notation defined in [ISO10646] and removing the leading two hexits, > whose values are always 0 (zero). > 23) <Unicode character escape value> is equivalent to a single > instance of <Unicode escape character>. Nice! Thanks! This has got my vote. Regards, Kjell |